Étape 6: Plus de programmation
Une fois que vous avez les lectures, la dernière partie consiste à décider quelles lectures à utiliser. J’ai choisi d’utiliser la lecture xAvg.Maintenant, c’est juste le processus d’ajout d’une instruction simple « si » et ensuite programmer les lumières. N’oubliez pas d’indiquer les LED en haut à côté les broches de l’accéléromètre. Et aussi soit déclarer leur entrée ou sortie.
Voici le code que j’ai utilisé.
Code adapté de programmation interactivité (p. 234 et 235) par Joshua Noble ***
int flower1 = 5 ; Broches de la LED
int flower2 = 6 ;
int flower3 = 9 ;
int flower4 = 10 ;
Flower 5 int = 11 ;
int XPSous = A3 ; axe x de l’accéléromètre
int ypin = A4 ; axe y
zpin int = A5 ; axe z (uniquement sur les modèles 3 axes)
xVal int = 0 ;
yVal int = 0 ;
zVal int = 0 ;
int xVals [8] ; un tableau du dernier 8 x coordonnées lectures
int yVals [8] ; un tableau des 8 dernières lectures coordonnée y
int zval [8] ; un tableau des 8 dernières lectures coordonnée z
int xAvg = 0 ; la valeur de x, que nous allons lire éventuellement
yAvg int = 0 ;
avgD int = 0 ;
int currentSample = 0 ;
void setup()
{
pinMode (flower1, sortie) ; mettre en place le pinModes afin que la lumière s’allume en marche.
pinMode (flower2, sortie) ;
pinMode (flower3, sortie) ;
pinMode (flower4, sortie) ;
pinMode (Flower 5, sortie) ;
pinMode (xpin, entrée) ;
pinMode (ypin, entrée) ;
pinMode (zpin, entrée) ;
Serial.Begin(9600) ; Initialise la communication avec vos ordinateurs
}
void loop()
{
Nous utilisons des currentSample sous forme d’index dans le tableau et incrémenter à la
fin de la loop)() principale, donc de voir si nous avons besoin de le réinitialiser à la
début de la boucle
Si (currentSample == 8) {}
currentSample = 0 ;
}
xVal = analogRead(xpin) ;
yVal = analogRead(ypin) ;
zVal = analogRead(zpin) ;
Cette option stocke 8 valeurs. Fondamentalement, il stocke
les 8 dernières valeurs lire et il est continuellement en moyenne (plus tard dans le code).
xVals [currentSample] = xVal ;
yVals [currentSample] = yVal ;
Zval [currentSample] = zVal ;
Voici où les valeurs sont ajoutées alors que vous
fini par obtenir les 8 dernières valeurs
pour (int i = 0; i < 8; i ++) {}
xAvg += xVals [i] ;
yAvg += yVals [i] ;
avgD += zval [i] ;
}
Il vont lire les 7 premiers cycles, mais qui ne fera pas une énorme différence
à moins que vous deviez lire la valeur de l’accéléromètre tout de suite
Calculer la moyenne
xAvg = (xAvg / 20) ;
yAvg = (yAvg / 20) ;
avgD = (avgD / 20) ;
Imprimer la moyenne
Serial.Print(xAvg) ;
Serial.Print("") ;
Serial.Print(yAvg) ;
Serial.Print("") ;
Serial.println(zAvg) ;
Delay(100) ;
Si (xAvg < 180) //set if déclaration de réagir selon vos lectures.
{
digitalWrite (flower1, HIGH) ; allume les lumières et puis elles s’éteint à nouveau
Delay(300) ;
digitalWrite (flower2, HIGH) ;
digitalWrite (flower1, basse) ;
Delay(300) ;
digitalWrite (flower3, HIGH) ;
digitalWrite (flower2, basse) ;
Delay(300) ;
digitalWrite (flower4, HIGH) ;
digitalWrite (flower3, basse) ;
Delay(300) ;
digitalWrite (flower4, basse) ;
}
ElseIf (xAvg > 190 & & xAvg < 195)
{
digitalWrite (flower4, HIGH) ;
Delay(500) ;
digitalWrite (flower4, basse) ;
Delay(500) ;
digitalWrite (flower3, HIGH) ;
Delay(500) ;
digitalWrite (flower3, basse) ;
Delay(500) ;
digitalWrite (flower2, HIGH) ;
Delay(500) ;
digitalWrite (flower2, basse) ;
Delay(500) ;
digitalWrite (flower1, HIGH) ;
Delay(500) ;
digitalWrite (flower1, basse) ;
Delay(500) ;
}
ElseIf (xAvg > 195 & & xAvg < 215)
{
digitalWrite (flower1, HIGH) ;
digitalWrite (flower3, HIGH) ;
digitalWrite (flower2, basse) ;
digitalWrite (flower4, basse) ;
Delay(600) ;
digitalWrite (flower1, basse) ;
digitalWrite (flower2, HIGH) ;
digitalWrite (flower3, basse) ;
digitalWrite (flower4, HIGH) ;
Delay(600) ;
}
currentSample ++ ; incrémenter l’échantillon
}