Étape 9: Arduino croquis de mode "veille"
Gestion de l’alimentation est l’une des chose plus importante pour l’électronique portable et portatif. Si la consommation d’énergie est très élevée le le dispositif peut être inutile et très difficile à maintenir. Donc, j’ai essayé de maintenir la consommation d’énergie aussi faible que possible. Pour cela j’ai utilisé arduino mode "veille" nécessitant un courant très faible (seulement 100nA) pour Atmeg328P. Pour AVR mode "veille" travailler, vous devez inclure avr interrupt et sommeil bibliothèque dans votre dessin. Interruption est utilisée car seulement interruption peut se réveiller une puce ATmega de mode "veille". Si vous vous souvenez un bouton est relié à la broche de INT0 du ATmega328. J’ai utilisé ce bouton pour contrôler le mode "veille". Après l’extrait de code est utilisé pour activer le mode "veille" :
#include #include void setup(){ // first parameter is interrupt number and 0 for INT0 pin // second pin is the function to call after interrupt attachInterrupt(0,wakeUpNow, LOW); } void sleepNow() // here we put the arduino to sleep { set_sleep_mode(SLEEP_MODE_PWR_DOWN); // sleep mode is set here sleep_enable(); // enables the sleep bit in the mcucr register // so sleep is possible. just a safety pin attachInterrupt(0,wakeUpNow, LOW); // use interrupt 0 (pin 2) and run function // wakeUpNow when pin 2 gets LOW sleep_mode(); // here the device is actually put to sleep!! // sleep_disable(); // first thing after waking from sleep: // disable sleep... lastPressTime = millis(); // keep track how long the device is in active mode detachInterrupt(0); // disables interrupt 0 on pin 2 so the // wakeUpNow code will not be executed // during normal running time. } void wakeUpNow() // here the interrupt is handled after wakeup { //execute code here after wake-up before returning to the loop() function // timers and code using timers (serial.print and more...) will not work here. }