DIY Arduino matrisskrivare armbandsur (9 / 13 steg)
Steg 9: Arduino skiss för viloläge
Power management är en av viktigaste för kroppsburna och bärbara elektronik. Om strömförbrukning är mycket hög i enheten kan vara värdelös och mycket svåra att upprätthålla. Så försökte jag att hålla strömförbrukningen så låg som möjligt. För som jag använde arduino viloläge som krävde mycket låg ström (endast 100nA) för Atmeg328P. För AVR sova sätt att arbeta, måste du inkludera avr avbrott och sömn bibliotek i din skiss. Avbrott används eftersom endast avbrott kan vakna ATmega chip från viloläge. Om du kommer ihåg är en knapp ansluten till ATmega328 INT0 stift. Jag använde denna knapp för att styra viloläget. Följande kodavsnitt är används för att aktivera viloläget:
#include
#include
void setup() {
första parametern är avbrottsnummer och 0 för INT0 pin
andra pin är funktionen ringa efter avbrott
attachInterrupt (0, wakeUpNow, låg);
}
void sleepNow() / / här vi lägga arduino att sova
{
set_sleep_mode(SLEEP_MODE_PWR_DOWN); viloläge är inställd här
sleep_enable(); kan sova lite i registret mcucr
så sömn är möjligt. bara en säkerhetsnål
attachInterrupt (0, wakeUpNow, låg); avbryta 0 (pin 2) och köra funktion
wakeUpNow när stift 2 blir låg
sleep_mode(); här är enheten faktiskt lägga till sova!!
//
sleep_disable(); första sak efter att vakna från viloläge:
Inaktivera sömn...
lastPressTime = millis(); hålla reda hur länge enheten är i aktivt läge
detachInterrupt(0); inaktiverar avbryta 0 på pin 2 så
wakeUpNow kod körs inte
under normal gångtid.
}
void wakeUpNow() / / här avbrottet hanteras efter uppvaknande
{
exekvera kod här efter vakna innan han återvände till funktionen loop()
timers och kod med timers (serial.print och mer...) fungerar inte här.
}