Bonjour à tous,
Je suis un débutant en Arduino et je voudrais faire appel à vos connaissances. Voila j’ai fait un bout de code afin de gérer 5 relais qui s’activent / Déactive suivant l’heure. Le problème est qu’il ne s’allume pas toujours comme il faut. De plus il y a une gestion d’un ventilateur afin de refroidir l’eau quand la t°c monte au dessus de 28, mais j’aimerais que une fois que les ventilateurs sont allumés il reste 5 min sans mettre en suspend le reste du programme, j’ai essayé avec “delay(300000);” mais le programme s’arrête lorsque la température est audessus de 28°
Pouvez vous regarder mon code ci-dessous et m’apporter vos commentaires.
Merci d’avance de votre aide
Antony
#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal.h>
RTC_DS1307 RTC;
const int relais1=A0;
const int relais2=A1;
const int relais3=10;
const int relais4=11;
const int relais5=12;
const int SensorPin=A3;
const int Ventillo=A2;
const float BaseTemp = 20.0;
//const int inter=4;
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
void setup() {
// set up LCD indication nb colonne et case:
lcd.begin(16, 2);
lcd.clear();
delay(10);
// Print a message to the LCD.
lcd.setCursor(2,0);
lcd.print("Rock'n Roll");
delay(1000);
lcd.clear();
lcd.setCursor(2,1);
lcd.print("Rock'n Roll");
delay(1000);
lcd.clear();
delay (10);
pinMode (relais1, OUTPUT);
pinMode (relais2, OUTPUT);
pinMode (relais3, OUTPUT);
pinMode (relais4, OUTPUT);
pinMode (relais5, OUTPUT);
pinMode (Ventillo, OUTPUT);
pinMode (SensorPin, INPUT);
Serial.begin(9600);
Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
//RTC.adjust(DateTime(__DATE__, __TIME__));
void loop() {
DateTime now = RTC.now();
// Afficher l'heure sur la premiêre ligne du LCD
lcd.setCursor(0, 0);
if (now.hour() < 10) {
lcd.print("0");
}
lcd.print(now.hour());
lcd.print(":");
if (now.minute() < 10) {
lcd.print("0");
}
lcd.print(now.minute());
lcd.print(":");
if (now.second() < 10) {
lcd.print("0");
}
lcd.print(now.second());
// programme
lcd.setCursor(0,1);
lcd.print("S:");
// Rechercher si heure actuelle est dans dans la plage horaire de la voie 1
if ((now.hour() >= 11.30) && (now.hour() <= 21.40)) {
digitalWrite (relais1,HIGH);
lcd.setCursor(2,1);
lcd.print("1");
}
else {
lcd.setCursor(2,1);
lcd.print("-");
digitalWrite (relais1, LOW);
}
// Rechercher si heure actuelle est dans dans la plage horaire de la voie 2
if ((now.hour() >= 12.10) && (now.hour() <= 22.40)){// now.minute()<=40))
digitalWrite (relais2,HIGH);
lcd.setCursor(3,1);
lcd.print("2");
}
else {
lcd.setCursor(3,1);
lcd.print("-");
digitalWrite (relais2, LOW);
}
// Rechercher si heure actuelle est dans dans la plage horaire de la voie 3
if ((now.hour() >= 13.10) && (now.hour() <= 22.40)) {
digitalWrite (relais3,HIGH);
lcd.setCursor(4,1);
lcd.print("3");
}
else {
lcd.setCursor(4,1);
lcd.print("-");
digitalWrite (relais3, LOW);
}
// Rechercher si heure actuelle est dans dans la plage horaire de la voie 4
if ((now.hour() >= 13.30) && (now.hour() <= 21.40)) {
digitalWrite (relais4,HIGH);
lcd.setCursor(5,1);
lcd.print("4");
}
else {
lcd.setCursor(5,1);
lcd.print("-");
digitalWrite (relais4, LOW);
}
// Rechercher si heure actuelle est dans dans la plage horaire de la voie 4
if ((now.hour() >= 13.30) && (now.hour() <= 21.40)) {
digitalWrite (relais5,HIGH);
lcd.setCursor(6,1);
lcd.print("5");
}
else {
lcd.setCursor(6,1);
lcd.print("-");
digitalWrite (relais5, LOW);
}
//Capteur de température
int SensorVal = analogRead (SensorPin);
Serial.println (SensorVal);
float Temperature= (SensorVal * (172.6824 / 1024.0));
lcd.setCursor(10,0);
lcd.print("T:");
lcd.setCursor(12,0);
lcd.print(Temperature);
lcd.setCursor(14,0);
lcd.print((char)223);
//Affichage du v pour ventillateur
lcd.setCursor (10,1);
lcd.print("V:");
//Gestion Ventilateur
if(Temperature>=23) {
digitalWrite (Ventillo,HIGH);
lcd.setCursor (12,1);
lcd.print("ON ");
}
else {
lcd.setCursor (12,1);
lcd.print("OFF");
}
delay(1000);
}