Sommaire

Le clignotement sans blocage

La fonction delay permet de marquer une pause dans l’exécution du programme. Jusqu’à présent, c’est elle que nous utilisions pour faire clignoter nos LED. Cette fonction convient bien à certains sketchs. Mais le problème, c’est qu’elle bloque tout le programme. Si, par exemple, vous appuyez sur un bouton pendant ce temps, le programme ne le détectera pas.

Pour tester cela, nous aurons besoin de deux LED et d’un bouton. L’une des LED s’allumera une seconde sur deux (comme le sketch Blink), mais l’autre s’allumera seulement si l’on appuie sur le bouton. Vous pouvez reproduire ce branchement et téléverser le code correspondant.

images/06-25.png

Tester les limites de la fonction delay

/* Clignotement_bloquant 
 * Ce sketch montre que la fonction delay 
 * bloque l’exécution du programme 
*/ 
const int BOUTON = 2; // Le bouton est relié à la pin 2 
const int LEDVERTE = 8; // La LED verte est reliée à la pin 8 
const int LEDROUGE = 9; // La LED rouge est reliée à la pin 9 
void setup() { 
  pinMode(BOUTON, INPUT_PULLUP); // Résistance pull-up interne 
  pinMode(LEDVERTE, OUTPUT); // La LED verte est une sortie 
  pinMode(LEDROUGE, OUTPUT); // La LED rouge est une sortie 
} 
void loop() { 
  // Blink 
  digitalWrite(LEDROUGE, HIGH); 
  delay(1000); 
  digitalWrite(LEDROUGE, LOW);  ...