Alors voila mon projet avance bien.
J'ai l'heure, le capteur de température enclenche ou non le chauffage du bac, j'allume et éteints à heures fixes mes deux rampes leds.
J'ai par contre un soucis
j'aimerais rajouter soit un interrupteur ou un bouton poussoir pour pouvoir allumer la rampe jour avant son allumage automatique.
Avec mon code si on allume manuellement une fois ça fonctionne.
On peut eteindre la rampe manuellement.
Par contre après quand la rampe s'allume automatiquement elle se met à clignoter toutes les secondes et l'allumage manuel n'est plus possible.
Voila mon code
#include <LiquidCrystal.h>
#include <WProgram.h>
#include <Wire.h>
#include <DS1307.h>
/*
Arduino Masterbalby Controller
Analog Pin 4 = SDA pour ds1307
Analog Pin 5 = SCL pour ds1307
Analog Pin 0 = Température Sensor
Digital Pin 15 = Relais chauffage
Digital Pin 16 = Relais Day Light
Digital Pin 17 = Relais Moon Light
*/
//LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int sensorPin = 0;
int chauffage = 15;
int day_light = 16;
int moon_light = 17;
int heater_on_temp = 19; //allume chauffage à cette température
int heater_off_temp = 22; //éteint le chauffage à cette température
int lights_on_time = 1001; //allume les day lights à cette heure (en temps_perso)
int lights_off_time = 1003; //éteint les day lights à cette heure (en temps_perso)
int moon_on_time = 1002; //allume les moon lights à cette heure (en temps_perso)
int moon_off_time = 1004; //éteint les moon lights à cette heure (en temps_perso)
int minute;
int heure;
int seconde;
int date;
int mois;
int annee;
int temps_perso;
const int APPUI=0; // constante état du BP - appui sur niveau bas
//const int PAS_APPUI=1; // constante état du BP - relâché sur niveau haut
const int BP=6; //declaration constante de broche
int ETAT_BP; // variable d'état du bouton poussoir
void setup() {
Serial.begin(9600);
RTC.stop();
RTC.set(DS1307_SEC,00); //réglage secondes
RTC.set(DS1307_MIN,00); //réglage minutes
RTC.set(DS1307_HR,10); //réglage heures (military)
RTC.set(DS1307_DOW,2); //réglage jour de la semaine
RTC.set(DS1307_DATE,15); //réglage date
RTC.set(DS1307_MTH,11); //réglage mois
RTC.set(DS1307_YR,10); //réglage année
RTC.start();
//lcd.begin(16, 2);
pinMode(chauffage, OUTPUT); // digital pin pour chauffage en sortie
pinMode(day_light, OUTPUT); // digital pin pour day light en sortie
pinMode(moon_light, OUTPUT); // digital pin pour moon light en sortie
//lcd.print("MasterBalby 1.0");
//lcd.print("Gestion Aqua");
//delay(2000);
pinMode(BP, INPUT); //met la broche en entree
digitalWrite(BP, HIGH) ; // activation du pullup de la broche en entrée
}
void loop(){
//Récupérer l'heure du DS1307**********************************************************************************************
heure = RTC.get(DS1307_HR,true);
minute = 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) + minute; //creation temps_perso
//Récupérer la température du LM35 ***************************************************************************************
int reading = analogRead(sensorPin);
float voltage = reading * 5.0 / 1024;
int temp = voltage * 100 ;
//Affichage température*****************************************************************************
//lcd.begin(0,0);
Serial.print(temp);
Serial.println(" degres");
//Affichage heure******************************************************************************************
Serial.print(RTC.get(DS1307_HR,true));
Serial.print(":");
Serial.print(RTC.get(DS1307_MIN,false));
Serial.print(":");
Serial.print(RTC.get(DS1307_SEC,false));
delay(1000);
//Controles des sorties ***************************************************************************************
//****************Chauffage
if(temp < heater_on_temp){ // allume le chauffage si la température relevée est inférieure à heater_on_temp
digitalWrite(chauffage, HIGH);
}
if(temp > heater_off_temp){ // éteint le chauffage si la température relevée est supérieure à heater_on_temp
digitalWrite(chauffage, LOW);
}
//****************Day Lights**********************************************************************************
if(lights_on_time > temps_perso || lights_off_time <= temps_perso)
// if((ETAT_BP==APPUI) && lights_on_time > temps_perso || lights_off_time <= temps_perso)
{
digitalWrite(day_light, LOW);
Serial.print(" -Jour OFF- ");
}
else
{
digitalWrite(day_light, HIGH);
Serial.print(" -Jour ON- ");
}
//****************Moon Lights****************************************************************************
if(moon_on_time > temps_perso || moon_off_time <= temps_perso){
digitalWrite(moon_light, LOW);
Serial.print(" -Nuit OFF- ");
}
else{
digitalWrite(moon_light, HIGH);
Serial.print(" -Nuit ON- ");
}
//Affichage chauffage allumé********************************************************
//lcd.begin(2,0);
if(digitalRead(chauffage) == HIGH)
{
Serial.println(" -Chauffage ON- ");
}
else
{
Serial.println(" -Chauffage OFF- ");
}
//**********************Allumage manuel avec bouton poussoir rampe jour***************************
ETAT_BP=digitalRead(BP);
if (ETAT_BP==APPUI)
{
digitalWrite(day_light,1); // allume la LED
}
else
{
digitalWrite(day_light,0); // éteint la LED
}
}
A votre bon coeur....