Étape 4: Code d’Arduino
C’est le code de l’Arduino pour un collègue proximité Scan par Sander van Haperen
Elle a été mise à jour dernière en août 2014. Il est basé sur un code pour le projet flux RSS Arduino, by beignet
int startstring = 0 ; reconnaissance du début de la nouvelle chaîne int charcount = 0 ; conserve la trace des caractères totales sur écran
const int ledPin = 6 ; le code pin que le LED est fixée à int incomingByte ; une variable de lire des données série entrantes dans
#include string readString, incPinInit, incPin1, incPin2, incPin3, incPin4, incPin5, incPin6 ;
Servo myservo ; Créez l’objet servo pour contrôler un servo / / peut être créé à un maximum de huit objets de servo
#include / / import de la lcd innovente bibliothèque innovente (12, 11, 5, 4, 3, 2) ;
void setup() {Serial.begin(9600); / / ouvre le port série, établit le taux de données à 9600 bps lcd.begin(16,2); / / Initialise la taille de l’écran LCD 16 x 2. Changer si vous utilisez un lcd.setCursor(0,0) LCD plus grand ; Définir la position du curseur à l’angle supérieur gauche
myservo.Attach(6) ; attache le servo sur la broche 9 à l’objet de servo pour (int thisPin = 2; thisPin < 13 ; thisPin ++) {//init pins 2 à 6 comme sortie pinMode (thisPin, sortie);}}
void loop() {char c = 0; / / pour les données série entrantes tout en (Serial.available()) {delay(5) ; //delay pour laisser tampon remplir
Si (Serial.available() > 0) {}
char c = Serial.read() ; Obtient un octet de mémoire tampon série readString += c ; rend la chaîne readString}
Serial.println(ReadString) ;
Si (readString.length() > 0) {}
digitalWrite (13, HIGH) ; goupille de LED 13 la valeur comme indicateur de la réception de données série / / s’attendre à une chaîne comme 07002100 contenant l’incPinInit États de pin = readString.substring (0, 1) ; obtenir le premier caractère pour vérifier les symboles de l’init
Serial.println(ReadString) ; Voir ce qui a été reçu si (incPinInit == "*") {//check pour marqueur / « tête » qui signifie ping affirme incPin1 = readString.substring (2, 3); //get le prochain incPin2 de caractère = readString.substring (4, 5); //get le prochain incPin3 de caractère = readString.substring (6, 7); //get le prochain incPin4 de caractère = readString.substring (8, 9); //get le prochain incPin5 de caractère = readString.substring (10, 11); //get le prochain incPin6 de caractère = readString.substring (12, 13); //get le caractère suivant
int n1 = incPin1.toInt() ; int n2 = incPin2.toInt() ; int n3 = incPin3.toInt() ; int n4 = incPin4.toInt() ; n5 int = incPin5.toInt() ; n6 int = incPin6.toInt() ; pour (int thisPin = 2; thisPin < 13 ; thisPin ++) {État par défaut //reset pour tous les pins faible digitalWrite (thisPin, LOW);}
Maintenant vérifiez tous les 6 États de broche et écrire haute si l’état de ping est positif si (n1 == 1) {digitalWrite (10, HIGH);} si (n2 == 1) {digitalWrite (9, HIGH);} si (n3 == 1) {digitalWrite (8, HIGH);} si (n4 == 1) {digitalWrite (7, HIGH);} si (n5 == 1) {digitalWrite (5, HIGH);} si (n6 == 1) {digitalWrite (1 secondaire);}
} Si (incPinInit == "~") {//check pour marqueur / « tête » qui signifie ping affirme startstring = 0; / / définir l’impression OFF delay(5000); / / attendre 5 secondes lcd.clear(); / / essuyer l’écran charcount = 0; / / réinitialiser le nombre de caractères à lcd.setCursor(0,0) 0; / / réinitialiser le curseur à 0,0 si (startstring == 1) {/ / vérifier si la chaîne a commencé si première ' ~' a été lue si (charcount < = 30) {/ / vérifier si charcount est dessous ou égal à 30 lcd.print(incomingByte); / / Print l’octet courant dans la série Serial.print(incomingByte) ; charcount = charCount ++ ; Incrémentez le charcount 1 Oui je sais c’est maladroit}} si (charcount == 31) {/ / si le charcount est égal à 31, aka, l’écran est plein delay(500) ; lcd.clear(); / / efface l’écran lcd.setCursor(0,0); / / définir le curseur lcd.print(incomingByte) 0,0; / / ou encore impression données charcount = 1; / / valeur charcount retour 1} si (incomingByte == ' ~') {/ / vérifier si l’octet est marqueur ~ pour commencer l’impression startstring = 1; / / lancer l’impression}} digitalWrite (13 FAIBLE) ; int pos = 90 ; variable pour stocker le servo position myservo.write(pos) ; dire de servo pour aller à positionner dans la variable « pos » delay(10) ;
}
} readString = "" ; }