// Déclaration des constantes
const int pinBouton = 25;
const int pinRouge = 26;
const int pinVert = 33;
const int pinJaune = 32;
// Variables globales
int etatBoutonPrecedent = HIGH;
int etatBoutonActuel = HIGH;
int ledActive = 0;
int compteur=0;
void setup() {
// Configuration des broches
pinMode(pinBouton, INPUT_PULLUP);
pinMode(pinRouge, OUTPUT);
pinMode(pinVert, OUTPUT);
pinMode(pinJaune, OUTPUT);
// Activation de l'interruption EXTII pour le bouton
attachInterrupt(digitalPinToInterrupt(pinBouton), boutonInterrupt, FALLING);
}
void loop() {
// Ne rien faire dans la boucle principale
}
void boutonInterrupt() {
// Lecture de l'état actuel du bouton
etatBoutonActuel = digitalRead(pinBouton);
// Vérification de l'appui sur le bouton
if (etatBoutonActuel == LOW && etatBoutonPrecedent == HIGH) {
ledActive = !ledActive;
compteur = compteur + 1;
// Utilisation d'un switch pour gérer les différentes étapes
switch (compteur) {
case 1:
digitalWrite(pinRouge, ledActive);
digitalWrite(pinVert, LOW);
digitalWrite(pinJaune, LOW);
break;
case 2:
digitalWrite(pinVert, ledActive);
digitalWrite(pinRouge, LOW);
digitalWrite(pinJaune, LOW);
break;
case 3:
digitalWrite(pinJaune, ledActive);
digitalWrite(pinRouge, LOW);
digitalWrite(pinVert, LOW);
break;
default:
// Réinitialiser le compteur si on a dépassé 3
compteur = 0;
break;
}
}
// Mise à jour de l'état précédent du bouton
etatBoutonPrecedent = etatBoutonActuel;
}