bonjour,
le dernier code que j'utilisait etait :
#include "LiquidCrystal.h"
#include "Arduino.h"
#include "Wire.h"
#include "DS1307.h"
LiquidCrystal lcd(7, 2, 3, 4, 5, 6);
int pompe = 8;
int soleil = 9;
int ventilateur = 10;
int rampeled = 11;
int led = 12;
int niveau = 13;
int valeurPWM=0;
int minut;
int heure;
int seconde;
int time;
float sensorPin;
float temp;
float temp1;
float Vact = 0; // variable valeur instantanée
int Fd=20; // facteur de division de la moyenne = moyenne toutes les FD boucles ici 20
long Accm=0; // accumulateur pour moyenne
int Nbcl=0; // compteur de boucles
float vitventilo;
int off;
int printvitvent;
void setup() {
lcd.begin(16,2);
Serial.begin(9600);
pinMode(pompe, OUTPUT);
pinMode(ventilateur, OUTPUT);
pinMode(soleil, OUTPUT);
pinMode(led, OUTPUT);
pinMode(rampeled, OUTPUT);
pinMode(niveau, INPUT);
}
void loop(){
sensorPin = analogRead(0);
Vact = ((sensorPin*0.5)+1.5)*100 ;
Accm=Accm+Vact;
Nbcl ++;
if (Nbcl == Fd) {
temp1 = (Accm / Fd) ;
temp = temp1/100;
Accm= Accm-(Accm/20) ;
Nbcl= 19;
}
else{
temp = (Accm / Nbcl) ;
temp = temp/100;
}
//Récupération de l'heure du DS1307**********************************************************************************************
heure = RTC.get(DS1307_HR,true);
minut = RTC.get(DS1307_MIN,true);
seconde = RTC.get(DS1307_SEC,true);
time = (heure * 100) + minut;
//Affichage ******************************************************************************************
lcd.clear();
lcd.setCursor(0,0);
lcd.print (" AQUA GESTION ");
lcd.setCursor(0,1);
lcd.print(" ");
if (heure < 10)
{
lcd.print("0");
}
lcd.print(heure);
lcd.print("H");
if (minut < 10)
{
lcd.print("0");
}
lcd.print(minut);
lcd.print(" ");
delay (5000);
lcd.setCursor(0,1);
lcd.print(" ");
lcd.print(temp);
lcd.print((char)223);
lcd.print(" ");
delay (5000);
//*****Controle des sorties eclairage *********
//***on-off***** soleil ***
if ((time >= 930) && (time < 1020)){
valeurPWM = map(time, 930, 1019, 0, 255);
analogWrite (soleil, valeurPWM);
lcd.setCursor(0,1);
lcd.print(" + + soleil + + ");
delay(5000);
}
else if ((time >= 2230) && (time < 2300)){
valeurPWM = map(time, 2230, 2259, 255, 0);
analogWrite (soleil, valeurPWM);
lcd.setCursor(0,1);
lcd.print(" - - soleil - - ");
delay(5000);
}
else if ((time >= 1020 ) && (time < 2230)) {
analogWrite(soleil, 255);
}
else {
analogWrite(soleil, 0);
lcd.setCursor(0,1);
lcd.print(" BONNE NUIT ");
delay(5000);
}
//***on-off*****led 1w***
if((time >= 1030) && (time < 2225)){
digitalWrite(led, HIGH);
}
else{
digitalWrite(led, LOW);
}
//***on-off***** ventilateur ***
lcd.setCursor(0,0);
lcd.print(" ");
lcd.print(temp);
lcd.print((char)223);
lcd.print(" ");
if (temp1 > 2725){
temp1 = 2725;
}
if (temp1 < 2676){
temp1 = 2625;
}
vitventilo = map(temp1,2625,2725, 0, 255);
analogWrite (ventilateur, vitventilo);
lcd.setCursor(0,1);
lcd.print("ventilateur ");
off = ((vitventilo*100)/255);
if (off == 0){
lcd.print(" OFF");
delay(5000);
}
else {
printvitvent = ((vitventilo*100)/255);
lcd.print(printvitvent);
lcd.print("% ");
delay(5000);
}
//***on-off***** pompe ***
if (digitalRead (niveau) == HIGH)
{
lcd.setCursor(0,1);
lcd.print("niveau d'eau BAS");
delay(5000);
if ((time >= 800) && (time <= 2359)){
if ((minut % 10)== 0) {
delay (35000);
lcd.setCursor(0,1);
lcd.print(" ajout d'eau ");
digitalWrite(pompe, HIGH);
delay (4500);
digitalWrite(pompe, LOW);
}
}
}
else if (digitalRead (niveau) == LOW){
lcd.setCursor(0,1);
lcd.print("niveau d'eau OK");
delay(5000);
}
}