Źródło: www.rocketscream.com
Usypianie Atmega328 jest banalnie proste. Procesor uśpiony, bez peryferiów pobiera około 0,04 mA* prądu, bez uśpienia około 7-8 mA. To znaczna różnica. Posłużyłem się biblioteką LowPower.h. Poniżej lekko zmodyfikowany szkic w którym dodatkowo zadeklarowałem wszystkie piny jako wyjścia. Podobno dzięki temu oszczędza się kilka kilka mA.
* sprawdzałem przy taktowaniu 16MHz, kwarc naturalnie zewnętrzny
// **** INCLUDES *****
#include "LowPower.h"
void setup()
{
//pinMode(7, OUTPUT);
for ( int i = 0; i < 20; i++) {
pinMode(i, OUTPUT);
}
}
void loop()
{
sleepForTwoMinutes();
// Do something here
// Example: Read sensor, data logging, data transmission.
digitalWrite(7, HIGH); // turn the LED on (HIGH is the voltage level)
delay(6000); // wait for a second
digitalWrite(7, LOW);
delay(1000);
}
void sleepForTwoMinutes()
{
for (int i = 0; i < 15; i++)
// Enter power down state for 8 s with ADC and BOD module disabled
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
}