Paso 9: Sketch de Arduino para el modo de sueño
Gestión de la energía es uno de lo más importante para la electrónica portátil y usable. Si el consumo es muy alto el el dispositivo puede ser inútil y muy difícil de mantener. Por lo tanto, he tratado de mantener al mínimo posible el consumo de energía. Para eso usé arduino de reposo que requiere corriente muy baja (sólo 100nA) para Atmeg328P. Para que reposo AVR trabajar, usted tiene que incluyen la biblioteca de interrupción y el sueño de avr en su bosquejo. Interrupción se utiliza porque solo interrupción puede despertar chip ATmega del modo de espera. Si recuerdas un botón está conectado al pin de INT0 del ATmega328. He usado este botón para controlar el modo de suspensión. Siguiente fragmento de código se utiliza para habilitar el modo de suspensión:
#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. }