Commuter à l’aide d’un bouton poussoir
- Consulter la page concernant les boutons poussoirs.
- Câbler un bouton (connecté au port numérique 2, c’est important pour la suite)

- Câbler une LED (sur un port numérique quelconque),
- 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_LED, state); // action sur la LED (allumage ou extinction)
}
Décrire ce qui se produit lorsqu’on appuie/relâche le bouton poussoir.
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 …
Pour en savoir plus …
- La fonction
attachInterrupt: https://www.arduino.cc/en/Reference/AttachInterrupt- Les interruptions Arduino : https://www.arduino.cc/en/Reference/Interrupts
