Étape 3: Programmer l’Arduino : récepteur
Le récepteur a été programmé de sorte qu’il a reçu des données en série de l’émetteur et ensuite envoyé 5V à travers les broches e/s numériques appropriées. Par exemple, si « a » a été reçue, la carte Arduino récepteur rendrait Digital i/o 1 être 0V. Si « b » a été reçue, la carte Arduino récepteur ferait Digital i/o 1 être 5V. Si « c » a été reçue, la carte Arduino récepteur ferait Digital i/o 2 être 0V. Si « d » a été reçu ensuite la carte Arduino récepteur ferait Digital i/o 2 être 5V. Voici les étapes nécessaires pour transférer le code pour le récepteur Arduino :
1. Retirez le bouclier de Proto de l’Arduino que vous choisissez comme le microprocesseur de l’ATMEGA récepteur doit dans la carte Arduino.
2. connecter l’Arduino à un ordinateur via le câble USB.
3. Ouvrez le logiciel Arduino sur votre ordinateur
4. Sélectionnez Outils Serial Port, puis sélectionnez le COM port qui fait référence à votre carte Arduino. C’est généralement le premier port COM dans la liste.
5. Copiez et collez le code suivant dans la fenêtre de code Arduino. Notez que ce code est pour transmission à un débit de 19200 bauds. Si vous avez besoin de transmettre, à une vitesse de transmission différents que partout dans le code il est dit 19200, changez-le à votre vitesse de transmission désiré.
Ce programme reçoit des informations d’une radio de MaxStream XBee.
hors série est sur le port 1
série en est sur le port 0
int outputPin2 = 2 ;
int outputPin3 = 3 ;
int outputPin4 = 4 ;
int outputPin5 = 5 ;
int outputPin6 = 6 ;
int outputPin7 = 7 ;
int outputPin8 = 8 ;
int outputPin9 = 9 ;
int outputPin10 = 10 ;
int outputPin11 = 11 ;
int outputPin12 = 12 ;
int outputPin13 = 13 ;
un octet pour recevoir des données :
char inByte = 0 ;
char inByte2 = 0 ;
char inByte3 = 0 ;
char inByte4 = 0 ;
char inByte5 = 0 ;
char inByte6 = 0 ;
char inByte7 = 0 ;
char inByte8 = 0 ;
char inByte9 = 0 ;
char inByte10 = 0 ;
char inByte11 = 0 ;
char inByte12 = 0 ;
char inByte13 = 0 ;
annuler le programme d’installation () {}
défini convenablement les broches d’entrée et de sortie
pinMode (outputPin2, sortie) ;
pinMode (outputPin3, sortie) ;
pinMode (outputPin4, sortie) ;
pinMode (outputPin5, sortie) ;
pinMode (outputPin6, sortie) ;
pinMode (outputPin7, sortie) ;
pinMode (outputPin8, sortie) ;
pinMode (outputPin9, sortie) ;
pinMode (outputPin10, sortie) ;
pinMode (outputPin11, sortie) ;
pinMode (outputPin12, sortie) ;
pinMode (outputPin13, sortie) ;
Démarrer la connexion série avec 19200-8-n-1-true (non-inversé) :
Serial.Begin(19200) ;
pour une raison quelconque, il semble pour aider à envoyer un caractère arbitraire tout d’abord
puis mettez en pause pour le temps de garde avant de demander le mode commande
Serial.Print("X") ;
Delay(1100) ;
mettre le XBee en mode commande
Serial.Print("+++") ;
Delay(1100) ;
attendre une réponse de le XBee pour 2000 ms, ou commencer
avec le programme d’installation si aucune réponse valide n’est
Si (returnedOK() == ' t ') {}
Si OK a été reçue, puis continuer
}
else {}
Setup() ; dans le cas contraire, revenir en arrière et recommencez le programme d’installation
}
définir le PAN (réseau personnel) ID nombre
Cet exemple utilise 0x3330, mais vous aurez envie de choisir votre propre
nombre hexadécimal unique entre 0 x 0 et 0xFFFE
(Notez la virgule à la fin de la commande qui indique qu’une autre commande suivra)
Serial.Print("ATID3330,") ;
Définissez le MY (adresse de 16 bits)
Cet exemple utilise 0 x 0 pour envoyer et 0 x 1 pour recevoir, mais vous aurez
pour choisir vos propres numéros hexadécimaux entre 0 x 0 et 0xFFFE
Serial.Print("my1,") ;
quitter le mode commande (Notez que nous utilisons Serial.printLN ici pour délivrer un saut de ligne qui termine la séquence de commandes)
Serial.println("CN") ;
les commandes précédentes peuvent également être envoyés sur une seule ligne comme ceci, en utilisant un seul au commandement par des virgules :
Serial.println("ATID3330,my1,CN") ;
la ligne de commande qui précède pourrait également être envoyée comme des commandes séparées, publie de nouveau la commande :
Serial.println("ATID3330") ;
Serial.println("ATMY1") ;
Serial.println("ATCN") ;
attendre une réponse de le XBee pour 2000 ms, ou commencer
avec le programme d’installation si aucune réponse valide n’est
Si (returnedOK() == ' t ') {}
Si OK a été reçue, puis continuer
}
else {}
Setup() ; dans le cas contraire, revenir en arrière et recommencez le programme d’installation
}
}
void loop () {}
obtenez toutes les données entrantes :
Si (Serial.available() > 1) {}
lire un octet
inByte = Serial.read() ;
Serial.Print(inByte) ;
la LED s’allume si un 1 a été reçu
Si (inByte == « a ») {}
digitalWrite (outputPin2, basse) ;
}
Si (inByte == « b ») {}
digitalWrite (outputPin2, HIGH) ;
}
Si (inByte == « c ») {}
digitalWrite (outputPin3, basse) ;
}
Si (inByte == a ') {}
digitalWrite (outputPin3, HIGH) ;
}
Si (inByte == « e ») {}
digitalWrite (outputPin4, basse) ;
}
Si (inByte == « f ») {}
digitalWrite (outputPin4, HIGH) ;
}
Si (inByte == « g ») {}
digitalWrite (outputPin5, basse) ;
}
Si (inByte == « h ») {}
digitalWrite (outputPin5, HIGH) ;
}
Si (inByte == « i ») {}
digitalWrite (outputPin6, basse) ;
}
Si (inByte == « j ») {}
digitalWrite (outputPin6, HIGH) ;
}
Si (inByte == « k ») {}
digitalWrite (outputPin7, basse) ;
}
Si (inByte == « l ») {}
digitalWrite (outputPin7, HIGH) ;
}
Si (inByte == suis ') {}
digitalWrite (outputPin8, basse) ;
}
Si (inByte == ' n ') {}
digitalWrite (outputPin8, HIGH) ;
}
Si (inByte == ' o ') {}
digitalWrite (outputPin9, basse) ;
}
Si (inByte == « p ») {}
digitalWrite (outputPin9, HIGH) ;
}
Si (inByte == « q ») {}
digitalWrite (outputPin10, basse) ;
}
Si (inByte == « r ») {}
digitalWrite (outputPin10, HIGH) ;
}
Si (inByte == de ') {}
digitalWrite (outputPin11, basse) ;
}
Si (inByte == ' t ') {}
digitalWrite (outputPin11, HIGH) ;
}
Si (inByte == « u ») {}
digitalWrite (outputPin12, basse) ;
}
Si (inByte == « v ») {}
digitalWrite (outputPin12, HIGH) ;
}
Si (inByte == « w ») {}
digitalWrite (outputPin13, basse) ;
}
Si (inByte == « x ») {}
digitalWrite (outputPin13, HIGH) ;
}
}
}
void blinkLED (int targetPin, int numBlinks) {}
Cette fonction clignote le statut LED lumière autant de fois que demandé
pour (int i = 0; i
digitalWrite (targetPin, HIGH) ; définit la LED sur
Delay(250) ; attend une seconde
digitalWrite (targetPin, basse) ; la LED se met
Delay(250) ;
}
}
char returnedOK () {}
Cette fonction vérifie la réponse sur le port série pour voir si c’était un « OK » ou non
char incomingChar [3] ;
char okString [] = "OK" ;
char de résultat = ' n ' ;
int startTime = millis() ;
tandis que (millis() - startTime < 2000 & & résultat == ' n ') {/ / utiliser un délai d’attente de 10 secondes
Si (Serial.available() > 1) {}
lire trois octets entrants qui doivent être « O », « K » et un saut de ligne :
pour (int i = 0; i < 3; i ++) {}
incomingChar [i] = Serial.read() ;
}
Si (strstr (incomingChar, okString)! = NULL) {/ / vérifier si la suite est « OK »
Si (incomingChar [0] == ' o ' & & incomingChar [1] == « K ») {/ / vérifier si les deux premiers caractères sont « OK »
résultat = ' t ' ; T retour si « OK » fut la réponse
}
else {}
résultat = « F » ; sinon retourner F
}
}
}
retourner le résultat ;
}
6. une fois que le code a été copié dans la fenêtre de code Arduino, sélectionnez « Compiler » pour vérifier qu’il n’y a pas d’erreurs dans le code. Si aucune erreur n’est présents, puis appuyez sur le « transférer vers le bouton i/o Board ».
7. une fois que le code a été téléchargé dans la carte Arduino, débranchez le câble USB et rattacher le ProtoShield (y compris le module Xbee). Vous avez maintenant terminé téléchargement le code pour le récepteur de l’Arduino.