Étape 10 : Programmation votre vêtement | Affichage LED Code complet
/*
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 d’étapes que prend un utilisateur. Le système stocke cette valeur dans une variable et affiche une représentation visuelle basée sur le nombre. Voici le code utilisé. */
#include < SoftwareSerial.h >
ce qui suit met en place les variables et les 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 ;
étapes d’int = 7 ;
ces constantes décrivent les broches utilisées pour l’accéléromètre :
const int XPSous = A3 ; / / axe x de l’accéléromètre
const int ypin = A5 ; axe y
const int zpin = A2 ; / / 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) ;
Définissez le Xbee série à 9600
XBee.Begin(9600) ;
initialiser les broches numériques en tant que sortie :
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() {}
int sensorValue = 0 ;
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 ;
int compteur = 0 ;
lire la valeur de xbee
sensorValue = xbee.read() ;
port série qui imprime ce qui a été lu à confirmer qu'avoir été reçu
Serial.Print("; Valeur de la sonde = ") ;
Serial.Write(sensorValue) ;
broche de lectures pour x, y, z:
int x = analogRead(xpin) ; Delay(1) ;
Ajouter un petit délai 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) ;
Ajouter un petit délai 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 ;
Imprimer des valeurs
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) ; / / allumer le premier affichage LED (HIGH est le niveau de tension)
/ / delay(1000); / / attendre une seconde
//digitalWrite (led, faible); / / arrête le premier affichage LED en rendant la tension basse
/ / delay(1000); / / attendre une seconde
SoftwareSerial.println("A") ;
}
sinon si ((steps > 5) & & (étapes 10 <)) {}
digitalWrite (led2, HIGH) ; / / activer le deuxième écran de LED (HIGH est le niveau de tension)
/ / delay(1000); / / attendre une seconde
/ / digitalWrite (led2, LOW); / / arrête le deuxième écran de LED en rendant la tension basse
/ / delay(1000); / / attendre une seconde
SoftwareSerial.println("B") ;
}
ElseIf (étapes > 10) {}
digitalWrite (DEL3, HIGH) ; / / allumer la troisième affichage LED (HIGH est le niveau de tension)
/ / delay(1000); / / attendre une seconde
//digitalWrite (DEL3, LOW); / / arrête l’affichage LED troisième en rendant la tension basse
/ / delay(1000); / / attendre une seconde
SoftwareSerial.println("C") ;
}
else {}
return 0 ; }
délai avant la prochaine lecture :
Delay(sampleDelay) ;
}