Commuter à l’aide d’un bouton poussoir
- Consulter la page concernant les boutons poussoirs.
- Câbler un bouton (connecté au port numérique 2) et une LED, puis exécuter le code suivant :
int pin_LED = 13; // port numérique associé à la LED intégrée int pin_button = 2; // port numérique lié au bouton poussoir int state = LOW; // variable d'état de la LED void setup() { pinMode(pin_LED, OUTPUT); // réglage du port de la LED en mode SORTIE pinMode(pin_button, INPUT); // réglage du port du bouton en mode ENTREE } void loop() { if (digitalRead(pin_button) == HIGH) { // si le bouton est pressé ... state = !state; // ... inversion de la variable d'état de la LED (allumée<->éteinte) } digitalWrite(pin, state); // action sur la LED (allumage ou extinction) }
Que se passe-t-il ??
Appeler le professeur
Pour remédier au problème, on utilise une interruption :
int pin_LED = 13; // port numérique associé à la LED intégrée int pin_button = 2; // port numérique lié au bouton poussoir volatile int state = LOW; // variable d'état de la LED (précédée de volatile) void setup() { pinMode(pin_LED, OUTPUT); // réglage du port de la LED en mode SORTIE attachInterrupt(digitalPinToInterrupt(pin_button), blink, CHANGE); } void loop() { digitalWrite(pin_LED, state); // action sur LED (allumage ou extinction) } void blink() { state = !state; // inversion de la variable d'état de la LED }
Observer et expliquer …
Appeler le professeur
Pour en savoir plus …
- La fonction
attachInterrupt
: https://www.arduino.cc/en/Reference/AttachInterrupt- Les interruptions Arduino : https://www.arduino.cc/en/Reference/Interrupts