Étape 9: Programmation votre vêtement | Code complet de l’accéléromètre
Voici le code complet de l’Arduino pour l’accéléromètre :
/*
Travailler!
Voici l’exemple de code utilisé pour créer un système portable qui utilise un accéléromètre pour compter le nombre de
les mesures un utilisateur prend. Le système stocke cette valeur dans une variable et affiche une représentation visuelle basée sur le
nombre.
Voici le code utilisé. */
ce qui suit met en place les variables et pins utilisés dans le code
ce qui suit décrit les broches utilisés pour les touches de lumière
int mené = 5 ;
led2 int = 9 ;
led3 int = 11 ;
/ / int étapes = 7;
ces constantes décrivent les broches utilisées pour l’accéléromètre :
const int XPSous = A5 ; / / axe x de l’accéléromètre
const int ypin = A2 ; / / axe y
const int zpin = A3 ; / / z-AXIS (uniquement sur les modèles 3 axes)
nombre de millisecondes entre lectures
int sampleDelay = 500 ;
/ / la variable globale « étapes » décrit la variable utilisée pour déterminer la sortie des lumières :
étapes d’int = 0 ;
SoftwareSerial xbee(5,6) ;
le programme d’installation « commence » tout :
void setup() {}
initialiser la communication série :
Serial.Begin(9600) ;
/ / set le Xbee série à 9600
XBee.Begin(9600) ;
/ / initialiser les broches numériques en tant que sortie et les axes de l’accéléromètre comme entrées :
pinMode (led, sortie) ;
pinMode (led2, sortie) ;
pinMode (DEL3, sortie) ;
pinMode (xpin, entrée) ;
pinMode (ypin, entrée) ;
pinMode (zpin, entrée) ;
}
la routine de la boucle s’exécute maintes et maintes fois pour toujours :
void loop() {}
code d’accéléromètre utilisé pour déterminer la variable « steps »
les variables de flot suivantes sont utilisées pour aider à déterminer le seuil pour les « étapes » :
flotteur oldy = 0 ;
seuil de flotteur = 0 ;
//read la valeur de xbee
sensorValue = xbee.read() ;
port de //serial qui imprime ce qui a été lu à confirmer qu'avoir été reçu
Serial.Print("; Valeur de la sonde = ") ;
Serial.Write(senorValue) ;
/ / pin lectures pour x, y, z:
int x = analogRead(xpin) ;
Delay(1) ; //add un léger décalage entre la lecture de code pin. J’ai lu que vous devriez faire ceci mais n’ont pas testé l’importance
int y = analogRead(ypin) ;
Delay(1) ; //add un léger décalage entre la lecture de code pin. J’ai lu que vous devriez faire ceci mais n’ont pas testé l’importance
int z = analogRead(zpin) ;
/ * zero_G est la lecture que nous attendons du capteur lorsqu’il ne détecte aucun accélération. Soustraire cette valeur du capteur lire pour obtenir un capteur décalé de lecture. */
float zero_G = 512 ;
/ * échelle est le nombre d’unités que nous attendons la lecture de la sonde à changer lorsque l’accélération le long d’un axe change en 1G. Diviser le capteur décalé, lecture de l’échelle pour obtenir l’accélération en Gs. * /
float scale = 102,3 ;
pour ce projet, nous n’imprimons pas les valeurs de « x », mais si vous voulez l’imprimer :
Serial.Print (((float) x - zero_G) / échelle) ;
Serial.Print("\t") ;
pour ce projet, nous imprimons les valeurs « y », cela aidera à déterminer le seuil :
seuil = oldy - ((float) y - zero_G) / échelle ;
Serial.Print ("y =") ;
Serial.Print (((float) y - zero_G) / échelle) ;
Serial.Print("; seuil = ") ;
Serial.println(THRESHOLD) ;
pour ce projet, nous n’imprimons pas les valeurs de « z », mais si vous voulez l’imprimer :
Serial.Print("\t") ;
Serial.Print (((float) z - zero_G) / échelle) ; Serial.Print("\n") ;
Si (seuil > 1.3)
mesures ++ ;
Serial.Print (« étapes = ") ;
Serial.Print(Steps) ;
code utilisé pour déterminer le jeu de lumières à la sortie :
Si (étapes < = 5) {}
digitalWrite (conduit, en haut) ; Allumez le premier affichage LED (HIGH est le niveau de tension)
/ / delay(1000); / / attendre une seconde
digitalWrite (led, faible) ; Éteignez le premier affichage LED en rendant la tension basse
Delay(1000) ; Attendez une seconde
SoftwareSerial.println("A") ;
}
sinon si ((steps > 5) & & (étapes 10 <)) {}
digitalWrite (led2, HIGH) ; Tournez le deuxième LED affichage sur (le haut est le niveau de tension)
/ / delay(1000); / / attendre une seconde
digitalWrite (led2, faible) ; désactiver le deuxième écran de LED en rendant la tension basse
Delay(1000) ; Attendez une seconde
SoftwareSerial.println("B") ;
}
ElseIf (étapes > 10) {}
digitalWrite (DEL3, HIGH) ; tourner le troisième LED display sur (le haut est le niveau de tension)
/ / delay(1000); / / attendre une seconde
digitalWrite (DEL3, faible) ; désactiver l’affichage LED troisième en rendant la tension basse
Delay(1000) ; Attendez une seconde
SoftwareSerial.println("C") ;
}
else {}
return 0 ;
}
/ / retard avant la lecture suivante :
Delay(sampleDelay) ;
}