fardox:
Provo a spiegare quello che voglio fare in modo da cercare di risolvere il problema:Allora, l'attiny una volta inizializzato, deve leggere periodicamente 4/8 secondi un sensore, se viene superata una certa soglia allora l'attiny si deve svegliare e segnalarlo attraverso un led per un certo tot, dopo di chè deve tornare in sleep e prepararsi per un nuovo ciclo.
come penseresti di impostare il tutto?
il problema è che il tutto è gestito da una batteria al litio CR2032, da 250mA circa.
Includi la libreria wdt.h per gestire il watchdog, poi includi la lib sleep.h per gestire gli sleep.
A questo punto scrivi una roba del genere:
#include <avr/wdt.h>
#include <avr/sleep.h>
#include <avr/power.h>
const byte mioPin = xx;
void setup() {
MCUSR = 0;
wdt_disable();
pinMode(mioPin, INPUT);
set_sleep_mode(SLEEP_MODE_PWR_DOWN); // setta registri per il modo sleep
sleep_enable(); // abilita la sleep all'uso
}
void loop() {
if (digitalRead(mioPin) == STATO_CHE_VUOI_CONTROLLARE) {
//.... codice da eseguire...
}
wdt_enable(WDTO_8S);
power_adc_disable();
power_timer0_disable();
power_timer1_disable();
sleep_mode();
while (1); //inutile, tanto non ci arriverà mai, serve solo al compilatore
}
In questo modo lo risvegli col watchdog.
Ed ora studiati queste pagine perché altrimenti non ti aiuto più ![]()
http://www.nongnu.org/avr-libc/user-manual/group__avr__watchdog.html
http://www.nongnu.org/avr-libc/user-manual/group__avr__power.html
http://www.nongnu.org/avr-libc/user-manual/group__avr__sleep.html