Gestion éclairage d'un paludarium, aide pour choix matériel

Bonsoir,

J'ai un nouveau problème avec les leds, je n'arrive pas à les controller c'est à dire qu'elles restent allumé tout le temps je n'arrive même aps à un on/off.

J'ai un LDD 1000HW, alimenté par une alim 230VAC/48VDC, je n'ai pas de résistance au niveau de la PWM et du DIM(peut être ça).

Je demande juste des pistes s'il vous plaît. Je vous en remercie par avance.

Voici mon programme :

#include <LiquidCrystal.h>
#include <OneWire.h>
#include <Wire.h>
#include <DS1307RTC.h>
#include <Time.h>
#include <EEPROM.h>



// Déclaration E/S

/*
Analog Pin 0 = Relais_Cascade;
Analog Pin 1 = Relais_Brumi;
Analog Pin 2 = Ventilateurs;
Analog Pin 4 = SDA DS1307;
Analog Pin 5 = SCL DS1307;
Digital Pin 2 = LCD;
Digital Pin 3 = LCD;
Digital Pin 4 = LCD;
Digital Pin 5 = LCD;
Digital Pin 6 = LCD;
Digital Pin 7 = LCD;
Digital Pin 8 = DS18B20;
Digital Pin 9 = Ecl_Jour;
Digital Pin 10 = Ecl_Rouge;
*/

//Déclaration Variable

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
int sensorPin = 9;
int Ecl_Jour = 10;
int Ecl_Rouge = 11;
int Ventilateur_Palu = 12;
int Ventilateur_Ecl = 13;
int time;
int val_up=0;
int val_down=0;
long last_time1 = 0;
long last_time2 = 0;
OneWire ds(sensorPin);
int relais_cascade = 17;
int relais_brumi = 16 ;




void setup()  {
  Serial.begin(9600);
  pinMode(Ventilateur_Palu, OUTPUT);  // digital pin pour ventilo en sortie
  pinMode(Ventilateur_Ecl, OUTPUT);  // digital pin pour ventilo en sortie
  pinMode(relais_cascade, OUTPUT);
  pinMode(relais_brumi, OUTPUT);
  analogWrite(Ecl_Jour,0);
  analogWrite(Ecl_Rouge,0);
  lcd.begin(16, 2);
  delay(10);
  lcd.print("======KiKi======");
  lcd.setCursor(0, 1) ;
  lcd.print("||Ptit Paradis||");
  delay(2000);
  lcd.clear();
  setSyncProvider(RTC.get);  
  if(timeStatus()!= timeSet) 
    lcd.println("Pas synchro");
  else
    lcd.print("RTC OK");   
  delay(2000);   
  lcd.clear();
  delay(10);  
    
  }

void loop() {
  val_up = (map (minute(), 0, 59, 0, 255));
  val_down = (map (minute(), 0, 59, 255, 0));
  time = ((hour() * 100) + minute());  
  //Recuperer la temperature du DS18B20***************************************************************************************
 float temp=getTemp();

  //Ventilation coffret eclairage
 if ((hour() > 8 ) && (hour() < 20)) { // entre 8:00:00 et 19:59:59
    digitalWrite(Ventilateur_Ecl, HIGH);
 }
  //Allumage Pompes Brumisateur
if ((hour() == 8 && minute() > 0)) { // entre 8:00:00 et 19:59:59
    digitalWrite(relais_brumi, HIGH);}
    
if ((hour() == 8 && minute() > 0 && second() > 29 )) { // entre 8:00:00 et 19:59:59
    digitalWrite(relais_brumi, LOW); } 

if ((hour() == 12 && minute() > 0)) { // entre 8:00:00 et 19:59:59
    digitalWrite(relais_brumi, HIGH);}
    
if ((hour() == 12 && minute() > 0 && second() > 29 )) { // entre 8:00:00 et 19:59:59
    digitalWrite(relais_brumi, LOW); }

if ((hour() == 16 && minute() > 0)) { // entre 8:00:00 et 19:59:59
    digitalWrite(relais_brumi, HIGH);}
    
if ((hour() == 16 && minute() > 0 && second() > 29 )) { // entre 8:00:00 et 19:59:59
    digitalWrite(relais_brumi, LOW);    
 }
// Allumage cascade
if ((hour() > 6 ) && (hour() < 12)) { // entre 8:00:00 et 19:59:59
    digitalWrite(relais_cascade, HIGH);
}

if ((hour() > 13 ) && (hour() < 22)) { // entre 8:00:00 et 19:59:59
    digitalWrite(relais_cascade, HIGH);
}

  //****************Day Lights**********************************************************************************
 
if (hour() == 15)  { // entre 15:00:00 et 15:59:59
    analogWrite (Ecl_Jour, val_up); // allumage progressif
  }
  else if (hour() == 20)  { // entre 20:00:00 et 20:59:59
    analogWrite (Ecl_Jour, val_down); // extinction progressive
  }   
  else if ((hour() > 15 ) && (hour() < 20)) { // entre 16:00:00 et 19:59:59
    analogWrite(Ecl_Jour, 150);}
    

  //****************Red Lights****************************************************************************
  if (hour() == 15)  { // entre 15:00:00 et 15:59:59
    analogWrite (Ecl_Rouge, val_up); // allumage progressif
  }
  else if (hour() == 20)  { // entre 20:00:00 et 20:59:59
    analogWrite (Ecl_Rouge, val_down); // extinction progressive
  }
  
   
//Affichage heure***************************************************************************************
  if ( millis() >=(last_time1 + 1000))
  {
    lcd.setCursor(0, 0) ;
    lcd.print(hour());
    printDigits(minute());
    printDigits(second());
    last_time1 = millis();  
  }
  //Affichage temperature*****************************************************************************
  if ( millis() >=(last_time2 + 5000))
  {
    lcd.setCursor(9,0);
    lcd.print("T:");
    lcd.print(temp); 
    lcd.print("C  ");  
    last_time2 = millis();
  }
 
   
  //Affichage Ventilation et pompes allumé********************************************************

lcd.setCursor(0,1);

  
  if(digitalRead(Ventilateur_Palu) == HIGH)
  
  {
    
    lcd.print("VPal:A"); 
  }
  else
  {
    lcd.print("VPal:E");
  }

 lcd.setCursor(8,1);
if(digitalRead(Ventilateur_Ecl) == HIGH)
  
  {
    lcd.print("VEcl:A");     
  }
  else
  {
    lcd.print("VEcl:E");
  }
  
}

void printDigits(int digits){
  // utility function for digital clock display: prints preceding colon and leading 0
  lcd.print(":");
  if(digits < 10)
    lcd.print('0');
  lcd.print(digits);
}

//Recupération température DS18B20  
float getTemp(){


byte data[12];
byte addr[8];

if ( !ds.search(addr)) {
//Pas de capteur, relance la recherche
ds.reset_search();
return -1000;
}

if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.println("CRC is not valid!");
return -1000;
}

if ( addr[0] != 0x10 && addr[0] != 0x28) {
Serial.print("Device is not recognized");
return -1000;
}

ds.reset();
ds.select(addr);
ds.write(0x44,1); // Commence la conversion

byte present = ds.reset();
ds.select(addr);
ds.write(0xBE); 


for (int i = 0; i < 9; i++) { 
data[i] = ds.read();
}

ds.reset_search();

byte MSB = data[1];
byte LSB = data[0];

float tempRead = ((MSB << 8) | LSB); //using two's compliment
float TemperatureSum = tempRead *0.0625;

//Ventilation Paludarium


if (TemperatureSum < 24){
  digitalWrite(Ventilateur_Palu, LOW); 
}
else if (TemperatureSum > 26)
{
  digitalWrite(Ventilateur_Palu, HIGH);
}

return TemperatureSum;
}