Bonjour,
Tout d'abord je tiens à dire que ceci est mon premier montage sur Arduino.
Voilà mon sujet :
Je souhaite contrôler l'allumage et l'extinction progressive de ma rampe led. ((2*10)*3w)
C'est une rampe led diy qui comporte 2 canaux (1 bleu et 1 blanc) tous deux pilotés par des driver Meanwell LDD-1000H pour la fonction "dimmable" contrôlés par les sorties PWM de la carte.
De plus, via un ou deux relais, je souhaite piloter la mise en marche de 3 petits ventilateurs 12V (2 pour la rampe et 1 pour refroidir l'intérieur du boitier électrique)
Coté matériel : (je ne cite pas les alimentations, et les led's)
Arduino Nano
Module DS1307
Module D'affichage LCD 5 V Série IIC/I2C/TWI - 16x2 HD44780
Module relais 2 canaux
Le montage ne me pose aucun souci, c'est plutôt coté programmation que ça commence à piquer !!!
J'ai beaucoup cherché sur le net pour trouver quelque chose de simple et je suis tombé sur ce programme qui pourrait correspondre à ce que je veux faire.
#include <LiquidCrystal.h>
#include <Wire.h>
#include <RTClib.h>
/*
Ports utilisés :
Analog Pin 4 = SDA pour ds1307
Analog Pin 5 = SCL pour ds1307
Digital Pin 9 = PWM Blanc
Digital Pin 11 = PWM Bleu
Digital pin 3 = relais pour le ventilo
Pour info :
PWM1 = intensité des blancs
PWM2 = intensité des bleus
relais = état du relais du ventilo des drivers
*/
int pwm1=9;
int pwm2=11;
int time;
int val_up=0;
int val_down=0;
int relais=3;
void setup() {
Serial.begin(9600); //initialise la communication pour le DS1307
analogWrite(pwm1,0); //initialise à 0 les leds blanches
analogWrite(pwm2,0); //initialise à 0 les leds bleues
setSyncProvider(RTC.get); //récupère les données du DS1307
pinMode(relais, OUTPUT); //initialise le port du relais en sortie
digitalWrite(relais, LOW); //le relais est éteint à l'initialisation
}
void loop() {
val_up = (map (minute(), 0, 59, 0, 255)); //permet d’attribuer une valeur d’intensité des leds croissante sur 59 minutes, comprise entre 0 et
255 (valeur maximale du signal PWM)
val_down = (map (minute(), 0, 59, 255, 0)); //permet d’attribuer une valeur d’intensité des leds pcroissante sur 59 minutes, comprise entre
255 et 0 (valeur minimale du signal PWM)
//****************LEDS BLEUES***************************************************
if (hour() == 11) { // entre 11:00:00 et 11:59:59
analogWrite (pwm2, val_up); // allumage progressif sur 59 minutes
}
else if (hour() == 21) { // entre 21:00:00 et 21:59:59
analogWrite (pwm2, val_down); // extinction progressive sur 59 minutes
}
else if ((hour() > 11 ) && (hour() < 21)) { // entre 12:00:00 et 20:59:59
analogWrite(pwm2, 255); // allumage maximum
}
else {
analogWrite(pwm2, 0);//le reste du temps les leds bleues sont éteintes
}
//****************LEDS BLANCHES*************************************************
if (hour() == 12) { //entre 12:00:00 et 12:59:59
analogWrite (pwm1, val_up*0.8); //allumage progressif
}
else if (hour() == 20) { //entre 20:00:00 et 20:59:59
analogWrite (pwm1, val_down*0.8); // extinction progressive
}
else if ((hour() > 12 ) && (hour() < 20)) { //entre 13:00:00 et 19:59:59
analogWrite(pwm1, 255*0.8); //allumage max
}
else {
analogWrite(pwm1, 0);//le reste du temps les leds blanches sont éteintes
}
//****************Ventilateur ********************************************
if (pwm1 > 0) {//Si les leds blanches sont allumées
digitalWrite(relais, HIGH);//relais ventilo ON
}
else {//sinon
digitalWrite(relais, LOW);//relais ventilo OFF
}
if (pwm2 > 0) {//Si les leds bleues sont allumées
digitalWrite(relais, HIGH);//relais ventilo ON
}
else {//sinon
digitalWrite(relais, LOW);//relais ventilo OFF
}
C'est en gros ce que va faire ma rampe mais quand je le copie sur l'interface du logiciel Arduino, des messages d'erreur apparaissent et des lignes sont en surbrillance. (peut-être que le programme date un peu et que certains codes ont changés)
Il manque certainement des choses pour que cela fonctionne correctement.
Etant complètement novice en programmation j'ai l'impression de lire du chinois.
J'espère ne rien avoir oublié pour que vous puissiez me venir en aide.
Je vous remercie d'avance pour votre participation et surtout pour votre patience et indulgence.
Merci.