Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: BSP_DISCO_F746NG
Revision 6:72febbe3ea91, committed 2022-06-16
- 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 |
--- 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
+}