Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
#include <avr/sleep.h>
#include <avr/power.h>
#include <avr/wdt.h>
volatile boolean wdt_tripped=1;
void system_sleep()
{
delay(2); // Wait for serial traffic
_SFR_BYTE(ADCSRA) &= ~_BV(ADEN); // Switch ADC off
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
sleep_mode(); // System sleeps here
sleep_disable();
_SFR_BYTE(ADCSRA) |= _BV(ADEN); // Switch ADC on
}
void wdt_interrupt_mode()
{
wdt_reset();
WDTCSR |= _BV(WDIE); // Restore WDT interrupt mode
}
void wdt_reset_mode()
{
wdt_reset();
WDTCSR &= ~_BV(WDIE); // Enable WDT reset mode
}
ISR(WDT_vect)
{
wdt_tripped=1; // set global volatile variable
}
...
void setup()
{
wdt_disable();
wdt_reset_mode();
wdt_enable(WDTO_8S);
}
void loop()
{
wdt_interrupt_mode();
if (wdt_tripped) {
wdt_tripped = 0;
delay(10);
}
system_sleep();
wdt_reset_mode();
//read sensors, display data
}
Давление внутри и снаружи
Комнатная метеостанция на Arduino