MeanWell HLG PWM controll

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 :slight_smile: