Code commenté du projet LED

Dependencies:   BSP_DISCO_F746NG

Files at this revision

API Documentation at this revision

Comitter:
treina
Date:
Thu Jun 16 09:58:06 2022 +0000
Parent:
5:071136c3eefa
Commit message:
azd

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 071136c3eefa -r 72febbe3ea91 main.cpp
--- a/main.cpp	Tue Jun 15 19:35:57 2021 +0000
+++ b/main.cpp	Thu Jun 16 09:58:06 2022 +0000
@@ -1,84 +1,349 @@
-/**
- * Notebook page https://os.mbed.com/users/JohnnyK/notebook/how-start-with-the-littlevgl/
- */
-
 #include "mbed.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 "hal_stm_lvgl/touchpad/touchpad.h"
+#include "lv_demo.h"    
+
+#define LVGL_TICK   10                              
+#define TICKER_TIME 10ms                             
+
+
+
+Ticker ticker;                                       
+int PwmSlider; //variable correspondant à la valeur du slider
+
+
+void lv_ticker_func()
+{
+    lv_tick_inc(LVGL_TICK);
+}
+//Déclaration des Pwm
+PwmOut ledR1(D6);
+PwmOut ledR2(D12);
+PwmOut ledB1(D8);
+PwmOut ledB2(D11);
+PwmOut ledV1(D9);
+PwmOut ledV2(D10);
 
-#define LVGL_TICK   10                               //Time tick value for lvgl in ms (1-10msa)
-#define TICKER_TIME 10ms                             //modified to miliseconds
+static void slider_event_cb(lv_event_t * e);
+static lv_obj_t * slider_label;
+static void slider_event_cb(lv_event_t * e)
+
+{
+    lv_obj_t * slider = lv_event_get_target(e);
+    char buf[8];
+    lv_snprintf(buf, sizeof(buf), "%d", (int)lv_slider_get_value(slider));
+    lv_label_set_text(slider_label, buf);
+    PwmSlider = lv_slider_get_value(slider);
+    lv_obj_align_to(slider_label, slider, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
+}
+//Déclaration du slider
+
+static void btnMag_event_cb(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+    lv_obj_t * btn = lv_event_get_target(e);
+    if(code == LV_EVENT_CLICKED) {          //Quand le bouton est appuyé on execute le code en dessous
+        ledB1.write(0.4*PwmSlider/1000.0);
+        ledR1.write(1*PwmSlider/1000.0);
+        ledV1.write(0*PwmSlider/1000.0);
+    }
+}
+//Evenement détectant l'appui du bouton (même structure pour tout les boutons)
 
-Ticker ticker;                                       //Ticker for lvgl                    
- 
-/*
- * 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). 
- * It is required for the internal timing of LittlevGL.
- */
-void lv_ticker_func(){
-    lv_tick_inc(LVGL_TICK); 
+static void btnBle_event_cb(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+    lv_obj_t * btn = lv_event_get_target(e);
+    if(code == LV_EVENT_CLICKED) {         
+        ledB1.write(1*PwmSlider/1000.0);
+        ledR1.write(0*PwmSlider/1000.0);
+        ledV1.write(0*PwmSlider/1000.0);
+        
+
+    }
+}
+
+static void btnVer_event_cb(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+    lv_obj_t * btn = lv_event_get_target(e);
+    if(code == LV_EVENT_CLICKED) {
+        ledB1.write(0*PwmSlider/1000.0);
+        ledR1.write(0*PwmSlider/1000.0);
+        ledV1.write(1*PwmSlider/1000.0);
+        
+      
+    }
+}
+
+ static void btnJau_event_cb(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+    lv_obj_t * btn = lv_event_get_target(e);
+    if(code == LV_EVENT_CLICKED) {
+        ledB1.write(0*PwmSlider/1000.0);
+        ledR1.write(1*PwmSlider/1000.0);
+        ledV1.write(0.7*PwmSlider/1000.0);
+        
+      
+    }
+}
+
+ static void btnOra_event_cb(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+    lv_obj_t * btn = lv_event_get_target(e);
+    if(code == LV_EVENT_CLICKED) {
+        ledB1.write(0*PwmSlider/1000.0);
+        ledR1.write(1*PwmSlider/1000.0);
+        ledV1.write(0.200*PwmSlider/1000.0);
+        
+      
+    }
 }
 
-#ifndef LV_DEMO_H
-static void event_handler(lv_event_t* event)
+ static void btnBla_event_cb(lv_event_t * e)
 {
-    lv_event_code_t code = lv_event_get_code(event);
+    lv_event_code_t code = lv_event_get_code(e);
+    lv_obj_t * btn = lv_event_get_target(e);
+    if(code == LV_EVENT_CLICKED) {
+        ledB1.write(1*PwmSlider/1000.0);
+        ledR1.write(1*PwmSlider/1000.0);
+        ledV1.write(1*PwmSlider/1000.0);
+        
+      
+    }
+}
+
+ static void btnRou_event_cb(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+    lv_obj_t * btn = lv_event_get_target(e);
     if(code == LV_EVENT_CLICKED) {
-        printf("Clicked\n");
+        ledB1.write(0*PwmSlider/1000.0);
+        ledR1.write(1*PwmSlider/1000.0);
+        ledV1.write(0*PwmSlider/1000.0);
+        
+      
     }
-    else if(code == LV_EVENT_VALUE_CHANGED) {
-        printf("Toggled\n");
+}
+
+ static void btnCya_event_cb(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+    lv_obj_t * btn = lv_event_get_target(e);
+    if(code == LV_EVENT_CLICKED) {
+        ledB1.write(1*PwmSlider/1000.0);
+        ledR1.write(0.2*PwmSlider/1000.0);
+        ledV1.write(1*PwmSlider/1000.0);
+        
+      
+    }
+}
+
+ static void btnVio_event_cb(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+    lv_obj_t * btn = lv_event_get_target(e);
+    if(code == LV_EVENT_CLICKED) {
+        ledB1.write(0.9*PwmSlider/1000.0);
+        ledR1.write(0.6*PwmSlider/1000.0);
+        ledV1.write(0.2*PwmSlider/1000.0);
+        
+      
     }
 }
-#endif
+
+ static void btnPom_event_cb(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+    lv_obj_t * btn = lv_event_get_target(e);
+    if(code == LV_EVENT_CLICKED) {             
+        ledB1.write(0.05*PwmSlider/1000.0);
+        ledR1.write(0.5*PwmSlider/1000.0);
+        ledV1.write(1*PwmSlider/1000.0);
+        
+      
+    }
+}
+
+ static void btnMul_event_cb(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+    lv_obj_t * btn = lv_event_get_target(e);
+    if(code == LV_EVENT_CLICKED) {
+        
+        ledB1.write(1*PwmSlider/1000.0);
+        ledR1.write(0*PwmSlider/1000.0);
+        ledV1.write(0*PwmSlider/1000.0);
+        wait_us(1000000);
+        ledB1.write(0*PwmSlider/1000.0);
+        ledR1.write(1*PwmSlider/1000.0);
+        ledV1.write(0*PwmSlider/1000.0);
+        wait_us(1000000);
+        ledB1.write(0*PwmSlider/1000.0);
+        ledR1.write(0*PwmSlider/1000.0);
+        ledV1.write(1*PwmSlider/1000.0);
+        wait_us(1000000);
+        ledB1.write(0.4*PwmSlider/1000.0);
+        ledR1.write(1*PwmSlider/1000.0);
+        ledV1.write(0*PwmSlider/1000.0);
+        wait_us(1000000);
+        ledB1.write(0*PwmSlider/1000.0);
+        ledR1.write(1*PwmSlider/1000.0);
+        ledV1.write(0.7*PwmSlider/1000.0);
+        wait_us(1000000);
+        ledB1.write(0*PwmSlider/1000.0);
+        ledR1.write(1*PwmSlider/1000.0);
+        ledV1.write(0.200*PwmSlider/1000.0);
+        wait_us(1000000);
+        ledB1.write(1*PwmSlider/1000.0);
+        ledR1.write(1*PwmSlider/1000.0);
+        ledV1.write(1*PwmSlider/1000.0);
+         wait_us(1000000);
+         ledB1.write(1*PwmSlider/1000.0);
+        ledR1.write(0.2*PwmSlider/1000.0);
+        ledV1.write(1*PwmSlider/1000.0);
+        wait_us(1000000);
+        ledB1.write(0.05*PwmSlider/1000.0);
+        ledR1.write(0.5*PwmSlider/1000.0);
+        ledV1.write(1*PwmSlider/1000.0);
+        wait_us(1000000);
+        ledB1.write(0.9*PwmSlider/1000.0);
+        ledR1.write(0.6*PwmSlider/1000.0);
+        ledV1.write(0.2*PwmSlider/1000.0);
+        wait_us(1000000);
+        ledB1.write(1*PwmSlider/1000.0);
+        ledR1.write(1*PwmSlider/1000.0);
+        ledV1.write(1*PwmSlider/1000.0);
+        wait_us(1000000);
+        
+      
+    }
+}
+
 // main() runs in its own thread in the OS
 int main()
 {
-    printf("LVGL-"); 
+    printf("LVGL-");
     lv_init();                                              //Initialize the LVGL
-    tft_init();                                             //Initialize diplay 
+    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 * slider = lv_slider_create(lv_scr_act());     //Création du slider au milieu de l'écran
+    lv_slider_set_range(slider,0,1000);
+    lv_slider_set_value(slider, 1000, LV_ANIM_ON);
+    lv_obj_center(slider);
+    lv_obj_add_event_cb(slider, slider_event_cb, LV_EVENT_VALUE_CHANGED, NULL);
+    /*Create a label below the slider*/
+    slider_label = lv_label_create(lv_scr_act());
+    lv_label_set_text(slider_label, "1000");
+    lv_obj_align_to(slider_label, slider, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
+     
+    lv_obj_t * btnMag = lv_btn_create(lv_scr_act());     //Ajoute un bouton à l'écran
+    lv_obj_set_pos(btnMag, 10, 10);                            //Position du bouton
+    lv_obj_set_size(btnMag, 120, 50);                          //Taille du bouton
+    lv_obj_add_event_cb(btnMag, btnMag_event_cb, LV_EVENT_ALL, NULL);           
+    lv_obj_t * labelMag = lv_label_create(btnMag);          //Ajoute un label au bouton
+    lv_label_set_text(labelMag, "Magenta");                     //Texte du label donc du bouton
+    lv_obj_center(labelMag);
+    
+    lv_obj_t * btnBle = lv_btn_create(lv_scr_act());    //Ajoute un bouton à l'écran
+    lv_obj_set_pos(btnBle, 130, 10);                            //Position du bouton
+    lv_obj_set_size(btnBle, 120, 50);                          //Taille du bouton
+    lv_obj_add_event_cb(btnBle, btnBle_event_cb, LV_EVENT_ALL, NULL);           
+    lv_obj_t * labelBle = lv_label_create(btnBle);          //Ajoute un label au bouton
+    lv_label_set_text(labelBle, "Bleu");                     //Texte du label donc du bouton
+    lv_obj_center(labelBle);
+    
+    lv_obj_t * btnVer = lv_btn_create(lv_scr_act());    //Ajoute un bouton à l'écran
+    lv_obj_set_pos(btnVer, 250, 10);                            //Position du bouton
+    lv_obj_set_size(btnVer, 120, 50);                          //Taille du bouton
+    lv_obj_add_event_cb(btnVer, btnVer_event_cb, LV_EVENT_ALL, NULL);           
+    lv_obj_t * labelVer = lv_label_create(btnVer);          //Ajoute un label au bouton
+    lv_label_set_text(labelVer, "Vert");                     //Texte du label donc du bouton
+    lv_obj_center(labelVer);
+    
+    lv_obj_t * btnJau = lv_btn_create(lv_scr_act());     //Ajoute un bouton à l'écran
+    lv_obj_set_pos(btnJau, 370, 10);                            //Position du bouton
+    lv_obj_set_size(btnJau, 120, 50);                          //Taille du bouton
+    lv_obj_add_event_cb(btnJau, btnJau_event_cb, LV_EVENT_ALL, NULL);           
+    lv_obj_t * labelJau = lv_label_create(btnJau);          //Ajoute un label au bouton
+    lv_label_set_text(labelJau, "Jaune");                     //Texte du label donc du bouton
+    lv_obj_center(labelJau);
+    
+    lv_obj_t * btnOra = lv_btn_create(lv_scr_act());    //Ajoute un bouton à l'écran
+    lv_obj_set_pos(btnOra, 10, 100);                            //Position du bouton
+    lv_obj_set_size(btnOra, 120, 50);                          //Taille du bouton
+    lv_obj_add_event_cb(btnOra, btnOra_event_cb, LV_EVENT_ALL, NULL);           
+    lv_obj_t * labelOra = lv_label_create(btnOra);          //Ajoute un label au bouton
+    lv_label_set_text(labelOra, "Orange");                     //Texte du label donc du bouton
+    lv_obj_center(labelOra);
     
-    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
+    lv_obj_t * btnBla = lv_btn_create(lv_scr_act());    //Ajoute un bouton à l'écran
+    lv_obj_set_pos(btnBla, 10, 200);                            //Position du bouton
+    lv_obj_set_size(btnBla, 120, 50);                          //Taille du bouton
+    lv_obj_add_event_cb(btnBla, btnBla_event_cb, LV_EVENT_ALL, NULL);           
+    lv_obj_t * labelBla = lv_label_create(btnBla);          //Ajoute un label au bouton
+    lv_label_set_text(labelBla, "Blanc");                     //Texte du label donc du bouton
+    lv_obj_center(labelBla);
+    
+    lv_obj_t * btnRou = lv_btn_create(lv_scr_act());    //Ajoute un bouton à l'écran
+    lv_obj_set_pos(btnRou, 130, 200);                            //Position du bouton
+    lv_obj_set_size(btnRou, 120, 50);                          //Taille du bouton
+    lv_obj_add_event_cb(btnRou, btnRou_event_cb, LV_EVENT_ALL, NULL);           
+    lv_obj_t * labelRou = lv_label_create(btnRou);          //Ajoute un label au bouton
+    lv_label_set_text(labelRou, "Rouge");                     //Texte du label donc du bouton
+    lv_obj_center(labelRou);
+    
+    lv_obj_t * btnCya = lv_btn_create(lv_scr_act());     //Ajoute un bouton à l'écran
+    lv_obj_set_pos(btnCya, 250, 200);                            //Position du bouton
+    lv_obj_set_size(btnCya, 120, 50);                          //Taille du bouton
+    lv_obj_add_event_cb(btnCya, btnCya_event_cb, LV_EVENT_ALL, NULL);           
+    lv_obj_t * labelCya = lv_label_create(btnCya);          //Ajoute un label au bouton
+    lv_label_set_text(labelCya, "Cyan");                     //Texte du label donc du bouton
+    lv_obj_center(labelCya);
+    
+    lv_obj_t * btnVio = lv_btn_create(lv_scr_act());     //Ajoute un bouton à l'écran
+    lv_obj_set_pos(btnVio, 370, 200);                            //Position du bouton
+    lv_obj_set_size(btnVio, 120, 50);                          //Taille du bouton
+    lv_obj_add_event_cb(btnVio, btnVio_event_cb, LV_EVENT_ALL, NULL);           
+    lv_obj_t * labelVio = lv_label_create(btnVio);          //Ajoute un label au bouton
+    lv_label_set_text(labelVio, "Violet");                     //Texte du label donc du bouton
+    lv_obj_center(labelVio);
+    
+    lv_obj_t * btnPom = lv_btn_create(lv_scr_act());     //Ajoute un bouton à l'écran
+    lv_obj_set_pos(btnPom, 370, 100);                            //Position du bouton
+    lv_obj_set_size(btnPom, 120, 50);                          //Taille du bouton
+    lv_obj_add_event_cb(btnPom, btnPom_event_cb, LV_EVENT_ALL, NULL);           
+    lv_obj_t * labelPom = lv_label_create(btnPom);          //Ajoute un label au bouton
+    lv_label_set_text(labelPom, "Pomme");                     //Texte du label donc du bouton
+    lv_obj_center(labelPom);
+    
+    lv_obj_t * btnMul = lv_btn_create(lv_scr_act());    //Ajoute un bouton à l'écran
+    lv_obj_set_pos(btnMul, 500, 10);                            //Position du bouton
+    lv_obj_set_size(btnMul, 120, 50);                          //Taille du bouton
+    lv_obj_add_event_cb(btnMul, btnMul_event_cb, LV_EVENT_ALL, NULL);           
+    lv_obj_t * labelMul = lv_label_create(btnMul);          //Ajoute un label au bouton
+    lv_label_set_text(labelMul, "Multi");                     //Texte du label donc du bouton
+    lv_obj_center(labelMul);
+    
+    //Déclaration des périodes des LEDs
+    ledR1.period_us(500);
+    ledR2.period_us(500);
+    ledB1.period_us(500);
+    ledB2.period_us(500);
+    ledV1.period_us(500);
+    ledV2.period_us(500);
 
-    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); 
+    while(1) {
+        
+        lv_task_handler();
+
+        thread_sleep_for(LVGL_TICK);
+        printf("%d\r\n", lv_slider_get_value(slider));
+
     }
-}
\ No newline at end of file
+}