Salut,
du bitwise, des tableaux multidimensionnel, de la manipulation de port, des machines d'état ...
Vous êtes parti dans des trucs hyper compliqué les mecs !
Restons simple, je propose ceci :
const byte broche_bp[] = {A0, A1, A2, A3, A4, A5, 2, 3 }; // Broches des boutons
const byte broche_led[] = {4, 5, 6, 7, 8, 9, 10, 11}; // Broches des leds
static byte valeurs[8] = {LOW}; // Etat des led à t - 1
void setup() {
for(byte i = 0; i < sizeof(broche_bp); ++i) {
pinMode(broche_bp[i], INPUT);
pinMode(broche_led[i], OUTPUT);
}
}
void loop() {
for(byte i = 0; i < sizeof(broche_bp); ++i) { // On scan chaque boutons
if(digitalRead(broche_bp[i]) == HIGH) { // Si le boutons est appuyé
valeurs[i] = !valeurs[i]; // On inverse l'état de la led
for(byte j = 0; j < sizeof(broche_bp); ++j) // Pour chaque leds
digitalWrite(broche_led[j], (i == j && valeurs[i])); // On "écrit" HIGH si la led est celle correspondante au bouton appuyé et que l'état précédant de la led était LOW.
while(digitalRead(broche_bp[i]) == HIGH); // On attend que le bouton soit relaché
break; // On quitte le for qui scan les boutons
}
}
}