LEÇON 3: Communiquer à travers le Port Serie

Dans la leçon 2, vous avez appris à contrôler la LED a travers les ports digitals, et comment contrôler plusieurs LED en utilisant “for loops” cela vous a certainement simplifier la vie en tant que programmeur. Vous avez écrit un programme qui ferait clignoter une LED rouge, puis une LED jaune le nombre de fois indiqué par le programme. Dans cette leçon, nous utiliserons le même circuit 2 LED. Si vous ne l’avez pas déjà fait, vous devriez le faire maintenant. Ceci est un schéma du circuit:

Afin de faire clignoter indépendamment les deux LEDs, vous utiliserez probablement un code similaire à celui-ci:

 
int redLED=9;         //Déclarez redLED comme entier (int) et connectez au port 9 
int greenLED=10;      //Déclarez greenLED comme entier (int) et connectez au port 10 
int redOnTime=250;    //Ceci définie la durée donc la LED rouge restera allumé (250ms) 
int redOffTime=250;   //Ceci définie la durée donc la LED rouge restera étteinte (250ms) 
int greenOnTime=250;  //Ceci définie la durée donc la LED verte restera allumé (250ms)
int greenOffTime=250; //Ceci définie la durée donc la LED verte restera étteinte (250ms) 
int numgreenBlinks=5; //Nombre de fois que la LED verte va clignoter (5) 
int numRedBlinks=5;   //Nombre de fois que la LED rouge va clignoter (5) 
void setup() 
{ 
pinMode(redLED, OUTPUT);    // Dites à Arduino que redLED est un port de sortie 
pinMode(greenLED, OUTPUT);  //Dites à Arduino que greenLED est un port de sortie 
} 
void loop() 
{ 
     for (int j=1; j<=numRedBlinks; j=j+1) 
       { 
          // Commencez votre loupe pour la LED rouge 
          digitalWrite(redLED, HIGH);             //Allumez la LED rouge 
          delay(redOnTime);                       //Laissez allumé pendant redOnTime 
          digitalWrite(redLED, LOW);              //Éteindre la LED rouge 
          delay(redOffTime);                      //Laissez étteint pendant redOffTime 
      } 
    for (int j=1; j<=numgreenBlinks; j=j+1)
      { 
        // Commencez votre loupe pour la LED verte 
        digitalWrite(greenLED,HIGH);            //Allumez la LED 
        delay(greenOnTime);                     //Laissez allumé pendant greenOnTime 
        digitalWrite(greenLED,LOW);             //Éteindre la LED 
        delay(greenOffTime);                    //Laissez étteint pendant greenOffTime 
      } 
} 

Comme vous pouvez constater, les loupes simplifient grandement l’écriture de votre programme et sont beaucoup plus simples à modifier. Dans le code ci-dessus, pour changer le nombre de fois que les LED clignotent, il vous suffit de changer deux lignes de code:

 
int numgreenBlinks=5;   //Nombre de fois que la LED verte va clignoter (5)
int numRedBlinks=5;     //Nombre de fois que la LED rouge va clignoter (5) 

En modifiant l’une de ces variables en ci-dessus de votre programme, vous ajustez éfficacement le nombre de clignotements de chaque LED à chaque cycle.

Maintenant, en plus de faire clignoter la LED, il serait bon de fournir des informations directement à l’utilisateur. Ce serait bien de permettre à arduino  d’afficher les informations sur votre ordinateur. Vous pouvez le faire en travaillant avec le port série (serial port) et le moniteur série (serial monitor).

Pour utiliser le port série, la première chose à faire est de l’activer dans votre programme. puisque vous ne le ferez qu’une seule fois, je vous recommende de le faire dans le void setup (). Le code ci-dessous, lorsqu’il est placé à l’intérieur de la configuration void (), active votre port série:

Serial.begin(9600);

Conservez tout ce que vous avez déjà dans votre configuration void setup (), et ajoutez-en simplement la ligne de code ci-dessus. Notez que cette ligne de code indique à l’arduino d’activer le port série. Le ‘9600’ indique à l’arduino de communiquer à 9600 bauds, ce qui est essentiellement la vitesse à laquelle vous travaillerez. Plus le nombre est élevé, plus les données seront envoyées et reçues rapidement sur le port série. Cela peut être réglé sur différents nombres, mais l’important est que tout le monde parle et écoute à la même vitesse. Donc, si vous demandez à l’arduino de fonctionner à 9600 bauds, lorsque vous ouvrez votre moniteur série plus tard, vous devez vous assurer qu’il est réglé à la même vitesse.

OK, maintenant que vous avez démarré votre moniteur série, vous pouvez commencer à envoyer et recevoir des données par-dessus. La première et la plus simple consiste à lui envoyer des données. Nous faisons cela en utilisant les commandes Serial.print et Serial.println. Ces commandes envoient des données au moniteur série arduino. Nous allons vous montrer comment ouvrir le moniteur série dans une minute, mais pour le moment, ajoutons des instructions d’impression à notre programme.

for (int j=1; j<=numRedBlinks; j=j+1) 
   {
     // Commencez votre loupe pour la LED rouge
     Serial.println(j);
     digitalWrite(redLED, HIGH);              //Allumez la LED rouge
     delay(redOnTime);                        //Laissez allumé pendant redOnTime
     digitalWrite(redLED, LOW);               //Éteindre la LED rouge
     delay(redOffTime);                       //Laissez étteint pendant redOffTime

Notez que la boucle ci-dessus est notre boucle pour faire clignoter la LED rouge. Nous avons ajouté une nouvelle ligne au début de la boucle. . . Serial.println (j). Après avoir ajouté la ligne de code, téléchargez le code sur l’arduino, puis ouvrez votre moniteur série. Vous faites cela en cliquant sur l’icône de la loupe dans le coin supérieur droit de l’IDE Arduino.

Lorsque vous cliquez sur l’icône, vous devriez voir le moniteur série s’ouvrir et vous devriez voir les valeurs de j en cours d’impression. Ça devrait ressembler à ça:

Vous devriez voir les numéros s’imprimer lorsque votre programme traverse la boucle . Assurez-vous que le débit en bauds défini dans le coin inférieur droit du moniteur série a la même valeur que celle spécifiée dans le programme. 9600 bauds est généralement un bon choix.

Dans l’exemple ci-dessus, nous imprimons la variable j chaque fois que le programme parcourt la boucle for pour la LED rouge. Nous pouvons également imprimer une chaîne de texte. Pour imprimer un texte, placez le entre guillemets. Pour imprimer un texte, faites quelque chose comme Serial.println (“LED rouge clignotante”);. Il imprimera les mots entre les guillemets. Ajoutons ceci à notre code, mais ajoutons-le avant la boucle, donc il s’imprime juste une fois par cycle. Votre code pour la LED rouge devrait ressembler à ceci:

 
serial.println("La LED rouge clignote");
for (int j=1; j<=numRedBlinks; j=j+1)
  { 
    // Commencez votre loupe pour la LED rouge 
    serial.println(j); 
    digitalWrite(redLED, HIGH);              //Allumez la LED rouge 
    delay(redOnTime);                        //Laissez allumé pendant redOnTime 
    digitalWrite(redLED, LOW);               //Éteindre la LED rouge 
    delay(redOffTime);                       //Laissez étteint pendant redOffTime 

Vous pouvez reproduire la même procédure pour contrôler la LED verte

Utilisez les espaces vides entre les mots pour une meilleur lisibilité lorsque vous imprimez les textes. Notez sur le mien qu’en utilisant des espaces vides, j’obtiens un retrait qui rend le texte défilant plus lisible.

Si vous avez des difficultés avec le programme, n’hésiter pas a demander…

Leave a Reply

Your email address will not be published. Required fields are marked *