#include <Wire.h>
#include <RTClib.h>
 
RTC_DS1307 RTC;                  // Declaration du module RTC
/*
Ports utilisés :
Analog Pin 4 = SDA pour ds3231
Analog Pin 5 = SCL pour ds3231
Digital Pin 9 = PWM Blanc
Digital Pin 11 = PWM Full spectrum
Digital pin 3 = relais pour le ventilo

Pour info :
PWM1 = intensité des blancs
PWM2 = intensité des full spectrum
relais = état du relais du ventilo des drivers
*/
int pwm1=9;
int pwm2=11;
int time;
int val_up=0;
int val_down=0;
int relais=3;

void setup() 
{
   Wire.begin();
   RTC.begin();  
   Serial.begin(9600); //initialise la communication pour le DS1307
   analogWrite(pwm1,0); //initialise à 0 les leds blanches
   analogWrite(pwm2,0); //initialise à 0 les leds full spectrum
   pinMode(relais, OUTPUT); //initialise le port du relais en sortie
   digitalWrite(relais, LOW); //le relais est éteint à l'initialisation
}
void loop() 
{
  DateTime now = RTC.now();   // On récupère le temps actuel  
  val_up = (map (now.minute(), 0, 59, 0, 255)); /*permet d’attribuer une valeur d’intensité des leds croissante sur 59 minutes, comprise entre 0 et
  255 (valeur maximale du signal PWM)*/
  val_down = (map (now.minute(), 0, 59, 255, 0)); /*permet d’attribuer une valeur d’intensité des leds décroissante sur 59 minutes, comprise entre
  255 et 0 (valeur minimale du signal PWM */

//****************LEDS FULL SPECTRUM***************************************************
/*pin 11
plage horaire de 9h à 23h
*/
  
  /*
  Pour vérifier l'heure enlever les balises
    Serial.print(now.hour(), DEC);
    Serial.println();
    Serial.print(now.minute(), DEC);
    Serial.println();
    delay(3000);
    si necessaire mise à l'heure du module RTC avec l'exemple
    DS 1307RTC
    Set time
  */
  
  if (now.hour() == 9) 
  { 
  analogWrite (pwm2, val_up); //allumage progressif
  }
else if (now.hour() == 22) 
  { 
  analogWrite (pwm2, val_down); // extinction progressive
  }
else if ((now.hour() > 10 ) && (now.hour() < 21))// allumage max
 { 
  analogWrite(pwm2, 255); 
  }
else
  {
  analogWrite(pwm2, 0);//le reste du temps les leds blanches sont éteintes
  }
//****************LEDS BLANCHES*************************************************
  /*pin 9
  plage horaire de 12h à 21h

  */


  if (now.hour() == 12) //entre 12:00:00 et 12:59:59
  { 
  analogWrite (pwm1, val_up); //allumage progressif
  }
else if (now.hour() == 20) //entre 20:00:00 et 20:59:59
  { 
  analogWrite (pwm1, val_down); // extinction progressive
  }
else if ((now.hour() > 12 ) && (now.hour() < 20))//entre 13:00:00 et 19:59:59 allumage max
 { 
  analogWrite(pwm1, 255); 
  }
else
  {
  analogWrite(pwm1, 0);//le reste du temps les leds blanches sont éteintes
  }
//****************Ventilateur ********************************************
if (pwm1 > 0) //Si les leds blanches sont allumées
  {
  digitalWrite(relais, HIGH);//relais ventilo ON
  }
else 
  {
    digitalWrite(relais, LOW);//relais ventilo OFF
  }
if (pwm2 > 0)//Si les leds full spectrum sont allumées
  {
  digitalWrite(relais, HIGH);//relais ventilo ON
  }
else   {
  digitalWrite(relais, LOW);//relais ventilo OFF
  }
} 

