bon je viens de refaire le test complet, rien à faire ça ne veut pas.
Je remet mon code complet histoire de :
#include <DHT.h> //Librairie pour le capteur DHT
#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal_I2C.h> //librairie i2c
#include <Time.h>
RTC_DS1307 RTC;
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#define DHTPIN 9 //Pin auquel est connecté le capteur DHT
#define DHTTYPE DHT11 //Si vous utiliser le DHT 11
//#define DHTTYPE DHT22 //Si vous utiliser le DHT 22 (AM2302)
//#define DHTTYPE DHT21 //Si vous utiliser le DHT 21 (AM2301)
const int intTimePause = 5000; //Par défaut on actualise les valeures toutes les 5 secondes
//const int Ledverte=13;
const int relais = 6;
float fltHumidity; //Pourcentage d'humidité mesuré
float fltTemperature; //Température mesurée en Celsius
DHT dht(DHTPIN, DHTTYPE); //On initialise le capteur DHT
boolean running = false;
void setup()
{
lcd.begin(16, 2); //On indique le nombre de colonnes et de lignes de l'écran
lcd.clear(); //On efface tout ce qui se trouve sur l'écran
pinMode (relais, OUTPUT);
Serial.begin(57600);
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__));
}
}
void loop(){
//RTC.adjust(DateTime(__DATE__, __TIME__));
DateTime now = RTC.now();
lcd.setCursor(0, 1);
//lcd.print (now.day(),DEC);
//lcd.print("/");
//lcd.print (now.month(),DEC);
//lcd.print("/");
//lcd.print (now.year(),DEC);
//lcd.print(" ");
lcd.print (now.hour(),DEC);
lcd.print(":");
lcd.print(now.minute(), DEC);
//lcd.print(":");
//lcd.print(now.second(), DEC);
fltHumidity = dht.readHumidity(); //On lit le pourcentage d'humidité
fltTemperature = dht.readTemperature(); //On lit la température en degrés Celsuis
if (isnan(fltTemperature) || isnan(fltHumidity)) //Si les valeures retournées ne sont pas des nombres :
{
lcd.setCursor(0, 1); //Positionnement du curseur
lcd.print(DHTTYPE); //On affiche le type de capteur
lcd.setCursor(5, 1);
lcd.print(" illisible"); //On affiche l'erreur
}
else
{
//mise en forme et affichage des informations sur l'écran LCD
lcd.setCursor(0, 0); //Positionnement du curseur
lcd.print("T: ");
lcd.setCursor(3, 0);
lcd.print(fltTemperature,0); //Affichage de la température
lcd.setCursor(5, 0);
lcd.print((char)223); //Affiche le caractère ° (degrés)
//lcd.setCursor(14, 0);
//lcd.print("C"); //En degrés Celsuis
lcd.setCursor(10, 0);
lcd.print("H: ");
lcd.setCursor(13, 0);
lcd.print(fltHumidity,0); //Affichage de l'humidité
lcd.setCursor(15, 0);
lcd.print("%");
}
if (hour() >= 13 && hour() < 15) { // Relais toujours éteint pendant la plage horaire définie
digitalWrite(relais, HIGH);
lcd.setCursor(11, 1);
lcd.print("On");
}
else {
if (dht.readHumidity() < 30) {
digitalWrite (relais,LOW);
lcd.setCursor(11, 1);
lcd.print("On");
}
else { // Si humidité >= 30, relais activé
digitalWrite(relais,LOW);
lcd.setCursor(11, 1);
lcd.print("Off");
}
}
}
Que je passe en HIGH en LOW ne change rien au problème, la seule condition qui fonctionne c'est l'humidité. Le reste, je peux mettre l'heure que je veux, ça ne change rien du tout.
Bon je vais faire une pause et reprendre tout à 0, je dois avoir une erreur qui perturbe le fonctionnement des conditions.