Bonjour et merci pour toutes vos réponses.
Alors pour tout vous dire .. je ne suis pas un expert et certain message ont été pour moi du "martien".
j'ai poser cette question car j'ai un problème sur mon installation.
j'ai fabriquer un boitier pour gestion d'un aquarium.
j'ai un code fonctionnel même si on ma dit a plusieurs reprise qu'il n’était pas optimiser ... mais faute d'avoir réussi a faire tourné correctement un code optimisé, je me contente de celui ci." si au passage quelqu’un s'avait le faire, je ne suis pas contre ... "
Mon problème c'est que, sans s'avoir pourquoi ni quand, je me retrouve avec soit un Ecran bleu sans indication, soit plein de caractère incohérent.
cela parvient des fois en 3h comme en 3 jours ... mais cela ne gêne en rien le bon fonctionnement de tout mes appareils ...
je suis obliger de reteindre tout et tout repart normalement.
je voulait donc qu'a intervalle régulier il redémarre même ci je pence qu'il serait préférable de trouver la cause mais mes connaissance ne me le permet pas
je vous met mon code si quelqu’un trouvait la faille.
ou une autre solution pour palier a se problème.
Merci d'avance a tous
#include "Time.h"
#include "LiquidCrystal.h"
#include "WProgram.h"
#include "Wire.h"
#include "DS1307.h"
/*
sorti /entre Arduino
Analog Pin 0 = Température Sensor
Analog Pin 4 = SDA pour ds1307
Analog Pin 5 = SCL pour ds1307
Digital Pin 2 = LCD
Digital Pin 3 = LCD
Digital Pin 4 = LCD
Digital Pin 5 = LCD
Digital Pin 6 = power led
Digital Pin 7 = ventilateur
Digital pin 9 = rouge
Digital pin 10 = blanc
Digital Pin 11 = LCD
Digital Pin 12 = LCD
Digital Pin 8 = bleu uv
*/
//Configuration des Pin de cablage**********************
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int sensorPin = 0;
int power_led = 6;
int bleu_uv = 8;
int rouge = 10;
int blanc = 9;
int ventilateur = 7;
int time;
float temp;
int timerPWM = 0;
int valeurPWM=0;
float GAMMA_CORRECTION = 2.2;
float PWMStep = 0;
int SeuilMini = 15;
//Configuration des heures allumage/extinction ( format HHMM )**********************
int bleu_uv_on_time = 1930;
int bleu_uv_off_time = 2359;
int ventilateur_on_temp = 27;
int ventilateur_off_temp = 26;
int minut;
int heure;
int seconde;
int date;
int mois;
int annee;
int temps_perso;
//Configuration de l'heure ( pour modifier l'heure de votre Arduino, enlevez les /* et */ puis une foi le programe envoyé, remettez les )**********************
void setup() {
/*
RTC.stop();
RTC.set(DS1307_SEC,30); //réglage secondes
RTC.set(DS1307_MIN,37); //réglage minutes
RTC.set(DS1307_HR,8); //réglage heures
RTC.set(DS1307_DOW,6); //réglage jour de la semaine
RTC.set(DS1307_DATE,15); //réglage date
RTC.set(DS1307_MTH,9); //réglage mois
RTC.set(DS1307_YR,12); //réglage année
RTC.start();
*/
//Configuration des entrées/sorties**********************
pinMode(ventilateur, OUTPUT); // digital pin ventilateur 1
pinMode(bleu_uv, OUTPUT); // digital pin pour bleu uv
pinMode(blanc, OUTPUT); // digital pin pour blanc
pinMode(rouge, OUTPUT); // digital pin pour rouge
pinMode(power_led, OUTPUT); // digital pin pour power led
lcd.begin(16, 2);
Serial.begin(9600);
}
void loop(){
//Récupération de l'heure du DS1307**********************************************************************************************
heure = RTC.get(DS1307_HR,true);
minut = RTC.get(DS1307_MIN,false);
seconde = RTC.get(DS1307_SEC,false);
date = RTC.get(DS1307_DATE,false);
mois = RTC.get(DS1307_MTH,false);
annee = RTC.get(DS1307_YR,false);
temps_perso = (heure * 100) + minut;
//Affichage heure******************************************************************************************
lcd.setCursor(0,0);
if (heure < 10)
{
lcd.print("0");
}
lcd.print(RTC.get(DS1307_HR,true));
lcd.print("H");
if (minut < 10)
{
lcd.print("0");
}
lcd.print(RTC.get(DS1307_MIN,false));
lcd.print(" ");
delay (100);
//Récupération de la température du LM35 ***************************************************************************************
temp = analogRead(sensorPin);
temp = (temp * 0.538);
//Affichage température*****************************************************************************
lcd.setCursor(10,0);
lcd.print(temp);
lcd.print((char)223);
//****************ventilateur
if(temp > ventilateur_on_temp){
digitalWrite(ventilateur, HIGH);
}
if(temp < ventilateur_off_temp){
digitalWrite(ventilateur, LOW);
}
//****Affichage ventilateur ********
lcd.setCursor(0,1);
if(digitalRead(ventilateur) == HIGH)
{
lcd.println("ventilateur ON ");
int millis (5000);
}
else
{
lcd.println("ventilateur OFF ");
int millis (5000);
}
//*****Controle des sorties eclairage *********
//**on-off******* bleu uv *************
if(bleu_uv_on_time > temps_perso || bleu_uv_off_time <= temps_perso){
digitalWrite(bleu_uv, LOW);
}
else{
digitalWrite(bleu_uv, HIGH);
}
//***on-off***** rouge ***
if (heure == 8) {
PWMStep = 255 / 59;
timerPWM = minut-60;
valeurPWM = (int)(timerPWM * PWMStep);
analogWrite (rouge, valeurPWM);
lcd.setCursor(0,1);
lcd.print(" + + ROUGE + + ");
delay(2000);
}
else if ((heure == 20) && (minut >30)) { // entre 20:00 et 20:59:59
PWMStep = 255 / 29;
timerPWM = 30-minut;
valeurPWM = (int)(timerPWM * PWMStep);
analogWrite (rouge, valeurPWM);
lcd.setCursor(0,1);
lcd.print(" - - ROUGE - - ");
delay(2000);
}
else if ((heure >= 9 ) && (heure < 21)) {
analogWrite(rouge, 255);
lcd.setCursor(0,1);
lcd.print("ROUGE on ");
delay(2000);
}
else if (heure <= 21) {
analogWrite(rouge, 0);
}
//***on-off***** blanc ***
if ((heure == 8) && (minut >30)) {
PWMStep = 255 / 29;
timerPWM = minut-30;
valeurPWM = (int)(timerPWM * PWMStep);
analogWrite (blanc, valeurPWM);
lcd.setCursor(0,1);
lcd.print(" + + BLANC + + ");
delay(2000);
}
else if (heure == 20) { // entre 20:00 et 20:59:59
PWMStep = 255 / 60;
timerPWM = 60-minut;
valeurPWM = (int)(timerPWM * PWMStep);
analogWrite (blanc, valeurPWM);
lcd.setCursor(0,1);
lcd.print(" - - BLANC - - ");
delay(2000);
}
else if ((heure >= 9 ) && (heure < 21)) {
analogWrite(blanc, 255);
lcd.setCursor(0,1);
lcd.print("BLANC on ");
delay(2000);
}
else if (heure <= 21) {
analogWrite(blanc, 0);
}
//***on-off***** power led ***
if (heure == 9) {
PWMStep = 255 / 59;
timerPWM = minut-60;
valeurPWM = (int)(timerPWM * PWMStep);
analogWrite (power_led, valeurPWM);
if( valeurPWM < SeuilMini ) valeurPWM = 0;
lcd.setCursor(0,1);
lcd.print(" + POWER led + ");
delay(2000);
}
else if (heure == 20) { // entre 20:00 et 20:59:59
PWMStep = 255 / 60;
timerPWM = 60-minut;
valeurPWM = (int)(timerPWM * PWMStep);
analogWrite (power_led, valeurPWM);
if( valeurPWM < SeuilMini ) valeurPWM = 0;
lcd.setCursor(0,1);
lcd.print(" - POWER led - ");
delay(2000);
}
else if ((heure >= 10 ) && (heure < 21)) {
analogWrite(power_led, 255);
lcd.setCursor(0,1);
lcd.print("POWER led on ");
delay(2000);
}
else if (heure <= 21) {
analogWrite(power_led, 0);
}
}