I changed the wiring completely to this:
My testing code was just simple Fade:
int led = 6;
int brightness = 0;
int fadeAmount = 5;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
analogWrite(led, brightness);
brightness = brightness + fadeAmount;
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
delay(30);
}
It worked pretty well but not perfect. First, the circuit works in reverse logic. When the variable brightness =0, the led lighting is fully on. The system has some kind of inertia. When I turn it off slowly (brightness=0 and then up to 255) the light is off when brightness=230 what is ok. But when I turn it on (brightness=255 and then down to 0) the light is on when brightness=210 and with some grater intensity then it is turning off. It seems to me that this is a property of the power supply itself.
I added ds1307 rtc module and my new code is:
#include <RTClib.h>
#include <Wire.h>
#define SWITCHPIN 6
#define OnHour 16
#define OnMin 5
#define OnSec 59
#define OffHour 16
#define OffMin 50
int brightness = 255;
RTC_DS1307 rtc;
void setup() {
//rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
Serial.begin(9600);
rtc.begin();
pinMode(SWITCHPIN, OUTPUT);
if (!rtc.begin())
{
Serial.println("Couldn't find RTC"); // Error Message!
while (1);
}
if (!rtc.isrunning())
{
Serial.println("RTC is NOT running!");
}}
void loop() {
analogWrite(SWITCHPIN, brightness);
DateTime now = rtc.now();
Serial.print(now.hour(), DEC); // Only For Serial Monitor
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
if(now.hour() == OnHour && now.minute() == OnMin - 31)
{ brightness = 230;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 30)
{ brightness = 228;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 29)
{ brightness = 224;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 28)
{ brightness = 217;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 27)
{ brightness = 210;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 26)
{ brightness = 203;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 25)
{ brightness = 196;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 24)
{ brightness = 189;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 23)
{ brightness = 182;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 22)
{ brightness = 175;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 21)
{ brightness = 168;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 20)
{ brightness = 161;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 19)
{ brightness = 154;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 18)
{ brightness = 147;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 17)
{ brightness = 140;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 16)
{ brightness = 133;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 15)
{ brightness = 126;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 14)
{ brightness = 119;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 13)
{ brightness = 112;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 12)
{ brightness = 105;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 11)
{ brightness = 98;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 10)
{ brightness = 91;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 9)
{ brightness = 84;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 8)
{ brightness = 77;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 7)
{ brightness = 70;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 6)
{ brightness = 63;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 5)
{ brightness = 56;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 4)
{ brightness = 49;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 3)
{ brightness = 42;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 2)
{ brightness = 35;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin - 1)
{ brightness = 28;
Serial.println(brightness);}
else if(now.hour() == OnHour && now.minute() == OnMin)
{ brightness = 0;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 30)
{ brightness = 0;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 29)
{ brightness = 35 ;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 28)
{ brightness = 42;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 27)
{ brightness = 49;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 26)
{ brightness = 56;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 25)
{ brightness = 63;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 24)
{ brightness = 70;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 23)
{ brightness = 77;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 22)
{ brightness = 84;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 21)
{ brightness = 91;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 20)
{ brightness = 98;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 19)
{ brightness = 105;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 18)
{ brightness = 112;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 17)
{ brightness = 119;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 16)
{ brightness = 126;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 15)
{ brightness = 133;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 14)
{ brightness = 140;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 13)
{ brightness = 147;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 12)
{ brightness = 154;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 11)
{ brightness = 161;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 10)
{ brightness = 168;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 9)
{ brightness = 175;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 8)
{ brightness = 182;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 7)
{ brightness = 189;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 6)
{ brightness = 196;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 5)
{ brightness = 203;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 4)
{ brightness = 210;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 3)
{ brightness = 217;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 2)
{ brightness = 224;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin - 1)
{ brightness = 228;
Serial.println(brightness);}
else if(now.hour() == OffHour && now.minute() == OffMin)
{ brightness = 230;
Serial.println(brightness);}
delay (1000);
}
Next I want to add some DS18b20 and some fans to controll the temperature of my LED light. And then I want to add OLED display to display time and temperature. I think that I have to use interrupts to do this but I don't know how.
P.S. I am very grateful for your interest and any help ![]()
