Ź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); }