Stap 3: Schakel, WDT en tijd
Wanneer MCU en OLED ingeschakeld, het verbruiken ongeveer 6 mA.
Zodat het horloge kan het uitvoeren van meer dan 1 jaar, ik zal het gebruiken van het MCU meeste energiebesparende slaapstand, SLEEP_MODE_PWR_DOWN, wanneer de gebruiker niet in gebruik. Volgens mijn goedkope Energiemeter, op uiterlijk vertoon 0.1 uA als alle de functie uitschakelen. Maar het moet nog WDT inschakelen voor tijdwaarneming, na inschakelen WDT, op uiterlijk vertoon 4 uA. Veronderstel MCU en OLED auto-slaap na 5 seconden en beeld gebruiker het horloge 12 keer elke dag gemiddeld, het horloge zal verbruiken over 0.2 mAh per dag. ((0.004 mA * 24 uur) + (6 mA * (5 / 60 / 60) uur * 12)) Zo aankan een 150 mAh CR2025 batterij 750 dagen.
De broncode van de tijd komen voornamelijk uit PaulStoffregen. Echter, de macht van slaapwijze stopt de normale timer, gebruik millis() functie voor het bijhouden van de tijd is niet geldig. Dus houd ik een andere variabele ter vervanging van de millis() functie. Voor elke WDT interrupt, het verhogen van een bepaalde waarde. De increment-waarde is afhankelijk van de instellingen van een interval WDT en de chip oscillator. Bij gebruik van 1 tweede WDT interrupt, is mijn fichewaarde van gekalibreerde increment 998 (rond 1000 milliseconden).
En ook ik heb toegevoegd de readVcc() functie voor controle van de batterijstatus.
Ref.:
WDT en macht gerelateerde: http://www.re-innovation.co.uk/web12/index.php/en...
functie voor Arduino v1.4 tijd: https://github.com/PaulStoffregen/Time
readVcc: http://www.re-innovation.co.uk/web12/index.php/en...