Jeu de Soccer sur table (7 / 9 étapes)

Étape 7: Arduino Code

DÉFINIR
entrée (broches)
#define Capteur1 5 / / capteur sur le gardien à gauche
#define sensor2 0 / / capteur sur la droite du gardien de but
#define Centre 8

#define motor1 10
#define motor2 11

#define distThresh 50

Déclarations de variables globales
int s1Baseline ;
int s1Tolerance ;
const int numRecRead = 10 ;
int recReading [numRecRead] ;
int recReadCur ;

annuler le programme d’installation () {}
Serial.Begin(9600) ;           mettre en place une bibliothèque série à 9600 bps

pinMode (Capteur1, entrée) ;

pinMode (motor1, sortie) ;
pinMode (motor2, sortie) ;

resetRecVal() ;

générateur de nombres aléatoires de semences pour Difficulté
randomSeed(analogRead(0)) ;

Étalonner des capteurs et de définir la ligne de base et les tolérances
int s1Cal [2] ;
calibrateSensor (Capteur1, s1Cal) ;
s1Baseline = s1Cal [0] ;
s1Tolerance = s1Cal [1] ;

}

void loop() {}
int s1Val, s1ValAvg ;
double s1Dist ;
Serial.println(digitalRead(Center)) ;
Obtenir des valeurs de capteur
s1Val = checkSensor (Capteur1, s1Baseline, s1Tolerance) ;
s1ValAvg = averageReading(s1Val) ;
Serial.println(s1Val) ;
Si (s1ValAvg > distThresh) {}
s1Dist = sensorToDistance(s1Val) ;

Si moveGoalie(5) (s1Dist < 14) ;  déplacer vers la droite
ElseIf (s1Dist > 18 & & s1Dist < 32) moveGoalie(-5) ;  déplacer à gauche

resetRecVal() ;
}
}

Retourne la valeur de la sonde s’il y avait une lecture (c'est-à-dire le ballon passé devant)
ou 0.0 si aucune lecture a été effectuée (c'est-à-dire le ballon ne pas passer par)
sensorPin - la broche du capteur à vérifier
base - que capteurs « pas de lecture » valeur
tolérance - le seuil de référence qui doit être considéré comme une lecture
(c'est-à-dire si la valeur se trouve dans (ligne de base +/-seuil ne signalent pas
une lecture)
int checkSensor (int sensorPin, double base, double tolérance) {}
double sVal = analogRead(sensorPin) ;  Valeur déclarée par le capteur
Si (abs (base - sVal) < tolérance) / / si la lecture est dans la tolérance
return 0 ;                          ne retourner à « aucun lecture »
retour sVal ;                          Sinon, retourner la valeur
}

Retourne la distance correspondant à la lecture de la sonde
sensorVal - valeur lue par la sonde
double sensorToDistance (int sensorVal) {}
double échelle = 2050 ;
l’expon double = 1.0/0,85 ;
double dist = pow((scale/sensorVal), l’expon) ;

Si dist (dist > 35) = 35 ; dist //normalize

retour dist ;
}

Calibrer le capteur (exécuté dans le programme d’installation)
Prend des points d’étalonnage de la sonde pour trouver la valeur moyenne
et le bruit dans les lectures du capteur
sensorPin - broche du capteur à étalonner
calData - int [] pour les valeurs doivent être stockées dans
void calibrateSensor (int sensorPin, int calData[]) {}
int numReadings = 300 ;  prendre de 300 points de calibrage
données int [numReadings] ;  utilisé pour stocker les points de calibrage
int i ;
minVal int = 10000 ;  initialiser la valeur minimale élevée
maxVal int = -1 ;  initialiser la valeur maximale basse

pour (i = 0; i < numReadings; ++ j’ai) {
int t = analogRead(sensorPin) ;  lire les données de l’échantillon
données [i] = t ; remplir le tableau de données

Min record et lectures de capteurs max
Si (t < minVal) //if t est inférieure à minVal actuel
minVal = t ;  remplacer le minVal
Si (t > maxVal) //if t est supérieur à maxVal
maxVal = t ; remplacer le maxVal
}

Trouver la propagation des données
int propagation = maxVal - minVal ;

Trouver la moyenne de l’échantillon de données
double moyenne = 0 ;
pour (i = 0; i < numReadings; ++ j’ai)
donnée de += [i] ;
moyenne / ou = numReadings ;

calculer des écarts-type
stddev double = 0 ;
pour (i = 0; i < numReadings; ++ j’ai)
StdDev += pow ((données [i] - moyenne), 2) ;
StdDev / = numReadings ;
StdDev = sqrt(stddev) ;

retour [moyenne, propagation]
calData [0] = moyenne ;
calData [1] = stddev * 2 ;
retour ;

}

0-stop
10 - rapide
< 0 gauche
> droit 0
void moveGoalie (int dir) {}
int mag = map(abs(dir), 10, 0, 0, 255) ;
int retMag = carte (abs ((dir + 4)/4.0), 4, 14, 100, 255) ; retour plus lentement

Si (dir > 0) {}
analogWrite (motor1, mag) ;
analogWrite (motor2, 0) ;
Delay(100) ;
analogWrite (motor1, 0) ;
analogWrite (motor2, 0) ;
Delay(1000) ;
analogWrite (motor1, 0) ;
analogWrite (motor2, retMag) ;
Delay(200) ;
}
ElseIf (dir < 0) {}
analogWrite (motor1, 0) ;
analogWrite (motor2, mag) ;
Delay(300) ;
analogWrite (motor1, 0) ;
analogWrite (motor2, 0) ;
Delay(1000) ;
analogWrite (motor1, retMag) ;
analogWrite (motor2, 0) ;
Delay(300) ;
}

arrêt de gardien de but
analogWrite (motor1, 0) ;
analogWrite (motor2, 0) ;
}

int averageReading (int newVal) {}
% recReadCur = (numRecRead - 1) ;

recReading [recReadCur ++] = newVal ;

int somme = 0 ;
valide int = 0 ;
pour (int i = 0; i < numRecRead; ++ j’ai) {
Si (recReading [i] > 0) ++ valide ;
somme recReading += [i] ;
}

Si (valide < 7) return 0 ;

retour (somme/valide) ;
}

void resetRecVal () {}
pour (int i = 0; j’ai < numRecRead; ++ j’ai) //initialize recRead
recReading [i] = 0 ;
recReadCur = 0 ;
}

Articles Liés

Brique de pont pour votre crèche de Noël ou le jeu sur table

Brique de pont pour votre crèche de Noël ou le jeu sur table

ma copine aime faire des scènes de la Nativité grand et complexe à la maison, et cette année elle m'a demandé d'établir un pont pour un ruisseau. Me voici donc avec une instructable juste pour cela.J'ai voulu faire un pont qui avait l'air approximati
But sur table avec Strawbees

But sur table avec Strawbees

Vous avez votre nouveau pack de Strawbees avec vous ? Vous cherchez un jeu sur table rapide à installer et jouer ? Eh bien ne cherchez plus. Cette volonté instructable aide vous mis en place un objectif qui peut être utilisé pour le hockey sur table,
Boîte de Mame Arcade sur table pour framboise Pi

Boîte de Mame Arcade sur table pour framboise Pi

Salut!Bienvenue à la génération d'un émulateur d'Arcade sur table de 2 joueurs ! La boîte est construite de découpés au laser 6mm bouleau Baltique, et mis à part les parties en bois, vous aurez besoin.A Raspberry Pi - j'ai utilisé un B +, mais convie
Tissage sur table

Tissage sur table

tissage très très facilement sur tablevous pouvez tisser jusqu'à 30cm de largeurpeut être longtemps armure ! (12.12 upload!!)Étape 1: Step1:cut préparer le MDF (450 × 600 × 4 mm), vis (3Φ) × 16couper le MDF de machine de coupe laserEtape 2: Eléments
Studio Photo sur table rapide & facile

Studio Photo sur table rapide & facile

Que ce soit pour documenter vos objets de collection, pour l'amateur de photo, pour Esty, Ebay, Instructables ou un autre projet qui nécessite des photos décentes à mi-chemin des petits riens (ou grand - ce projet évolue vers le haut ou vers le bas),
Fontaine d’eau sur table

Fontaine d’eau sur table

Bonjour. Dans ce instructable nous allons créer une mini fontaine sur table. Cette fontaine a été très simple et m'a pris environ 30 minutes pour construire. Let's get started ! Ce projet sera entré dans le concours de laboratoires de forme et ce que
Bobine de Tesla sur table

Bobine de Tesla sur table

Transformateur à noyau de Nikola célèbre air--aka la bobine de Tesla--a été développé dans les années 1890 comme une source de haute tension, électricité haute fréquence. En ce temps-là, c'était un élément précieux dans le domaine émergent de la télé
Rondelle de pression sur table (4 Da pauvre)

Rondelle de pression sur table (4 Da pauvre)

par demande populaire (comme trois personnes). Ive fait maintenant la rondelle du dessus de table (4 The Poor Man) dans un nettoyeur à haute pression !C'est vraiment facile d'ajouter à la machine à laver sur table, alors mal mis tout sur une seule ét
Comment faire un jeu Rpg sur table

Comment faire un jeu Rpg sur table

Bonjour, je suis nouveau sur Instructables et souhaitez faire partager à vous ce qu'on appelle un jeu de plateau de dessus de table Rpg un dessus de table rpg est fondamentalement un rôle jeu où vous prétendez vous êtes quelque chose et faire des cho
K ' NEX Foos hockey sur Table

K ' NEX Foos hockey sur Table

table de Hockey de Foos le k ' NEX est un souffle à construire et à utiliser. Il est suffisamment résistant pour être utilisé comme n'importe quelle table de jeu régulière, plus il y a beaucoup de plaisir !Il s'agit d'un modèle à construire uniquemen
Patinoire de Hockey sur table

Patinoire de Hockey sur table

Les patinoires de hockey NHL sont 200 pieds de longs, 85 pieds de larges et ont 11 pieds entre les planches de fin et la ligne de but, mais c'est beaucoup trop grand pour une salle de classe. Nous devons quelque chose d'un peu plus petit, donc nous a
Tapez sur Table

Tapez sur Table

Il s'agit de ma première exploration en composantes de meubles imprimés 3d. L'objectif est d'aboutir à un système de simples morceaux de bois et des connecteurs 3D qui peuvent être facilement assemblés pour faire une variété de types de meubles.Étape
Manette de jeu-synthé basé sur l’Atari Punk Console

Manette de jeu-synthé basé sur l’Atari Punk Console

d'abord, ce qui est un Atari Punk Console ? Eh bien en un mot, c'est un simple bruit faisant circuit avec deux boutons, un pour la fréquence d'impulsions d'ondes carrées et un pour la longueur des impulsions. Quand on tourne le bouton il bruits rad v
Altoids poche poitrine jeu - 11 matchs sur la route

Altoids poche poitrine jeu - 11 matchs sur la route

jeux de société sont grands.  Si vous êtes assis à un intense jeu de Go, ou un simple jeu de TIC-TAC-TOE, jeux de société sont une bonne façon de passer le temps avec les amis et la famille.  J'aime les jeux de société, alors j'ai voulu une jeu poitr