Projet Station Domotique MONTEIRO Lenny

Dependencies:   BSP_DISCO_F746NG ds3231

Files at this revision

API Documentation at this revision

Comitter:
lenny14
Date:
Wed Jun 15 17:36:19 2022 +0000
Parent:
5:071136c3eefa
Commit message:
Commit initiale

Changed in this revision

ds3231.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ds3231.lib	Wed Jun 15 17:36:19 2022 +0000
@@ -0,0 +1,1 @@
+http://os.mbed.com/teams/Maxim-Integrated/code/ds3231/#11630748e2f2
--- a/main.cpp	Tue Jun 15 19:35:57 2021 +0000
+++ b/main.cpp	Wed Jun 15 17:36:19 2022 +0000
@@ -2,17 +2,138 @@
  * Notebook page https://os.mbed.com/users/JohnnyK/notebook/how-start-with-the-littlevgl/
  */
 
-#include "mbed.h"
+#include "lv_area.h"
+#include "lv_btn.h"
+#include "lv_disp.h"
 #include "lvgl/lvgl.h"
 #include "hal_stm_lvgl/tft/tft.h"
 #include "hal_stm_lvgl/touchpad/touchpad.h" 
-#include "lv_demo.h"    /*Comment/uncomment will switch between LVGL demo and Hello word example*/
+#include "ds3231.h"
+#include "mbed.h"
+
+static BufferedSerial pc(USBTX, USBRX);// Pour le debug
 
 #define LVGL_TICK   10                               //Time tick value for lvgl in ms (1-10msa)
 #define TICKER_TIME 10ms                             //modified to miliseconds
 
+int heure_actuel = 0;// heure actuel du provenant du RTC externe
+
+int heure_debut1 = 0;// heure de debut en h
+int heure_debut2 = 0;// heure de debut en h
+int heure_debut3 = 0;// heure de debut en h
+
+int heure_fin1 = 0;// heure de debut en h
+int heure_fin2 = 0;// heure de debut en h
+int heure_fin3 = 0;// heure de debut en h
+
+int select = 0;//0 = rien 1 = selection heure de debut 2 = selection heure de fin lors du clic sur les boutons concernés
+
+
+//         SDA  SCL
+Ds3231 rtc(D14, D15);// initialisation des broches I2C du RTC
+
+ds3231_time_t temps;//structure contenant l'heure/minute/sec actuel
+
 Ticker ticker;                                       //Ticker for lvgl                    
- 
+
+DigitalOut out1(A0);//Sortie1
+DigitalOut out2(A1);//Sortie2
+DigitalOut out3(A2);//Sortie3
+
+//pointeur btn1
+lv_obj_t * btn1;
+
+//pointeur btn2
+lv_obj_t * btn2;
+
+//pointeur btn3
+lv_obj_t * btn3;
+
+/* Boutons pour incrémenter/décrémenter les heures */
+
+//pointeur btn_incrementer1
+lv_obj_t * btn_inc1;
+
+//pointeur btn_decrementer1
+lv_obj_t * btn_dec1;
+
+//pointeur btn_incrementer2
+lv_obj_t * btn_inc2;
+
+//pointeur btn_decrementer2
+lv_obj_t * btn_dec2;
+
+//pointeur btn_incrementer3
+lv_obj_t * btn_inc3;
+
+//pointeur btn_decrementer3
+lv_obj_t * btn_dec3;
+
+/* A l'heure de début le relai est alimenté, et à l'heure de fin le relai n'est plus alimenté */
+
+//pointeur bouton heure de début1
+lv_obj_t * btn_heure_debut1;
+
+//pointeur bouton heure de fin1
+lv_obj_t * btn_heure_fin1;
+
+//pointeur bouton heure de début2
+lv_obj_t * btn_heure_debut2;
+
+//pointeur bouton heure de fin2
+lv_obj_t * btn_heure_fin2;
+
+//pointeur bouton heure de début3
+lv_obj_t * btn_heure_debut3;
+
+//pointeur bouton heure de fin3
+lv_obj_t * btn_heure_fin3;
+
+//pointeur label heure de début1
+lv_obj_t * label_heure_debut1;
+
+//pointeur label heure de début2
+lv_obj_t * label_heure_debut2;
+
+//pointeur label heure de début3
+lv_obj_t * label_heure_debut3;
+
+//pointeur label heure de fin1
+lv_obj_t * label_heure_fin1;
+
+//pointeur label heure de début2
+lv_obj_t * label_heure_fin2;
+
+//pointeur label heure de début3
+lv_obj_t * label_heure_fin3;
+
+//pointeur label pour afficher l'heure actuelle
+lv_obj_t * label_affichage_heure;
+
+//pointeur label pour afficher le status de la sortie 1
+lv_obj_t * label_status_1;
+
+//pointeur label pour afficher le status de la sortie 2
+lv_obj_t * label_status_2;
+
+//pointeur label pour afficher le status de la sortie 3
+lv_obj_t * label_status_3;
+
+static lv_style_t style_btn_inc_dec;//style pour tous les boutons inc et dec
+static lv_style_t style_btn_heure;//style pour tous les boutons heure début et fin
+
+ // style bouton1
+static lv_style_t style_btn1;
+static lv_style_t style_btn1_pressed;
+
+// style bouton1
+static lv_style_t style_btn2;
+static lv_style_t style_btn2_pressed;
+
+// style bouton1
+static lv_style_t style_btn3;
+static lv_style_t style_btn3_pressed;
+
 /*
  * Callback function for lvgl timing.
  * Call lv_tick_inc(x) every x milliseconds in a Timer or Task (x should be between 1 and 10). 
@@ -22,63 +143,653 @@
     lv_tick_inc(LVGL_TICK); 
 }
 
-#ifndef LV_DEMO_H
-static void event_handler(lv_event_t* event)
+// event btn1
+static void event_btn1(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+
+    if(code == LV_EVENT_CLICKED) //clic btn
+    {
+        LV_LOG_USER("Clicked");
+        out1 = !out1;
+    }
+}
+
+// event btn2
+static void event_btn2(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+
+    if(code == LV_EVENT_CLICKED) //clic btn
+    {
+        LV_LOG_USER("Clicked");
+        out2 = !out2;
+    }
+}
+
+// event btn3
+static void event_btn3(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+
+    if(code == LV_EVENT_CLICKED) //clic btn
+    {
+        LV_LOG_USER("Clicked");
+        out3 = !out3;
+    }
+}
+
+// event btn_inc1
+static void event_btn_inc1(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+
+    if(code == LV_EVENT_CLICKED) //clic btn
+    {
+        LV_LOG_USER("Clicked");
+        
+        //choix de l'heure à incrémenter(debut ou fin) 
+        if(select == 1)
+        {
+            heure_debut1++;
+        }
+        else if(select == 2)
+        {
+            heure_fin1++;
+        }
+        else
+        {
+            
+        }
+    }
+}
+
+// event btn_inc2
+static void event_btn_inc2(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+
+    if(code == LV_EVENT_CLICKED) //clic btn
+    {
+        LV_LOG_USER("Clicked");
+        
+        //choix de l'heure à incrémenter(debut ou fin 
+        if(select == 1)
+        {
+            heure_debut2++;
+        }
+        else if(select == 2)
+        {
+            heure_fin2++;
+        }
+        else
+        {
+            
+        }
+    }
+}
+
+// event btn_inc3
+static void event_btn_inc3(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+
+    if(code == LV_EVENT_CLICKED) //clic btn
+    {
+        LV_LOG_USER("Clicked");
+        
+        //choix de l'heure à incrémenter(debut ou fin 
+        if(select == 1)
+        {
+            heure_debut3++;
+        }
+        else if(select == 2)
+        {
+            heure_fin3++;
+        }
+        else
+        {
+            
+        }
+    }
+}
+
+// event btn_dec1
+static void event_btn_dec1(lv_event_t * e)
 {
-    lv_event_code_t code = lv_event_get_code(event);
-    if(code == LV_EVENT_CLICKED) {
-        printf("Clicked\n");
+    lv_event_code_t code = lv_event_get_code(e);
+
+    if(code == LV_EVENT_CLICKED) //clic btn
+    {
+        LV_LOG_USER("Clicked");
+        
+        //choix de l'heure à decrémenter(debut ou fin) 
+        if(select == 1)
+        {
+            heure_debut1--;
+        }
+        else if(select == 2)
+        {
+            heure_fin1--;
+        }
+        else
+        {
+            
+        }
+    }
+}
+
+// event btn_dec2
+static void event_btn_dec2(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+
+    if(code == LV_EVENT_CLICKED) //clic btn
+    {
+        LV_LOG_USER("Clicked");
+        
+        //choix de l'heure à decrémenter(debut ou fin) 
+        if(select == 1)
+        {
+            heure_debut2--;
+        }
+        else if(select == 2)
+        {
+            heure_fin2--;
+        }
+        else
+        {
+            
+        }
+    }
+}
+
+// event btn_dec3
+static void event_btn_dec3(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+
+    if(code == LV_EVENT_CLICKED) //clic btn
+    {
+        LV_LOG_USER("Clicked");
+        
+        //choix de l'heure à decrémenter(debut ou fin) 
+        if(select == 1)
+        {
+            heure_debut3--;
+        }
+        else if(select == 2)
+        {
+            heure_fin3--;
+        }
+        else
+        {
+            
+        }
     }
-    else if(code == LV_EVENT_VALUE_CHANGED) {
-        printf("Toggled\n");
+}
+
+// event btn_heure_début1
+static void event_btn_heure_debut1(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+
+    if(code == LV_EVENT_CLICKED) //clic btn
+    {
+        LV_LOG_USER("Clicked");
+        
+        select = 1; //selection de l'heure de debut à incrementer ou à decrementer
+        
+    }
+}
+
+// event btn_heure_début2
+static void event_btn_heure_debut2(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+
+    if(code == LV_EVENT_CLICKED) //clic btn
+    {
+        LV_LOG_USER("Clicked");
+        
+        select = 1; //selection de l'heure de debut à incrementer ou à decrementer
+    }
+}
+
+// event btn_heure_début3
+static void event_btn_heure_debut3(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+
+    if(code == LV_EVENT_CLICKED) //clic btn
+    {
+        LV_LOG_USER("Clicked");
+        
+        select = 1; //selection de l'heure de debut à incrementer ou à decrementer
+    }
+}
+
+// event btn_heure_fin1
+static void event_btn_heure_fin1(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+
+    if(code == LV_EVENT_CLICKED) //clic btn
+    {
+        LV_LOG_USER("Clicked");
+        
+        select = 2; //selection de l'heure de fin à incrementer ou à decrementer
+    }
+}
+
+// event btn_heure_fin2
+static void event_btn_heure_fin2(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+
+    if(code == LV_EVENT_CLICKED) //clic btn
+    {
+        LV_LOG_USER("Clicked");
+        
+        select = 2; //selection de l'heure de fin à incrementer ou à decrementer
+    }
+}
+
+// event btn_heure_fin3
+static void event_btn_heure_fin3(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+
+    if(code == LV_EVENT_CLICKED) //clic btn
+    {
+        LV_LOG_USER("Clicked");
+        select = 2; //selection de l'heure de fin à incrementer ou à decrementer
     }
 }
-#endif
-// main() runs in its own thread in the OS
+
+void Init_Widgets()//Fonction qui initialise les Widgets
+{
+    //Init style btn1
+    lv_style_init(&style_btn1);
+    lv_style_set_bg_color(&style_btn1, lv_color_hex(0x4542f5));//couleur bleu
+
+    //Init style pressed btn1
+    lv_style_init(&style_btn1_pressed);
+    lv_style_set_bg_color(&style_btn1_pressed, lv_color_hex(0xf54242));//couleur rouge quand on appuie sur le btn
+
+    //init btn1
+    btn1 = lv_btn_create(lv_scr_act());//creation du bouton
+    lv_obj_set_size(btn1, 100, 50);//dimention du bouton
+    lv_obj_set_pos(btn1, 60, 50);//position du bouton
+    lv_obj_add_style(btn1, &style_btn1, LV_STATE_DEFAULT);//couleur bleu
+    lv_obj_add_style(btn1, &style_btn1_pressed, LV_STATE_PRESSED);//couleur rouge quand on appuie sur le btn
+    lv_obj_add_event_cb(btn1, event_btn1, LV_EVENT_ALL, NULL);//ajout de la fonction callback
+
+    //label btn1
+    lv_obj_t * label1 = lv_label_create(btn1);//creation du label du bouton
+    lv_obj_set_align(label1, LV_ALIGN_CENTER);//alignement
+    lv_label_set_text(label1, "SORTIE1");//ajout du texte
+
+////////////////////////////////////////////////////////////////////
+
+
+    //Init style btn2
+    lv_style_init(&style_btn2);
+    lv_style_set_bg_color(&style_btn2, lv_color_hex(0x4542f5));//couleur bleu
+
+    //Init style pressed btn2
+    lv_style_init(&style_btn2_pressed);
+    lv_style_set_bg_color(&style_btn2_pressed, lv_color_hex(0xf54242));//couleur rouge quand on appuie sur le btn
+
+    //init btn2
+    btn2 = lv_btn_create(lv_scr_act());//creation du bouton
+    lv_obj_set_size(btn2, 100, 50);//dimention du bouton
+    lv_obj_set_pos(btn2, 60, 110);//position du bouton
+    lv_obj_add_style(btn2, &style_btn2, LV_STATE_DEFAULT);//couleur bleu
+    lv_obj_add_style(btn2, &style_btn2_pressed, LV_STATE_PRESSED);//couleur rouge quand on appuie sur le btn
+    lv_obj_add_event_cb(btn2, event_btn2, LV_EVENT_ALL, NULL);//ajout de la fonction callback
+
+    //label btn2
+    lv_obj_t * label2 = lv_label_create(btn2);//creation du label du bouton
+    lv_obj_set_align(label2, LV_ALIGN_CENTER);//alignement
+    lv_label_set_text(label2, "SORTIE2");//ajout du texte
+
+////////////////////////////////////////////////////////////////////
+
+
+    //Init style btn3
+    lv_style_init(&style_btn3);
+    lv_style_set_bg_color(&style_btn3, lv_color_hex(0x4542f5));//couleur bleu
+
+    //Init style pressed btn3
+    lv_style_init(&style_btn3_pressed);
+    lv_style_set_bg_color(&style_btn3_pressed, lv_color_hex(0xf54242));//couleur rouge quand on appuie sur le btn
+
+    //init btn3
+    btn3 = lv_btn_create(lv_scr_act());//creation du bouton
+    lv_obj_set_size(btn3, 100, 50);//dimention du bouton
+    lv_obj_set_pos(btn3, 60, 170);//position du bouton
+    lv_obj_add_style(btn3, &style_btn3, LV_STATE_DEFAULT);//couleur bleu
+    lv_obj_add_style(btn3, &style_btn3_pressed, LV_STATE_PRESSED);//couleur rouge quand on appuie sur le btn
+    lv_obj_add_event_cb(btn3, event_btn3, LV_EVENT_ALL, NULL);//ajout de la fonction callback
+
+    //label btn3
+    lv_obj_t * label3 = lv_label_create(btn3);//creation du label du bouton
+    lv_obj_set_align(label3, LV_ALIGN_CENTER);//alignement
+    lv_label_set_text(label3, "SORTIE3");//ajout du texte
+
+////////////////////////////////////////////////////////////////////
+     
+    lv_style_init(&style_btn_inc_dec);//Initialisation du style des boutons dec et inc
+
+////////////////////////////////////////////////////////////////////
+
+    lv_style_set_bg_color(&style_btn_inc_dec, lv_color_hex(0x01a600));//couleur verte pour le style
+    
+    //creation des boutons inc et dec
+    btn_inc1 = lv_btn_create(lv_scr_act());
+    btn_inc2 = lv_btn_create(lv_scr_act());
+    btn_inc3 = lv_btn_create(lv_scr_act());
+
+    btn_dec1 = lv_btn_create(lv_scr_act());
+    btn_dec2 = lv_btn_create(lv_scr_act());
+    btn_dec3 = lv_btn_create(lv_scr_act());
+
+    //ajout du style pour les btn inc et dec
+    lv_obj_add_style(btn_inc1, &style_btn_inc_dec, LV_STATE_DEFAULT);
+    lv_obj_add_style(btn_inc2, &style_btn_inc_dec, LV_STATE_DEFAULT);
+    lv_obj_add_style(btn_inc3, &style_btn_inc_dec, LV_STATE_DEFAULT);
+
+    lv_obj_add_style(btn_dec1, &style_btn_inc_dec, LV_STATE_DEFAULT);
+    lv_obj_add_style(btn_dec2, &style_btn_inc_dec, LV_STATE_DEFAULT);
+    lv_obj_add_style(btn_dec3, &style_btn_inc_dec, LV_STATE_DEFAULT);
+
+    //positionnement et dimensionnement des bouton
+    lv_obj_set_size(btn_inc1, 25, 25);//dimention du bouton
+    lv_obj_set_pos(btn_inc1, 200, 50);//position du bouton
+
+    lv_obj_set_size(btn_inc2, 25, 25);//dimention du bouton
+    lv_obj_set_pos(btn_inc2, 200, 110);//position du bouton
+
+    lv_obj_set_size(btn_inc3, 25, 25);//dimention du bouton
+    lv_obj_set_pos(btn_inc3, 200, 170);//position du bouton
+
+    //label btn_inc1
+    lv_obj_t * label_inc1 = lv_label_create(btn_inc1);//creation du label du bouton
+    lv_obj_set_align(label_inc1, LV_ALIGN_CENTER);//alignement
+    lv_label_set_text(label_inc1, "+");//ajout du texte
+
+    //label btn_inc2
+    lv_obj_t * label_inc2 = lv_label_create(btn_inc2);//creation du label du bouton
+    lv_obj_set_align(label_inc2, LV_ALIGN_CENTER);//alignement
+    lv_label_set_text(label_inc2, "+");//ajout du texte
+
+    //label btn_inc3
+    lv_obj_t * label_inc3 = lv_label_create(btn_inc3);//creation du label du bouton
+    lv_obj_set_align(label_inc3, LV_ALIGN_CENTER);//alignement
+    lv_label_set_text(label_inc3, "+");//ajout du texte
+
+    //positionnement et dimensionnement des bouton
+    lv_obj_set_size(btn_dec1, 25, 25);//dimention du bouton
+    lv_obj_set_pos(btn_dec1, 200, 75);//position du bouton
+
+    lv_obj_set_size(btn_dec2, 25, 25);//dimention du bouton
+    lv_obj_set_pos(btn_dec2, 200, 135);//position du bouton
+
+    lv_obj_set_size(btn_dec3, 25, 25);//dimention du bouton
+    lv_obj_set_pos(btn_dec3, 200, 195);//position du bouton
+
+    //label btn_dec1
+    lv_obj_t * label_dec1 = lv_label_create(btn_dec1);//creation du label du bouton
+    lv_obj_set_align(label_dec1, LV_ALIGN_CENTER);//alignement
+    lv_label_set_text(label_dec1, "-");//ajout du texte
+
+    //label btn_dec2
+    lv_obj_t * label_dec2 = lv_label_create(btn_dec2);//creation du label du bouton
+    lv_obj_set_align(label_dec2, LV_ALIGN_CENTER);//alignement
+    lv_label_set_text(label_dec2, "-");//ajout du texte
+
+    //label btn_dec3
+    lv_obj_t * label_dec3 = lv_label_create(btn_dec3);//creation du label du bouton
+    lv_obj_set_align(label_dec3, LV_ALIGN_CENTER);//alignement
+    lv_label_set_text(label_dec3, "-");//ajout du texte
+
+    //ajout des fonction callback des btn inc et dec
+    lv_obj_add_event_cb(btn_inc1, event_btn_inc1, LV_EVENT_ALL, NULL);
+    lv_obj_add_event_cb(btn_inc2, event_btn_inc2, LV_EVENT_ALL, NULL);
+    lv_obj_add_event_cb(btn_inc3, event_btn_inc3, LV_EVENT_ALL, NULL);
+
+    lv_obj_add_event_cb(btn_dec1, event_btn_dec1, LV_EVENT_ALL, NULL);
+    lv_obj_add_event_cb(btn_dec2, event_btn_dec2, LV_EVENT_ALL, NULL);
+    lv_obj_add_event_cb(btn_dec3, event_btn_dec3, LV_EVENT_ALL, NULL);
+
+///////////////////////////////////////////////////////////////////////////
+
+    lv_style_set_bg_color(&style_btn_heure, lv_color_hex(0xf79e0d));//couleur orange pour le style
+    
+    //creation des boutons heure début/fin
+    btn_heure_debut1 = lv_btn_create(lv_scr_act());
+    btn_heure_debut2 = lv_btn_create(lv_scr_act());
+    btn_heure_debut3 = lv_btn_create(lv_scr_act());
+
+    btn_heure_fin1 = lv_btn_create(lv_scr_act());
+    btn_heure_fin2 = lv_btn_create(lv_scr_act());
+    btn_heure_fin3 = lv_btn_create(lv_scr_act());
+
+    //ajout du style pour les boutons heure début/fin
+    lv_obj_add_style(btn_heure_debut1, &style_btn_heure, LV_STATE_DEFAULT);
+    lv_obj_add_style(btn_heure_debut2, &style_btn_heure, LV_STATE_DEFAULT);
+    lv_obj_add_style(btn_heure_debut3, &style_btn_heure, LV_STATE_DEFAULT);
+
+    lv_obj_add_style(btn_heure_fin1, &style_btn_heure, LV_STATE_DEFAULT);
+    lv_obj_add_style(btn_heure_fin2, &style_btn_heure, LV_STATE_DEFAULT);
+    lv_obj_add_style(btn_heure_fin3, &style_btn_heure, LV_STATE_DEFAULT);
+
+    //positionnement et dimensionnement des bouton
+    lv_obj_set_size(btn_heure_debut1, 100, 50);//dimention du bouton
+    lv_obj_set_pos(btn_heure_debut1, 225, 50);//position du bouton
+
+    lv_obj_set_size(btn_heure_debut2, 100, 50);//dimention du bouton
+    lv_obj_set_pos(btn_heure_debut2, 225, 110);//position du bouton
+
+    lv_obj_set_size(btn_heure_debut3, 100, 50);//dimention du bouton
+    lv_obj_set_pos(btn_heure_debut3, 225, 170);//position du bouton
+
+    lv_obj_set_size(btn_heure_fin1, 100, 50);//dimention du bouton
+    lv_obj_set_pos(btn_heure_fin1, 325, 50);//position du bouton
+
+    lv_obj_set_size(btn_heure_fin2, 100, 50);//dimention du bouton
+    lv_obj_set_pos(btn_heure_fin2, 325, 110);//position du bouton
+
+    lv_obj_set_size(btn_heure_fin3, 100, 50);//dimention du bouton
+    lv_obj_set_pos(btn_heure_fin3, 325, 170);//position du bouton
+
+    
+    //label btn_heure de début1
+    label_heure_debut1 = lv_label_create(btn_heure_debut1);//creation du label du bouton
+    lv_obj_set_align(label_heure_debut1, LV_ALIGN_CENTER);//alignement
+    lv_label_set_text(label_heure_debut1, "0h");//ajout du texte
+
+    //label btn_heure de début2
+    label_heure_debut2 = lv_label_create(btn_heure_debut2);//creation du label du bouton
+    lv_obj_set_align(label_heure_debut2, LV_ALIGN_CENTER);//alignement
+    lv_label_set_text(label_heure_debut2, "0h");//ajout du texte
+
+    //label btn_heure de début1
+    label_heure_debut3 = lv_label_create(btn_heure_debut3);//creation du label du bouton
+    lv_obj_set_align(label_heure_debut3, LV_ALIGN_CENTER);//alignement
+    lv_label_set_text(label_heure_debut3, "0h");//ajout du texte
+
+    //label btn_heure de fin1
+    label_heure_fin1 = lv_label_create(btn_heure_fin1);//creation du label du bouton
+    lv_obj_set_align(label_heure_fin1, LV_ALIGN_CENTER);//alignement
+    lv_label_set_text(label_heure_fin1, "0h");//ajout du texte
+
+    //label btn_heure de début2
+    label_heure_fin2 = lv_label_create(btn_heure_fin2);//creation du label du bouton
+    lv_obj_set_align(label_heure_fin2, LV_ALIGN_CENTER);//alignement
+    lv_label_set_text(label_heure_fin2, "0h");//ajout du texte
+
+    //label btn_heure de début1
+    label_heure_fin3 = lv_label_create(btn_heure_fin3);//creation du label du bouton
+    lv_obj_set_align(label_heure_fin3, LV_ALIGN_CENTER);//alignement
+    lv_label_set_text(label_heure_fin3, "0h");//ajout du texte
+    
+    //ajout des fonction callback des btn heure debut/fin
+    lv_obj_add_event_cb(btn_heure_debut1, event_btn_heure_debut1, LV_EVENT_ALL, NULL);
+    lv_obj_add_event_cb(btn_heure_debut2, event_btn_heure_debut2, LV_EVENT_ALL, NULL);
+    lv_obj_add_event_cb(btn_heure_debut3, event_btn_heure_debut3, LV_EVENT_ALL, NULL);
+
+    lv_obj_add_event_cb(btn_heure_fin1, event_btn_heure_fin1, LV_EVENT_ALL, NULL);
+    lv_obj_add_event_cb(btn_heure_fin2, event_btn_heure_fin2, LV_EVENT_ALL, NULL);
+    lv_obj_add_event_cb(btn_heure_fin3, event_btn_heure_fin3, LV_EVENT_ALL, NULL); 
+    
+//////////////////////////////////////////////////////////////////////////////////////
+    
+    //label affichage de l'heure actuelle
+    label_affichage_heure = lv_label_create(lv_scr_act()); //creation du label 
+    lv_obj_set_pos(label_affichage_heure, 220, 20); //position du labe
+    lv_label_set_text(label_affichage_heure, "00:00:00"); //ajout du texte
+    
+//////////////////////////////////////////////////////////////////////////////////////
+    
+    
+    //label status_1
+    label_status_1 = lv_label_create(lv_scr_act()); //creation du label 
+    lv_obj_set_pos(label_status_1, 17, 65); //position du label
+    lv_label_set_text(label_status_1, "OFF"); //ajout du texte*/
+    
+    //label status_2
+    label_status_2 = lv_label_create(lv_scr_act()); //creation du label 
+    lv_obj_set_pos(label_status_2, 17, 125); //position du label
+    lv_label_set_text(label_status_2, "OFF"); //ajout du texte*/
+    
+    //label status_3
+    label_status_3 = lv_label_create(lv_scr_act()); //creation du label 
+    lv_obj_set_pos(label_status_3, 17, 185); //position du label
+    lv_label_set_text(label_status_3, "OFF"); //ajout du texte*/
+}
+
+void Init_gpio()//Initialisation des sorties
+{
+    out1.write(0);
+    out2.write(0);
+    out3.write(0);
+}
+
 int main()
-{
+{   
+    char text[30] = "";// tableau de caractère à afficher
     printf("LVGL-"); 
     lv_init();                                              //Initialize the LVGL
     tft_init();                                             //Initialize diplay 
     touchpad_init();                                        //Initialize touchpad
     ticker.attach(callback(&lv_ticker_func),TICKER_TIME);   //Attach callback to ticker
 
-#ifdef LV_DEMO_H
-    printf("Demo\n"); 
-    lv_demo_widgets();
-#else
-    printf("Hello world\n");
-    lv_obj_t * label1 = lv_label_create(lv_scr_act());
-    lv_label_set_long_mode(label1, LV_LABEL_LONG_WRAP);     /*Break the long lines*/
-    lv_label_set_recolor(label1, true);                      /*Enable re-coloring by commands in the text*/
-    lv_label_set_text(label1, "#0000ff Hello# #ff00ff world# #ff0000 - the LVGL and MbedOS#");
-    lv_obj_set_width(label1, 150);
-    lv_obj_align(label1, LV_ALIGN_TOP_MID, 0, 20);
-
-    lv_obj_t * label2 = lv_label_create(lv_scr_act());
-    lv_label_set_long_mode(label2, LV_LABEL_LONG_SCROLL_CIRCULAR);     /*Circular scroll*/
-    lv_obj_set_width(label2, 150);
-    lv_label_set_text(label2, "It is a circularly scrolling text. ");
-    lv_obj_align(label2, LV_ALIGN_BOTTOM_MID, 0, 0);
-    
-    lv_obj_t * label;
-    lv_obj_t * btn1 = lv_btn_create(lv_scr_act());
-    lv_obj_add_event_cb(btn1, event_handler, LV_EVENT_ALL, NULL);
-    lv_obj_align(btn1, LV_ALIGN_CENTER, 0, -25);
-    label = lv_label_create(btn1);
-    lv_label_set_text(label, "Button");
-    lv_obj_t * btn2 = lv_btn_create(lv_scr_act());
-    lv_obj_add_event_cb(btn2, event_handler,LV_EVENT_ALL, NULL);
-    lv_obj_align(btn2, LV_ALIGN_CENTER, 0, 25);
-    lv_obj_add_flag(btn2, LV_OBJ_FLAG_CHECKABLE);
-    label = lv_label_create(btn2);
-    lv_label_set_text(label, "Toggled");
-#endif
+    Init_Widgets(); //initialisation Widgets
 
     while (true){
         lv_task_handler(); 
         //Call lv_task_handler() periodically every few milliseconds. 
         //It will redraw the screen if required, handle input devices etc.
         thread_sleep_for(LVGL_TICK); 
+      
+        rtc.get_time(&temps);//lecture de l'heure actuel
+        heure_actuel = temps.hours;//stockage
+        
+        /* Affichage de l'heure actuelle */
+        sprintf(text, "%d:%d:%d", temps.hours, temps.minutes, temps.seconds);
+        lv_label_set_text(label_affichage_heure, text);//affichage
+        
+        /* Affichage des heure de debut et fin sur les label des bouton */ 
+            
+        sprintf(text, "%dh", heure_debut1);//Formatage chaine
+        lv_label_set_text(label_heure_debut1, text);//Affichage de la chaine formaté
+        
+        sprintf(text, "%dh", heure_debut2);//Formatage chaine
+        lv_label_set_text(label_heure_debut2, text);//Affichage de la chaine formaté
+        
+        sprintf(text, "%dh", heure_debut3);//Formatage chaine
+        lv_label_set_text(label_heure_debut3, text);//Affichage de la chaine formaté
+        
+        sprintf(text, "%dh", heure_fin1);//Formatage chaine
+        lv_label_set_text(label_heure_fin1, text);//Affichage de la chaine formaté
+        
+        sprintf(text, "%dh", heure_fin2);//Formatage chaine
+        lv_label_set_text(label_heure_fin2, text);//Affichage de la chaine formaté
+        
+        sprintf(text, "%dh", heure_fin3);//Formatage chaine
+        lv_label_set_text(label_heure_fin3, text);//Affichage de la chaine formaté
+        
+        /* A l'heure de début le relai est alimenté, et à l'heure de fin le relai n'est plus alimenté */
+        
+        if(heure_debut1 == heure_fin1)// si les heure(debut et fin) sont égaux
+        {
+            //on fait rien
+        }
+        else if(heure_actuel == heure_debut1)//si heure actuel est égal à l'heure de début
+        {
+            out1 = 1;//on active le relay
+        }
+        else if(heure_actuel == heure_fin1)//si heure actuel est égal à l'heure de fin
+        {
+            out1 = 0;//on desactive le relay
+        }
+        
+        if(heure_debut2 == heure_fin2)// si les heure(debut et fin) sont égaux
+        {
+            //on fait rien²
+        }
+        else if(heure_actuel == heure_debut2)//si heure actuel est égal à l'heure de début
+        {
+            out2 = 1;//on active le relay
+        }
+        else if(heure_actuel == heure_fin2)//si heure actuel est égal à l'heure de fin
+        {
+            out2 = 0;//on desactive le relay
+        }
+        
+        if(heure_debut3 == heure_fin3)// si les heure(debut et fin) sont égaux
+        {
+            //on fait rien
+        }
+        else if(heure_actuel == heure_debut3)//si heure actuel est égal à l'heure de début
+        {
+            out3 = 1;//on active le relay
+        }
+        else if(heure_actuel == heure_fin3)//si heure actuel est égal à l'heure de fin
+        {
+            out3 = 1;//on desactive le relay
+        }
+        
+        /* Actualisation du status des sorties */
+        
+        if(out1 == 1)// si la sortie est activé
+        {
+            lv_label_set_text(label_status_1, "ON");
+        }
+        else if(out1 == 0)// si la sortie est désactivé
+        {
+            lv_label_set_text(label_status_1, "OFF");
+        }
+        
+        if(out2 == 1)// si la sortie est activé
+        {
+            lv_label_set_text(label_status_2, "ON");
+        }
+        else if(out2 == 0)// si la sortie est désactivé
+        {
+            lv_label_set_text(label_status_2, "OFF");
+        }
+        
+        if(out3 == 1)// si la sortie est activé
+        {
+            lv_label_set_text(label_status_3, "ON");
+        }
+        else if(out3 == 0)// si la sortie est désactivé
+        {
+            lv_label_set_text(label_status_3, "OFF");
+        }
+            
     }
 }
\ No newline at end of file