- dzieci zasypiają z włączonym oświetleniem globusa Albi.
- fakt że pobiera tylko 2.5 W mocy ale po co ma się świecić całą noc.
- dorobimy "timer" na 30 minut a potem deep sleep Uno.
- poniżej wersja beta programu, ma te zaletę że działa u mnie.
// 2023.12.14, bubu321, working
//
// piny PWM 3,5,6,9,10,11
// analogWrite(pins, dutyCycle); // dutyCycle 0..255
// pin PWM
#include <avr/sleep.h>
#define pins 9
unsigned long int czas15min = 1800000; // 1.800.000 30 minut
unsigned long int czas30sek;
int dutyCycle = 255;
// -------------------------- subroutine ---------------------------
// --------------
void enterSleep()
{
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
analogWrite(pins, 0);
sleep_enable();
// attachInterrupt(digitalPinToInterrupt(2), wakeUpNow, LOW);
sleep_mode();
/* The program will continue from here. */
/* First thing to do is disable sleep. */
// sleep_disable();
// detachInterrupt(digitalPinToInterrupt(2));
}
// ----------------------------------------- setup --------------------
void setup()
{
Serial.begin(250000);
Serial.println("start");
Serial.println(czas15min);
pinMode(13, OUTPUT);
analogWrite(pins, dutyCycle);
// czas15min = millis(); // 15 minut;
}
// ------------------------------------------ loop --------------------------
void loop()
{
if (millis() > czas15min )
{
Serial.println("sleeping ...");
delay(500);
enterSleep(); // Enter sleep method!
}
digitalWrite(13, HIGH);
delayMicroseconds(100);
digitalWrite(13, LOW);
delayMicroseconds(1000 - 100);
if (millis() > czas30sek)
{
dutyCycle -= 10;
czas30sek = millis() + 60000; // co 60 sekund
if (dutyCycle < 10) dutyCycle = 0;
Serial.println(dutyCycle);
Serial.println(millis());
}
analogWrite(pins, dutyCycle);
}
// ------------- end ----------------
-