Voila le prg que j'utilise.
Merci a toi
#include "Arduino.h"
#include <LiquidCrystal.h>
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 rtc;
#include <OneWire.h>
#define DS18B20 0x28
#define BROCHE_ONEWIRE 10
OneWire ds(BROCHE_ONEWIRE);
float temp;
int sensorPin = 10;
int chauffage = 8;
int relais_1 = 9;
int relais_2 = 11;
int relais_3 = 12;
int time;
int val_up = 0;
int val_down = 0;
int tour=0;
unsigned long last_time1 = 0;
unsigned long last_time2 = 0;
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
void setup()
{
#ifdef AVR
Wire.begin();
#else
Wire1.begin();
#endif
rtc.begin();
lcd.begin(16, 2);
delay(10);
Serial.begin(57600);
//********************************************************************************
pinMode(chauffage, OUTPUT);
pinMode(relais_1, OUTPUT);
pinMode(relais_2, OUTPUT);
pinMode(relais_3, OUTPUT);
digitalWrite(relais_1, 1);
digitalWrite(relais_2, 1);
digitalWrite(relais_3, 1);
lcd.print("AquaPatoche");
lcd.setCursor(0, 1) ;
lcd.print("Gestion Aqua");
delay(2000);
lcd.clear();
if (! rtc.isrunning())
{
}
else
{
Serial.println("RTC is running!");
DateTime now = rtc.now();
}
}
void loop(){
if ( millis() >= (last_time1 + 1000)){traitement();}
}
void traitement()
{
last_time1=millis();
DateTime now = rtc.now();
val_up = (map (now.minute(), 0, 59, 0, 150));
val_down = (map (now.minute(), 0, 59, 150, 0));
time = ((now.hour() * 100) + now.minute());
//Affichage heure***********raffraichissement toutes les secondes******************************
lcd.setCursor(0, 0) ;
lcd.print(now.hour());
printDigits(now.minute());
printDigits(now.second());
//affichage sur moniteur de la temperature***************************
if (getTemperature(&temp))
{
Serial.print("Temperature : ");
Serial.print(temp);
Serial.write(176);
Serial.write('C');
Serial.println();
}
else
{
}
//Chauffage******************************************************************************
if ((temp < 24) )
{
digitalWrite(chauffage, LOW);
}
else if (temp > 26)
{
digitalWrite(chauffage, HIGH);
}
switch (tour)
{
//***** fonctionnement de la rampe d'eclairage de 13 à 21******
case 0:
tour++;
if ((now.hour() > 12) && (now.hour() < 21))
{
digitalWrite(relais_1, LOW);
lcd.setCursor (0, 1);
lcd.print(" Rampe Led-on ");
}
else
{
digitalWrite(relais_1, HIGH);
lcd.setCursor (0, 1);
lcd.print(" Rampe Led-off ");
}
//**************** Fonctionnement de la pompe led de 11 à 22 h ***
break;
case 1:
tour++;
if ((now.hour() > 10) && (now.hour() < 22))
{
lcd.setCursor (0, 1);
digitalWrite(relais_2, LOW);
lcd.print(" Pompe Led-on ");
}
else
{
lcd.setCursor (0, 1);
digitalWrite(relais_2, HIGH);
lcd.print(" Pompe Led-off ");
}
//****************Led nuit en marche de 21 à 23 h ***************************
break;
case 2:
tour++;
if ((now.hour() > 20) && (now.hour() < 23))
{
lcd.setCursor (0, 1);
digitalWrite(relais_3, LOW);
lcd.print("Led nuit-on ");
}
else
{
lcd.setCursor (0, 1);
digitalWrite(relais_3, HIGH);
lcd.print("Led nuit-off ");
//delay(2000);
}
//*******************Affichage chauffage allumé********************************************************
break;
case 3:
tour++;
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 1);
if (digitalRead(chauffage) == LOW)
{
lcd.print(" Chauffage-on ");
}
else
{
lcd.print(" Chauffage-off ");
}
break;
//Affichage temperature****raffraichissement toutes les 5 secondes*****************************
break;
case 4:
tour=0;
//if ( millis() >= (last_time2 + 5000))
{
lcd.setCursor(10, 0);
// lcd.print("T:");
lcd.print(temp);
lcd.print((char)223);
last_time2 = millis();
}
}
}
void printDigits(int digits)
{
lcd.print(":");
if (digits < 10)
lcd.print('0');
lcd.print(digits);
}
boolean getTemperature(float *temp)
{
byte data[9], addr[8];
if (!ds.search(addr))
{
ds.reset_search();
return false;
}
if (OneWire::crc8(addr, 7) != addr[7])
return false;
if (addr[0] != DS18B20)
return false;
ds.reset();
ds.select(addr);
ds.write(0x44, 1);
delay(800);
ds.reset();
ds.select(addr);
ds.write(0xBE);
for (byte i = 0; i < 9; i++)
data[i] = ds.read();
*temp = ((data[1] << 8) | data[0]) * 0.0625;
return true;
}