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;
}