Evite de modifier le code préalablement publié, les commentaires que l'on a fait perdent leur sens et ceux qui relisent derrière n'y comprennent rien.
1erement, en oubliant que c'est bouton poussoir qui déclenche l'interruption, le code suivant fait la même chose :
void loop () {
digitalWrite (LED, state_BP);
Serial1.write (state_BP);
}
void interrupt () {
// switch on/off
reading_BP = digitalRead (BP);
if (reading_BP == LOW && previous_BP == HIGH) {
state_BP = !state_BP;
}
previous_BP = reading_BP;
}
2emement, tu as choisit une interruption sur niveau bas
attachInterrupt (2, interrupt, LOW);
Donc le CPU part en continu en interruption tant que le bouton est en bas.
Ca ne sert à rien.
Utilise plutot FALLING et ta routine d'interruption devient :
void interrupt () {
state_BP = !state_BP;
}
Tu n'a plus besoin de détecter le front descendant puis que le mode FALLING le fait pour toi.
Donc il est fort probable que ton interruption ne marche pas bien a cause de cela