Bonjour à tous !!
Dans le projet sur lequel je bosse, je dois gérer la mise en veille de l'arduino et sa sortie de veille. Pour cela, j'avais prévu d'utiliser les interruptions sur les pin 2 ou 3 grâce à un interrupteur de pression (que je modélise pour l'instant avec un simple bouton poussoir).
Dans le principe ça fonctionne comme ça : lorsque la pression dépasse un certain seuil, l'interrupteur envoie un signal détecté comme une interruption de type RISING.
Mon problème est que je n'arrive pas à sortir l'arduino de son état de veille.
Je vous joins le code :
Merci d'avance pour votre aide précieuseCode:#define LedPin 13 #include <avr/interrupt.h> #include <avr/power.h> #include <avr/sleep.h> void mode_actif(){ // passage en mode actif : exécuté si la pin 2 passe de l'état bas à l'état haut detachInterrupt(0); digitalWrite(LedPin, HIGH); } void mode_passif(){ // passage en mode passif attachInterrupt(0, mode_actif, RISING); digitalWrite(LedPin, LOW); // éteindre la led en mode veille /*CHOIX DU MODE DE SOMMEIL */ set_sleep_mode(SLEEP_MODE_PWR_DOWN); /* REGLAGE DU BIT D'ACTIVATION DE LA VEILLE */ sleep_enable(); /* MET L'ARDUINO EN VEILLE */ sleep_mode(); /* DESACTIVE LE MODE VEILLE */ sleep_disable(); } void setup() { Serial.begin(9600); pinMode(13,OUTPUT); pinMode(2,INPUT); digitalWrite(LedPin, HIGH); } void loop() { delay(5000); // L'arduino reste active pdt 5 sec mode_passif(); while (1==1) { // faire clignoter la led pour signifier que l'arduino n'est plus en veille digitalWrite(LedPin, HIGH); delay(100); digitalWrite(LedPin, LOW); delay(100); } }
-----