@@ -23,21 +23,124 @@ void gigaTouchHandler(uint8_t contacts, GDTpoint_t* points) {
23
23
}
24
24
}
25
25
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
+
26
40
void setup () {
27
41
Serial.begin (115200 );
28
42
29
43
Display.begin ();
30
44
TouchDetector.begin ();
31
45
TouchDetector.onDetect (gigaTouchHandler);
32
46
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,
10000
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);
35
134
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);
41
144
}
42
145
43
146
void loop () {
0 commit comments