Etape 5: programmation
Maintenant, voici la partie la plus délicate. Afin de vraiment obtenir des lectures d’accéléromètre précis que vous devez porter la jupe ou utilisez votre projet dans la façon dont il a destiné à être utilisé. Dans le cas contraire, vous obtenez lectures absolument inutiles. J’ai utilisé la plateforme de programmation Arduino. Pour mettre sur la jupe, brancher à l’ordinateur et caracoler autour de votre sous-sol transporter votre ordinateur portable pendant une minute ou deux.Afin d’obtenir des lectures, vous devez avoir téléchargé le code sur le Lilypad et ensuite allumé le serial monitor (la loupe en haut à droite).
Voici le code que j’ai utilisé. Il est en moyenne les lectures de l’accéléromètre pour le rendre plus stable.
Code adapté de programmation interactivité (p. 234 et 235) par Joshua Noble ***
led1 int = 5 ;
led2 int = 6 ;
led3 int = 9 ;
led4 int = 10 ;
DEL5 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 (led1, sortie) ;
pinMode (led2, sortie) ;
pinMode (DEL3, sortie) ;
pinMode (led4, sortie) ;
pinMode (DEL5, sortie) ;
pinMode (xpin, entrée) ;
pinMode (ypin, entrée) ;
pinMode (zpin, entrée) ;
Serial.Begin(9600) ;
}
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) ;
currentSample ++ ; incrémenter l’échantillon
Si (xAvg > 570 & & xAvg < 590)
{
digitalWrite (led1, HIGH) ;
Delay(100) ;
digitalWrite (led1, faible) ;
Delay(100) ;
digitalWrite (led2, HIGH) ;
Delay(100) ;
digitalWrite (led2, faible) ;
Delay(100) ;
digitalWrite (DEL3, HIGH) ;
Delay(100) ;
digitalWrite (DEL3, faible) ;
}
}