Stap 9: Arduino Sketch voor slaapstand
Energiebeheer is een van de meest belangrijke ding voor wearable en draagbare elektronica. Als energieverbruik zeer hoog is de het apparaat mogelijk nutteloos en zeer moeilijk te handhaven. Dus, ik probeerde om het stroomverbruik zo laag mogelijk. Daarvoor gebruikte ik arduino slaapstand, die zeer laag stroom (alleen 100nA) voor Atmeg328P vereist. Voor de slaapstand van AVR te werken, hebt u met avr onderbreken en slaap bibliotheek in uw schets. Interrupt wordt gebruikt omdat alleen interrupt ATmega chip uit de slaapstand kunt wakker. Als u is een knop verbonden met de INT0 pin van ATmega328. Ik gebruikte deze knop ter bestrijding van de slaapstand. Volgende codefragment is gebruikt voor het inschakelen van de slaapstand:
#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. }