Page 69 - arduino_Neat
P. 69
pinMode(pinLed3, OUTPUT);
Boucle principale
Le cœur du code de pilotage des LED se trouve dans la boucle principale ; les instructions qui
s'y trouvent s'exécuteront aussi longtemps que la carte sera connectée à l'ordinateur.
C'est dans cette partie que la lecture du caractère saisi et la correspondance avec l'instruction
d'allumage et extinction des LED sont définies.
Puisque c'est à partir du clavier que le pilotage s'effectue, le programme est toujours en
attente de saisie d'un caractère ; les instructions de pilotage sont donc contenues dans la
structure :
if (Serial.available () > 0) {
...
...
}
Lorsque le moniteur sériel ou tout autre programme envoie une information sérielle à la carte
Arduino, la donnée est stockée en mémoire par le port sériel de l'Arduino, et elle y demeurera
jusqu'à ce qu'elle soit lue par la fonction Serial.read(). D'autre part, la fonction Serial.available()
retourne une valeur correspondant au nombre de données qui sont contenues dans le port. Si
elle est plus grande que 0, cela signifie qu'il y a au moins une donnée présente dans le port (et
qu'il faut donc aller la lire).
La structure précédente vérifie donc tout au long de l'exécution du programme s'il y a une
donnée sérielle reçue par l'Arduino qui est en attente d'être lue ; si c'est le cas, le programme
la lit.
Lecture du caractère saisi :
La lecture du caractère se fait avec l'instruction Serial.read().
octetRecu = Serial.read () ;
La donnée lue est ensuite stockée dans la variable octetRecu et retirée de la mémoire du port
sériel de l'Arduino.
Allumage et extinction des LED
La valeur de la variable est ensuite analysée dans le but d'effectuer la correspondance entre le
caractère saisi et la LED appropriée comme indiqué dans le principe de fonctionnement. Dans le
reste du code, les commentaires à la fin de chaque ligne expliquent les instructions.
if (octetRecu =='R'|| octetRecu =='r') { //Si l'octet reçu est égal à R ou r
digitalWrite (pinLed0, HIGH) ; //Allumer la LED connectée à pinLed0
Serial.println ("LED Rouge allumée") ; //Afficher «LED Rouge allumée" dans le moniteur
série
}
if (octetRecu =='J'|| octetRecu =='j') { //Si l'octet reçu est égal à J ou j
digitalWrite (pinLed1, HIGH) ; //Allumer la LED connectée à pinLed1
Serial.println ("LED Jaune allumée") ; //Afficher «LED Jaune allumée" dans le moniteur
série
}
if (octetRecu =='V'|| octetRecu =='v') { //Si l'octet recu est égal à V ou v
digitalWrite (pinLed2, HIGH) ; //Allumer la LED connectée à pinLed2
Serial.println ("LED Verte allumée") ; //Afficher «LED Verte allumée" dans le moniteur
série
}
if (octetRecu =='B'|| octetRecu =='b') { //Si l'octet reçu est égal à B ou b
digitalWrite (pinLed3, HIGH) ; //Allumer la LED connectée à pinLed3
Serial.println ("LED Bleue allumée") ; //Afficher «LED Bleue allumée" dans le moniteur
série
}
if (octetRecu =='E'|| octetRecu =='e') { //Si l'octet reçu est égal à E ou e
//Eteindre les LED connectées aux pinLed0, pinLed1, pinLed2 et pinLed3
digitalWrite (pinLed0, LOW) ;
digitalWrite (pinLed1, LOW) ;
digitalWrite (pinLed2, LOW) ;
digitalWrite (pinLed3, LOW) ;
69