Skip to content

Commit d87a67e

Browse files
feat: implement brightness slider callback
1 parent 93f6033 commit d87a67e

File tree

16 files changed

+809
-37
lines changed

16 files changed

+809
-37
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
build/*
2-
.vscode/*
2+
.vscode/*
3+
.DS_Store

CMakeLists.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,8 @@ cmake_minimum_required(VERSION 3.20.0)
44
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
55
project(Esp32SmartWatch)
66

7-
target_sources(app PRIVATE src/main.c)
7+
file(GLOB_RECURSE app_sources src/*.c)
8+
9+
target_sources(app PRIVATE ${app_sources})
810
target_include_directories(app PRIVATE inc)
11+

prj.conf

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,18 @@ CONFIG_DISPLAY_LOG_LEVEL_ERR=y
99

1010
# Log Configurations
1111
CONFIG_LOG=y
12-
CONFIG_LV_USE_LOG=y
12+
CONFIG_LV_USE_LOG=n
1313

1414
# Shell Configurations
15-
CONFIG_SHELL=y
16-
CONFIG_LV_Z_SHELL=y
17-
CONFIG_PWM_SHELL=y
15+
# CONFIG_SHELL=y
16+
# CONFIG_LV_Z_SHELL=y
17+
# CONFIG_PWM_SHELL=y
1818

1919
# LVGL Configurations
2020
CONFIG_LVGL=y
21-
CONFIG_LV_USE_LABEL=y
22-
CONFIG_LV_USE_BTN=y
21+
CONFIG_LV_FONT_MONTSERRAT_46=y
22+
CONFIG_LV_FONT_MONTSERRAT_18=y
23+
# CONFIG_LV_Z_POINTER_KSCAN_MSGQ_COUNT=1
2324

2425
# PWM Configurations
2526
CONFIG_PWM=y

src/main.c

Lines changed: 4 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,10 @@
1515
#include <zephyr/kernel.h>
1616
#include <zephyr/logging/log.h>
1717
#include <lvgl_input_device.h>
18+
#include "user_interface/ui.h"
1819

19-
#define LOG_LEVEL CONFIG_LOG_DEFAULT_LEVEL
20-
LOG_MODULE_REGISTER(SmartWatch_OS);
20+
LOG_MODULE_REGISTER(SmartWatch_OS, LOG_LEVEL_INF);
2121

22-
static void lv_btn_click_callback(lv_event_t *e) {
23-
LOG_INF("Button clicked");
24-
}
2522

2623
int main(void) {
2724

@@ -31,20 +28,12 @@ int main(void) {
3128
LOG_ERR("Display device is not ready, exiting...");
3229
return 0;
3330
}
34-
LOG_INF("Display device is ready.");
3531

3632
const struct pwm_dt_spec backlight = PWM_DT_SPEC_GET_BY_IDX(DT_NODELABEL(pwm_lcd0), 0);
3733
if (!pwm_is_ready_dt(&backlight)) {
3834
LOG_ERR("PWM device is not ready, exiting...");
3935
return 0;
4036
}
41-
LOG_INF("PWM device is ready.");
42-
43-
// Log PWM backlight information.
44-
LOG_INF("PWM device: %s", backlight.dev->name);
45-
LOG_INF("PWM channel: %d", backlight.channel);
46-
LOG_INF("PWM period: %d", backlight.period);
47-
LOG_INF("PWM flags: %d", backlight.flags);
4837

4938
// Initialize the PWM device.
5039
int ret = pwm_set_dt(&backlight, 500, 250);
@@ -54,27 +43,13 @@ int main(void) {
5443
}
5544

5645
// Initialize the display device with initial GUI.
57-
if (IS_ENABLED(CONFIG_LV_Z_POINTER_INPUT)) {
58-
59-
// Create a button.
60-
lv_obj_t *hello_world_button = lv_btn_create(lv_scr_act());
61-
lv_obj_align(hello_world_button, LV_ALIGN_CENTER, 0, -15);
62-
lv_obj_add_event_cb(hello_world_button,
63-
lv_btn_click_callback,
64-
LV_EVENT_CLICKED, NULL);
65-
// Create a label for the button.
66-
lv_obj_t *hello_world_label = lv_label_create(hello_world_button);
67-
lv_label_set_text(hello_world_label, "Hello world!");
68-
lv_obj_align(hello_world_label, LV_ALIGN_CENTER, 0, 0);
69-
70-
LOG_INF("LVGL initialized.");
71-
}
46+
ui_init();
7247

7348
lv_task_handler();
7449
display_blanking_off(display_dev);
7550

7651
while (1) {
7752
lv_task_handler();
78-
k_sleep(K_MSEC(10));
53+
k_usleep(10);
7954
}
8055
}

src/user_interface/CMakeLists.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
SET(SOURCES screens/ui_HomeScreen.c
2+
screens/ui_SettingsScreen.c
3+
screens/ui_CalenderScreen.c
4+
ui.c
5+
components/ui_comp_hook.c
6+
ui_helpers.c
7+
ui_events.c)
8+
9+
add_library(ui ${SOURCES})
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// This file was generated by SquareLine Studio
2+
// SquareLine Studio version: SquareLine Studio 1.3.3
3+
// LVGL version: 8.2.0
4+
// Project name: smart_watch_ui
5+

src/user_interface/filelist.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
screens/ui_HomeScreen.c
2+
screens/ui_SettingsScreen.c
3+
screens/ui_CalenderScreen.c
4+
ui.c
5+
components/ui_comp_hook.c
6+
ui_helpers.c
7+
ui_events.c
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// This file was generated by SquareLine Studio
2+
// SquareLine Studio version: SquareLine Studio 1.3.3
3+
// LVGL version: 8.2.0
4+
// Project name: smart_watch_ui
5+
6+
#include "../ui.h"
7+
8+
void ui_CalenderScreen_screen_init(void)
9+
{
10+
ui_CalenderScreen = lv_obj_create(NULL);
11+
lv_obj_clear_flag( ui_CalenderScreen, LV_OBJ_FLAG_SCROLLABLE ); /// Flags
12+
lv_obj_set_style_bg_color(ui_CalenderScreen, lv_color_hex(0x292831), LV_PART_MAIN | LV_STATE_DEFAULT );
13+
lv_obj_set_style_bg_opa(ui_CalenderScreen, 255, LV_PART_MAIN| LV_STATE_DEFAULT);
14+
15+
ui_CalendarComponent = lv_calendar_create(ui_CalenderScreen);
16+
lv_calendar_set_today_date(ui_CalendarComponent,2024,5,12);
17+
lv_calendar_set_showed_date(ui_CalendarComponent,2024,5);
18+
lv_obj_t *ui_CalendarComponent_header = lv_calendar_header_arrow_create(ui_CalendarComponent);
19+
lv_obj_set_width( ui_CalendarComponent, 190);
20+
lv_obj_set_height( ui_CalendarComponent, 190);
21+
lv_obj_set_align( ui_CalendarComponent, LV_ALIGN_CENTER );
22+
lv_obj_set_style_border_color(ui_CalendarComponent, lv_color_hex(0x000000), LV_PART_MAIN | LV_STATE_DEFAULT );
23+
lv_obj_set_style_border_opa(ui_CalendarComponent, 0, LV_PART_MAIN| LV_STATE_DEFAULT);
24+
25+
lv_obj_add_event_cb(ui_CalenderScreen, ui_event_CalenderScreen, LV_EVENT_ALL, NULL);
26+
27+
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
// This file was generated by SquareLine Studio
2+
// SquareLine Studio version: SquareLine Studio 1.3.3
3+
// LVGL version: 8.2.0
4+
// Project name: smart_watch_ui
5+
6+
#include "../ui.h"
7+
8+
void ui_HomeScreen_screen_init(void)
9+
{
10+
ui_HomeScreen = lv_obj_create(NULL);
11+
lv_obj_clear_flag( ui_HomeScreen, LV_OBJ_FLAG_SCROLLABLE ); /// Flags
12+
13+
ui_SportSliderBiggerLeft = lv_arc_create(ui_HomeScreen);
14+
lv_obj_set_width( ui_SportSliderBiggerLeft, 200);
15+
lv_obj_set_height( ui_SportSliderBiggerLeft, 200);
16+
lv_obj_set_align( ui_SportSliderBiggerLeft, LV_ALIGN_CENTER );
17+
lv_obj_clear_flag( ui_SportSliderBiggerLeft, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_SCROLL_CHAIN ); /// Flags
18+
lv_arc_set_range(ui_SportSliderBiggerLeft, 0,180);
19+
lv_arc_set_value(ui_SportSliderBiggerLeft, 60);
20+
lv_arc_set_bg_angles(ui_SportSliderBiggerLeft,0,180);
21+
lv_arc_set_rotation(ui_SportSliderBiggerLeft,270);
22+
23+
24+
ui_SportSliderBiggerRight = lv_arc_create(ui_HomeScreen);
25+
lv_obj_set_width( ui_SportSliderBiggerRight, 200);
26+
lv_obj_set_height( ui_SportSliderBiggerRight, 200);
27+
lv_obj_set_align( ui_SportSliderBiggerRight, LV_ALIGN_CENTER );
28+
lv_obj_clear_flag( ui_SportSliderBiggerRight, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_SCROLL_CHAIN ); /// Flags
29+
lv_arc_set_range(ui_SportSliderBiggerRight, 0,180);
30+
lv_arc_set_value(ui_SportSliderBiggerRight, 90);
31+
lv_arc_set_bg_angles(ui_SportSliderBiggerRight,180,300);
32+
lv_arc_set_rotation(ui_SportSliderBiggerRight,270);
33+
34+
lv_obj_set_style_arc_color(ui_SportSliderBiggerRight, lv_color_hex(0x20CA62), LV_PART_INDICATOR | LV_STATE_DEFAULT );
35+
lv_obj_set_style_arc_opa(ui_SportSliderBiggerRight, 255, LV_PART_INDICATOR| LV_STATE_DEFAULT);
36+
37+
lv_obj_set_style_bg_color(ui_SportSliderBiggerRight, lv_color_hex(0x21C863), LV_PART_KNOB | LV_STATE_DEFAULT );
38+
lv_obj_set_style_bg_opa(ui_SportSliderBiggerRight, 255, LV_PART_KNOB| LV_STATE_DEFAULT);
39+
40+
ui_SportSlider = lv_arc_create(ui_HomeScreen);
41+
lv_obj_set_width( ui_SportSlider, 160);
42+
lv_obj_set_height( ui_SportSlider, 160);
43+
lv_obj_set_align( ui_SportSlider, LV_ALIGN_CENTER );
44+
lv_obj_clear_flag( ui_SportSlider, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_SCROLL_CHAIN ); /// Flags
45+
lv_arc_set_value(ui_SportSlider, 30);
46+
lv_arc_set_bg_angles(ui_SportSlider,0,350);
47+
lv_arc_set_rotation(ui_SportSlider,270);
48+
49+
lv_obj_set_style_arc_color(ui_SportSlider, lv_color_hex(0xB41818), LV_PART_INDICATOR | LV_STATE_DEFAULT );
50+
lv_obj_set_style_arc_opa(ui_SportSlider, 255, LV_PART_INDICATOR| LV_STATE_DEFAULT);
51+
52+
lv_obj_set_style_bg_color(ui_SportSlider, lv_color_hex(0xB71B1B), LV_PART_KNOB | LV_STATE_DEFAULT );
53+
lv_obj_set_style_bg_opa(ui_SportSlider, 255, LV_PART_KNOB| LV_STATE_DEFAULT);
54+
55+
ui_ClockText = lv_label_create(ui_HomeScreen);
56+
lv_obj_set_width( ui_ClockText, LV_SIZE_CONTENT); /// 2
57+
lv_obj_set_height( ui_ClockText, LV_SIZE_CONTENT); /// 2
58+
lv_obj_set_align( ui_ClockText, LV_ALIGN_CENTER );
59+
lv_label_set_text(ui_ClockText,"22\n01");
60+
lv_obj_set_style_text_letter_space(ui_ClockText, 5, LV_PART_MAIN| LV_STATE_DEFAULT);
61+
lv_obj_set_style_text_line_space(ui_ClockText, 0, LV_PART_MAIN| LV_STATE_DEFAULT);
62+
lv_obj_set_style_text_align(ui_ClockText, LV_TEXT_ALIGN_AUTO, LV_PART_MAIN| LV_STATE_DEFAULT);
63+
lv_obj_set_style_text_decor(ui_ClockText, LV_TEXT_DECOR_NONE, LV_PART_MAIN| LV_STATE_DEFAULT);
64+
lv_obj_set_style_text_font(ui_ClockText, &lv_font_montserrat_46, LV_PART_MAIN| LV_STATE_DEFAULT);
65+
66+
lv_obj_add_event_cb(ui_HomeScreen, ui_event_HomeScreen, LV_EVENT_ALL, NULL);
67+
68+
}
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
// This file was generated by SquareLine Studio
2+
// SquareLine Studio version: SquareLine Studio 1.3.3
3+
// LVGL version: 8.2.0
4+
// Project name: smart_watch_ui
5+
6+
#include "../ui.h"
7+
8+
void ui_SettingsScreen_screen_init(void)
9+
{
10+
ui_SettingsScreen = lv_obj_create(NULL);
11+
lv_obj_clear_flag( ui_SettingsScreen, LV_OBJ_FLAG_SCROLLABLE ); /// Flags
12+
13+
ui_SettingsTitle = lv_label_create(ui_SettingsScreen);
14+
lv_obj_set_width( ui_SettingsTitle, LV_SIZE_CONTENT); /// 1
15+
lv_obj_set_height( ui_SettingsTitle, LV_SIZE_CONTENT); /// 1
16+
lv_obj_set_x( ui_SettingsTitle, 0 );
17+
lv_obj_set_y( ui_SettingsTitle, -90 );
18+
lv_obj_set_align( ui_SettingsTitle, LV_ALIGN_CENTER );
19+
lv_label_set_text(ui_SettingsTitle,"Settings");
20+
lv_obj_set_style_text_font(ui_SettingsTitle, &lv_font_montserrat_18, LV_PART_MAIN| LV_STATE_DEFAULT);
21+
22+
ui_BackgroundPanel = lv_obj_create(ui_SettingsScreen);
23+
lv_obj_set_width( ui_BackgroundPanel, 243);
24+
lv_obj_set_height( ui_BackgroundPanel, 156);
25+
lv_obj_set_x( ui_BackgroundPanel, -2 );
26+
lv_obj_set_y( ui_BackgroundPanel, 12 );
27+
lv_obj_set_align( ui_BackgroundPanel, LV_ALIGN_CENTER );
28+
lv_obj_clear_flag( ui_BackgroundPanel, LV_OBJ_FLAG_SCROLLABLE ); /// Flags
29+
30+
ui_BrightnessSlider = lv_slider_create(ui_SettingsScreen);
31+
lv_slider_set_value( ui_BrightnessSlider, 100, LV_ANIM_OFF);
32+
if (lv_slider_get_mode(ui_BrightnessSlider)==LV_SLIDER_MODE_RANGE ) lv_slider_set_left_value( ui_BrightnessSlider, 0, LV_ANIM_OFF);
33+
lv_obj_set_width( ui_BrightnessSlider, 100);
34+
lv_obj_set_height( ui_BrightnessSlider, 10);
35+
lv_obj_set_x( ui_BrightnessSlider, 48 );
36+
lv_obj_set_y( ui_BrightnessSlider, -35 );
37+
lv_obj_set_align( ui_BrightnessSlider, LV_ALIGN_CENTER );
38+
39+
lv_obj_set_style_shadow_width(ui_BrightnessSlider, 1, LV_PART_KNOB| LV_STATE_DEFAULT);
40+
lv_obj_set_style_shadow_spread(ui_BrightnessSlider, 1, LV_PART_KNOB| LV_STATE_DEFAULT);
41+
lv_obj_set_style_shadow_ofs_x(ui_BrightnessSlider, 2, LV_PART_KNOB| LV_STATE_DEFAULT);
42+
lv_obj_set_style_shadow_ofs_y(ui_BrightnessSlider, 2, LV_PART_KNOB| LV_STATE_DEFAULT);
43+
44+
ui_WiFiSettings = lv_dropdown_create(ui_SettingsScreen);
45+
lv_dropdown_set_options( ui_WiFiSettings, "Przystan na Kawe\nKOCMARLI\nTest" );
46+
lv_dropdown_set_text( ui_WiFiSettings, "None");
47+
lv_obj_set_width( ui_WiFiSettings, 100);
48+
lv_obj_set_height( ui_WiFiSettings, LV_SIZE_CONTENT); /// 1
49+
lv_obj_set_x( ui_WiFiSettings, 50 );
50+
lv_obj_set_y( ui_WiFiSettings, 1 );
51+
lv_obj_set_align( ui_WiFiSettings, LV_ALIGN_CENTER );
52+
lv_obj_add_flag( ui_WiFiSettings, LV_OBJ_FLAG_SCROLL_ON_FOCUS ); /// Flags
53+
lv_obj_clear_flag( ui_WiFiSettings, LV_OBJ_FLAG_CLICKABLE ); /// Flags
54+
55+
56+
57+
ui_BrightnessLabel = lv_label_create(ui_SettingsScreen);
58+
lv_obj_set_width( ui_BrightnessLabel, LV_SIZE_CONTENT); /// 1
59+
lv_obj_set_height( ui_BrightnessLabel, LV_SIZE_CONTENT); /// 1
60+
lv_obj_set_x( ui_BrightnessLabel, -60 );
61+
lv_obj_set_y( ui_BrightnessLabel, -35 );
62+
lv_obj_set_align( ui_BrightnessLabel, LV_ALIGN_CENTER );
63+
lv_label_set_text(ui_BrightnessLabel,"Brightness");
64+
65+
ui_WiFiLabel = lv_label_create(ui_SettingsScreen);
66+
lv_obj_set_width( ui_WiFiLabel, LV_SIZE_CONTENT); /// 1
67+
lv_obj_set_height( ui_WiFiLabel, LV_SIZE_CONTENT); /// 1
68+
lv_obj_set_x( ui_WiFiLabel, -38 );
69+
lv_obj_set_y( ui_WiFiLabel, 0 );
70+
lv_obj_set_align( ui_WiFiLabel, LV_ALIGN_CENTER );
71+
lv_label_set_text(ui_WiFiLabel,"WiFi");
72+
73+
ui_VersionText = lv_label_create(ui_SettingsScreen);
74+
lv_obj_set_width( ui_VersionText, LV_SIZE_CONTENT); /// 1
75+
lv_obj_set_height( ui_VersionText, LV_SIZE_CONTENT); /// 1
76+
lv_obj_set_x( ui_VersionText, -1 );
77+
lv_obj_set_y( ui_VersionText, 72 );
78+
lv_obj_set_align( ui_VersionText, LV_ALIGN_CENTER );
79+
lv_label_set_text(ui_VersionText,"Version: 0.1.0");
80+
81+
lv_obj_add_event_cb(ui_BrightnessSlider, ui_event_BrightnessSlider, LV_EVENT_ALL, NULL);
82+
lv_obj_add_event_cb(ui_WiFiSettings, ui_event_WiFiSettings, LV_EVENT_ALL, NULL);
83+
lv_obj_add_event_cb(ui_SettingsScreen, ui_event_SettingsScreen, LV_EVENT_ALL, NULL);
84+
85+
}

0 commit comments

Comments
 (0)