@@ -23,21 +23,124 @@ void gigaTouchHandler(uint8_t contacts, GDTpoint_t* points) {
2323 }
2424}
2525
26+ /* Button click event callback */
27+ static void btn_event_cb (lv_event_t * e) {
28+ static uint32_t cnt = 1 ;
29+ lv_obj_t * btn = lv_event_get_target (e);
30+ lv_obj_t * label = lv_obj_get_child (btn, 0 );
31+ lv_label_set_text_fmt (label, " %" LV_PRIu32, cnt);
32+ cnt++;
33+ }
34+
35+ /* Slider update value handler */
36+ static void set_slider_val (void * bar, int32_t val) {
37+ lv_bar_set_value ((lv_obj_t *)bar, val, LV_ANIM_ON);
38+ }
39+
2640void setup () {
2741 Serial.begin (115200 );
2842
2943 Display.begin ();
3044 TouchDetector.begin ();
3145 TouchDetector.onDetect (gigaTouchHandler);
3246
33- /* Change the active screen's background color */
34- lv_obj_set_style_bg_color (lv_scr_act (), lv_color_hex (0x03989e ), LV_PART_MAIN);
47+ /* Create a container with grid 2x2 */
48+ static lv_coord_t col_dsc[] = {370 , 370 , LV_GRID_TEMPLATE_LAST};
49+ static lv_coord_t row_dsc[] = {215 , 215 , LV_GRID_TEMPLATE_LAST};
50+ lv_obj_t * cont = lv_obj_create (lv_scr_act ());
51+ lv_obj_set_grid_dsc_array (cont, col_dsc, row_dsc);
52+ lv_obj_set_size (cont, Display.width (), Display.height ());
53+ lv_obj_set_style_bg_color (cont, lv_color_hex (0x03989e ), LV_PART_MAIN);
54+ lv_obj_center (cont);
55+
56+ lv_obj_t * label;
57+ lv_obj_t * obj;
58+
59+ /* [0;0] - Image */
60+ obj = lv_obj_create (cont);
61+ lv_obj_set_grid_cell (obj, LV_GRID_ALIGN_STRETCH, 0 , 1 ,
62+ LV_GRID_ALIGN_STRETCH, 0 , 1 );
63+
64+ LV_IMG_DECLARE (img_arduinologo);
65+ lv_obj_t * img1 = lv_img_create (obj);
66+ lv_img_set_src (img1, &img_arduinologo);
67+ lv_obj_align (img1, LV_ALIGN_CENTER, 0 , 0 );
68+ lv_obj_set_size (img1, 200 , 150 );
69+
70+ /* [1;0] - Checkboxes and button */
71+ obj = lv_obj_create (cont);
72+ lv_obj_set_grid_cell (obj, LV_GRID_ALIGN_STRETCH, 1 , 1 ,
73+ LV_GRID_ALIGN_STRETCH, 0 , 1 );
74+ lv_obj_set_flex_flow (obj, LV_FLEX_FLOW_COLUMN);
75+
76+ lv_obj_t * cb;
77+ cb = lv_checkbox_create (obj);
78+ lv_checkbox_set_text (cb, " Apple" );
79+
80+ cb = lv_checkbox_create (obj);
81+ lv_checkbox_set_text (cb, " Banana" );
82+ lv_obj_add_state (cb, LV_STATE_CHECKED);
83+
84+ static lv_style_t style_radio;
85+ static lv_style_t style_radio_chk;
86+ lv_style_init (&style_radio);
87+ lv_style_set_radius (&style_radio, LV_RADIUS_CIRCLE);
88+ lv_style_init (&style_radio_chk);
89+ lv_style_set_bg_img_src (&style_radio_chk, NULL );
90+
91+ cb = lv_checkbox_create (obj);
92+ lv_checkbox_set_text (cb, " Lemon" );
93+ lv_obj_add_flag (cb, LV_OBJ_FLAG_EVENT_BUBBLE);
94+ lv_obj_add_style (cb, &style_radio, LV_PART_INDICATOR);
95+ lv_obj_add_style (cb, &style_radio_chk, LV_PART_INDICATOR | LV_STATE_CHECKED);
96+
97+ cb = lv_checkbox_create (obj);
98+ lv_checkbox_set_text (cb, " Melon" );
99+ lv_obj_add_flag (cb, LV_OBJ_FLAG_EVENT_BUBBLE);
100+ lv_obj_add_style (cb, &style_radio, LV_PART_INDICATOR);
101+ lv_obj_add_style (cb, &style_radio_chk, LV_PART_INDICATOR | LV_STATE_CHECKED);
102+ lv_obj_add_state (cb, LV_STATE_CHECKED);
103+
104+ lv_obj_t * btn = lv_btn_create (obj);
105+ lv_obj_set_size (btn, 100 , 40 );
106+ lv_obj_center (btn);
107+ lv_obj_add_event_cb (btn, btn_event_cb, LV_EVENT_CLICKED, NULL );
108+
109+ label = lv_label_create (btn);
110+ lv_label_set_text (label, " Click me!" );
111+ lv_obj_center (label);
112+
113+ /* [0;1] - Slider */
114+ obj = lv_obj_create (cont);
115+ lv_obj_set_grid_cell (obj, LV_GRID_ALIGN_STRETCH, 0 , 1 ,
116+ LV_GRID_ALIGN_STRETCH, 1 , 1 );
117+
118+ lv_obj_t * slider = lv_slider_create (obj);
119+ lv_slider_set_value (slider, 75 , LV_ANIM_OFF);
120+ lv_obj_center (slider);
121+ label = lv_label_create (obj);
122+ lv_label_set_text (label, " Drag me!" );
123+ lv_obj_align_to (label, slider, LV_ALIGN_OUT_BOTTOM_MID, 0 , 10 );
124+
125+ /* [1;1] - Bar */
126+ obj = lv_obj_create (cont);
127+ lv_obj_set_grid_cell (obj, LV_GRID_ALIGN_STRETCH, 1 , 1 ,
128+ LV_GRID_ALIGN_STRETCH, 1 , 1 );
129+
130+ lv_obj_t * bar = lv_bar_create (obj);
131+ lv_obj_set_size (bar, 200 , 20 );
132+ lv_obj_center (bar);
133+ lv_bar_set_value (bar, 70 , LV_ANIM_OFF);
35134
36- /* Create a white label, set its text and align it to the center */
37- lv_obj_t * label = lv_label_create (lv_scr_act ());
38- lv_label_set_text (label, " Hello Arduino!" );
39- lv_obj_set_style_text_color (lv_scr_act (), lv_color_hex (0xffffff ), LV_PART_MAIN);
40- lv_obj_align (label, LV_ALIGN_CENTER, 0 , 0 );
135+ lv_anim_t a;
136+ lv_anim_init (&a);
137+ lv_anim_set_exec_cb (&a, set_slider_val);
138+ lv_anim_set_time (&a, 3000 );
139+ lv_anim_set_playback_time (&a, 3000 );
140+ lv_anim_set_var (&a, bar);
141+ lv_anim_set_values (&a, 0 , 100 );
142+ lv_anim_set_repeat_count (&a, LV_ANIM_REPEAT_INFINITE);
143+ lv_anim_start (&a);
41144}
42145
43146void loop () {
0 commit comments