"je penche sur un défaut d'alim et sa tire trop sur le nono lors des déclenchements relais."
nono ?
quelle solution ?
un transfo + puissant ? (actuellement 12v 7a)
#include "LiquidCrystal.h"
#include "WProgram.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 brassage = 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;
void setup() {
lcd.begin(16,2);
Serial.begin(9600);
pinMode(pompe, OUTPUT);
pinMode(ventilateur, OUTPUT);
pinMode(soleil, OUTPUT);
pinMode(led, OUTPUT);
pinMode(brassage, 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.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 >= 9300) && (time < 1045)){
valeurPWM = map(time, 930, 1044, 0, 255);
analogWrite (soleil, valeurPWM);
lcd.setCursor(0,1);
lcd.print(" + + soleil + + ");
delay(5000);
}
else if ((time >= 2215) && (time < 2300)){
valeurPWM = map(time, 2215, 2259, 255, 0);
analogWrite (soleil, valeurPWM);
lcd.setCursor(0,1);
lcd.print(" - - soleil - - ");
delay(5000);
}
else if ((time >= 1045 ) && (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 >= 1040) && (time < 2235)){
digitalWrite(led, HIGH);
}
else{
digitalWrite(led, LOW);
}
//***on-off***** brassage ***
if((time >= 1045) && (time < 2230)){
digitalWrite(brassage, HIGH);
}
else{
digitalWrite(brassage, LOW);
}
//***on-off***** ventilateur ***
lcd.setCursor(0,0);
lcd.print(" ");
lcd.print(temp);
lcd.print((char)223);
lcd.print(" ");
if (temp1 > 2900){
temp1 = 2900;
}
if (temp1 < 2620){
temp1 = 2620;
}
vitventilo = map(temp1,2620,2900, 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 {
lcd.print((vitventilo*100)/255);
lcd.print("% ");
delay(5000);
}
//***on-off***** pompe ***
if (digitalRead (niveau) == HIGH)
{
lcd.setCursor(0,1);
lcd.print("niveau d'eau BAS");
delay(5000);
if ((minut % 10)== 0) {
lcd.setCursor(0,1);
lcd.print(" ajout d'eau ");
digitalWrite(pompe, HIGH);
delay (2000);
digitalWrite(pompe, LOW);
}
}
else if (digitalRead (niveau) == LOW){
lcd.setCursor(0,1);
lcd.print("niveau d'eau OK");
delay(5000);
digitalWrite(pompe, LOW);
}
}