Bonjour !
Suite à une panne de mon éclairage d'aquarium, je me lance dans la fabrication d'une nouvelle rampe d'éclairage à base de tube fluorescent T5.
Pour le montage de la rampe, c'est bon. Par contre, je souhaite contrôler l'allumage et l'extinction des tubes en coupant l'alimentation des ballasts à l'aide de relais (coupant la phase).
En plus, le système va gérer une ventilation afin de garder les tubes à une température proche de leur optimum (35°C).
Niveau matériel, j'ai opté pour une carte arduino UNO (copie Elegoo), un module contenant 4 relais avec optocoupleur, un module RTC DS3231 et un capteur de température DS18B20.
Mes connaissances en programmation arduino sont de niveau débutant, j'ai essayé de faire un programme simple et j'aimerai votre avis dessus. (Les heures et pin ne sont pas définitif encore)
Le code :
#include <Wire.h>
#include <RTClib.h>
#include <OneWire.h>
#include <DallasTemperature.h>
RTC_DS3231 rtc;
const int RELAIS_ACTI = 1 ;
const int RELAIS_BLEU = 2 ;
const int RELAIS_BLANC = 3 ;
const int RELAIS_VENTIL = 4 ;
#define ONE_WIRE_BUS 5
OneWire oneWire( ONE_WIRE_BUS );
DallasTemperature sensors( &oneWire );
void setup() {
/* put your setup code here, to run once:*/
Serial.begin(115200);
pinMode(RELAIS_ACTI, OUTPUT); /*Configure la broche 1 (relais actinique) en sortie*/
pinMode(RELAIS_BLEU, OUTPUT);
pinMode(RELAIS_BLANC, OUTPUT);
pinMode(RELAIS_VENTIL, OUTPUT);
digitalWrite(RELAIS_ACTI,0); /*On place le relais dans l'état off*/
digitalWrite(RELAIS_BLEU,0);
digitalWrite(RELAIS_BLANC,0);
digitalWrite(RELAIS_VENTIL,0);
Wire.begin();
sensors.begin();
}
void loop() {
// put your main code here, to run repeatedly:
sensors.requestTemperatures(); /*demande de température de toutes les sondes*/
float Temp = sensors.getTempCbyIndex(0) /*On garde l'index 0*/
DateTime now = rtc.now(); /*On fait tourner la fonction heure de la RTC*/
if(now.hour >= 12 && now.minute >= 00 && now.hour <= 22 && now.minute <= 00) //On teste l'heure de la RTC
{
digitalWrite(RELAIS_ACTI,1); /*On allume si la condition d'heure est respectee*/
}
else
{
digitalWrite(RELAIS_ACTI,0); //sinon on eteint
}
if(now.hour >= 12 && now.minute >=00 && now.hour <= 22 && now.minute <= 00)
{
digitalWrite(RELAIS_BLEU,1); /*On allume si la condition d'heure est respectee*/
}
else
{
digitalWrite(RELAIS_BLEU,0); /*sinon on eteint*/
}
if(now.hour >= 12 && now.minute >=00 && now.hour <= 22 && now.minute <= 00)
{
digitalWrite(RELAIS_BLANC,1); /*On allume si la condition d'heure est respectee*/
}
else
{
digitalWrite(RELAIS_BLANC,0); /*sinon on eteint*/
}
if(Temp >= 40)
{
digitalWrite(RELAIS_VENTIL,1); /*On allume si la condition d'heure est respectee*/
}
else
{
digitalWrite(RELAIS_VENTIL,0); /*sinon on eteint*/
}
}
Lorsque je vérifie le projet, j'obtient 2 erreurs :
programme_lampe_T5:55: error: 'now' was not declared in this scope
if(now.hour >= 12 && now.minute >=00 && now.hour <= 22 && now.minute <= 00)
et
In function 'void loop()':
programme_lampe_T5:41: error: 'class DallasTemperature' has no member named 'getTempCbyIndex'
float Temp = sensors.getTempCbyIndex(0) /*On garde l'index 0*/
J'avoue, je séche... Les exemples qui m'ont servi de modéle n'ont rien de plus. Du coup, je séche...
Pouvez-vous m'aider à finaliser les programme pour qu'il compile correctement ?
Merci à vous !
Sanct