Dans le guide précédent, nous avons vu comment faire le Hello World avec notre Arduino, mais nous avons vu également qu’à chaque fois que le programme se met en attente (entre un allumage et une extinction de la LED), l’Arduino ne pouvait plus rien faire d’autre qu’attendre. Nous allons voir ici comment y remédier.
Prérequis
Matériel requis
- une carte Arduino
- une LED
- une résistance de 220 ohms
Circuit
On utilisera exactement le même circuit que dans le guide Arduino ~04 : Hello World.
Code
/* Clignoter sans délai Allume et éteint une LED connectée à la pin numérique 13, sans utiliser la fonction delay(). Cela signifie que du code pourra etre éxécuté en meme temps que le code de la LED. Le circuit : * une LED est connectée à la pin 13 et au ground avec une résistance de 220 ohms * note : sur la plupart des Arduinos, une LED interne est connectée à la pin 13, donc dans le principe, seul l'Arduino est nécessaire. */ // On donne un nom à notre pin LED : const int ledPin = 13; // une constante (const) ne changera jamais // Ces variables peuvent changer, par contre : int ledState = LOW; // on initialise le premier état de la LED long previousMillis = 0; // cette variable stockera quand la LED a // changé d'état pour la dernière fois // La variable suivante est de type 'long' car le temps, mesuré en millisecondes, // pourrait très rapidement devenir un nombre plus grand que ce que permet une variable 'int' long interval = 1000; // intervalle de temps entre deux changement d'état void setup() { // configurer la pin de la LED en sortie : pinMode(ledPin, OUTPUT); } void loop() { // Ici on va vérifier si il est temps de faire clignoter la LED : // si la différence entre l'heure actuelle et la dernière fois que // la LED a clignoté est plus grande que l'intervalle que nous désirons // entre 2 clignotements unsigned long currentMillis = millis(); if(currentMillis - previousMillis > interval) { // enregistrer la dernière fois que la LED a clignoté previousMillis = currentMillis; // si la LED est allumée on l'éteint et vice-versa if (ledState == LOW) ledState = HIGH; else ledState = LOW; // on applique l'état à notre LED digitalWrite(ledPin, ledState); // on peut sans problème rajouter des taches, qui continueront // sans interférer avec la LED } }
Explication du code
Vous devriez maintenant être capable, pour les choses simples, de vous référer aux commentaires dans le code pour trouver des explications…
Cet article fait partie d’une série de petits guides concernant Arduino. Le sommaire se trouve ici.