Bonjour,
après plusieurs recherches sur internet je n’arrive toujours pas à comprendre pourquoi mon code ne marche pas.
Mon but est de mettre en veille mon Arduino et de le réveiller par une interruption dès lors que l’état du bouton change et envoyer cet état.
#include <avr/sleep.h>
const int buttonPin = 2;
int lastButtonState = 0;
volatile int buttonState = 0;
void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT);
ADCSRA = 0;
}
void loop() {
attachInterrupt(0, pin_ISR, CHANGE);
set_sleep_mode (SLEEP_MODE_PWR_DOWN);
sleep_enable();
sleep_cpu ();
}
void pin_ISR() {
sleep_disable();
buttonState = digitalRead(buttonPin);
if (buttonState != lastButtonState) {
if (buttonState == HIGH) {
Serial.println("L");
}
else {
Serial.println("H");
}
}
lastButtonState = buttonState;
}