Nouveau code

Publié le par masterbalby.aqua.over-blog.com

Voila le nouveau code fonctionnant correctement.

Ne plus utiliser l'ancien disponible sur le blog

##################################################

 

#include <Time.h>

#include <LiquidCrystal.h>

#include <WProgram.h>

#include <Wire.h>

#include <DS1307.h>

 

/*

Arduino Masterbalby Controller

 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 = LCD

 Digital Pin 7 = LCD

 Digital Pin 8 = Relais Chauffage

 Digital Pin 10 = Relais moon_light

 Digital Pin 9 = PWM day_light 2

 Digital Pin 11 = PWM day_light 1

 Digital Pin 16 = Bouton poussoir 1 day light

 Digital Pin 15 = Bouton poussoir 2 chauffage

 */

 

//LiquidCrystal lcd(rs, enable, d4, d5, d6, d7)

LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

int sensorPin = 0;

int chauffage = 8;

int moon_light = 10;

int pwm1 = 11;

int pwm2 = 9;

int heater_on_temp = 24;  //allume chauffage à cette température

int heater_off_temp = 26; //éteint le chauffage à cette température

int moon_on_time = 2015;  //allume les  moon lights à cette heure (en temps_perso)

int moon_off_time = 2300;  //éteint les moon lights à cette heure (en temps_perso)

int minut;

int heure; 

int temps_perso;

int minute_perso;

int BP1=16; //interrupteur Day_light 

int BP2=15; //interrupteur Chauffage

int val1=0;

int val2=0;

 

void setup() {

  RTC.stop();

  RTC.set(DS1307_SEC,01);        //réglage secondes

  RTC.set(DS1307_MIN,57);        //réglage minutes

  RTC.set(DS1307_HR,19);         //réglage heures

  RTC.set(DS1307_DOW,3);         //réglage jour de la semaine

  RTC.set(DS1307_DATE,22);       //réglage date

  RTC.set(DS1307_MTH,12);         //réglage mois

  RTC.set(DS1307_YR,10);          //réglage année

  RTC.start();

 

  lcd.begin(16, 2);

  delay(10);

  pinMode(chauffage, OUTPUT);  // digital pin pour chauffage en sortie

  pinMode(moon_light, OUTPUT);  // digital pin pour moon light en sortie

  lcd.print("MasterBalby 3.4");

  lcd.setCursor(0, 1) ;

  lcd.print("Gestion AquaRium");

  delay(4000);

  lcd.clear();

  delay(10);

  pinMode(BP1, INPUT); //met la broche en entree 

  digitalWrite(BP1, HIGH) ; // activation du pullup de la broche en entrée

  pinMode(BP2, INPUT); //met la broche en entree 

  digitalWrite(BP2, HIGH) ; // activation du pullup de la broche en entrée

}

 

void loop(){

 

  // map(value, fromLow, fromHigh, toLow, toHigh)

  val1 = (map ((minut * 60), 0, 3540, 0, 255));

  val2 = (map ((minut * 60), 0, 3540, 255, 0));

 

  //Récupérer l'heure du DS1307**********************************************************************************************

  heure = RTC.get(DS1307_HR,true);  

  minut = RTC.get(DS1307_MIN,false);

  temps_perso = (heure * 100) + minut;  //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.setCursor(6,0);

  lcd.print("Temp : ");

  delay(10);

  lcd.print(temp); 

  lcd.println("C");  

 

  //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(200);

 

  //Controles des sorties ***************************************************************************************

 

  //****************Chauffage

  if((temp < heater_on_temp) || (digitalRead(BP2)==LOW)) {     

    digitalWrite(chauffage, HIGH);

  }  

  else if (temp > heater_off_temp)

  {  

    digitalWrite(chauffage, LOW);

  }

 

  //****************Day Lights 1 **********************************************************************************

  if ((heure == 15) && (minut >= 1)) { // entre 15:01 et 15:59:59

    analogWrite (pwm1, val1); // allumage progressif

  }

  else if ((heure == 20) && (minut >= 1)) { // entre 20:01 et 20:59:59

    analogWrite (pwm1, val2); // extinction progressive

  }   

  else if ((heure > 15 ) && (heure < 20)) {

    analogWrite(pwm1, 255);

  }

  else if ((((heure > 0  && heure < 15)) && (digitalRead(BP1)==LOW)) || (((heure > 20  && heure < 24)) && (digitalRead(BP1)==LOW)) || ((heure == 0) && (digitalRead(BP1)==LOW))){

    analogWrite(pwm1, 255);  

  }

  else if ((((heure > 0  && heure < 15)) && (digitalRead(BP1)==HIGH)) || (((heure > 20  && heure < 24)) && (digitalRead(BP1)==HIGH)) || ((heure == 0) && (digitalRead(BP1)==HIGH))){

    analogWrite(pwm1, 0);  

  }

 

  //****************Day Lights 2 **********************************************************************************

  if ((heure == 15) && (minut >= 1)) { // entre 15:01 et 15:59:59

    analogWrite (pwm2, val1); // allumage progressif

  }

  else if ((heure == 20) && (minut >= 1)) { // entre 20:01 et 20:59:59

    analogWrite (pwm2, val2); // extinction progressive

  }   

  else if ((heure > 15 ) && (heure < 20)) {

    analogWrite(pwm2, 255);

  }

  else if ((((heure > 0  && heure < 15)) && (digitalRead(BP1)==LOW)) || (((heure > 20  && heure < 24)) && (digitalRead(BP1)==LOW)) || ((heure == 0) && (digitalRead(BP1)==LOW))){

    analogWrite(pwm2, 255);  

  }

  else if ((((heure > 0  && heure < 15)) && (digitalRead(BP1)==HIGH)) || (((heure > 20  && heure < 24)) && (digitalRead(BP1)==HIGH)) || ((heure == 0) && (digitalRead(BP1)==HIGH))){

    analogWrite(pwm2, 0);  

  }

 

  //****************Moon Lights****************************************************************************

  if(moon_on_time > temps_perso  || moon_off_time <= temps_perso){

    digitalWrite(moon_light, LOW);

  }

  else{

    digitalWrite(moon_light, HIGH);

  }

 

  //Affichage chauffage allumé********************************************************

  lcd.setCursor(0,1);

  if(digitalRead(chauffage) == HIGH)

  {

    lcd.println("Chauffage ON    ");

  }

  else

  {

    lcd.println("Chauffage OFF   ");

  }

}

 

 

 

 

 

 

 

Commenter cet article