14-09-2019, 13:57
Witam potrzebuję zrobić włącznik typu on/off na Arduino z tym że będzie układ działał na akumulatorze więc wyszukałem w internecie że można Atmegę uśpić znalazłem kod który ładnie budzi Arduino ze snu ale działa na zasadzie że po naciśnięciu przycisku wybudza Arduino i po pewnym czasie z automatu go usypia a mi jest potrzebne tak że by można go było uśpić i wybudzić przyciskiem zamieszczam ten kod z prośbą może by ktoś się nad pochylił i podpowiedział jak go zmienić żeby działał tak jak chcę
Kod:
#include <avr/sleep.h>
const int ledPin = 13;
const int inputPin = 2;
volatile boolean flag;
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(inputPin, INPUT_PULLUP);
goToSleep();
}
void loop()
{
if(flag)
{
doSomething();
flag = false;
goToSleep();
}
}
void setFlag()
{
flag = true;
}
void goToSleep()
{
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
attachInterrupt(0, setFlag, LOW); //pin D2
sleep_mode();//uśpienie aż do podania sygnału niskiego
sleep_disable();
detachInterrupt(0);
}
void doSomething()
{
for(int i =0; i<20; i++)
{
digitalWrite(ledPin, HIGH);
delay(200);
digitalWrite(ledPin, LOW);
delay(200);
}
}