65 double rawTemp = md.getTemp();
66 lv_coord_t currentTemp = (lv_coord_t)rawTemp;
68 std::rotate(md.history.begin(), md.history.begin() + 1, md.history.end());
69 md.history.back() = currentTemp;
72 snprintf(buf,
sizeof(buf),
"%s\n%d°C", md.name.c_str(), currentTemp);
73 lv_label_set_text(md.label, buf);
76 if (nowOverheating != md.isOverheating) {
77 md.isOverheating = nowOverheating;
79 lv_obj_set_style_bg_color(md.btn, lv_color_hex(0xD32F2F), 0);
81 lv_obj_set_style_bg_color(md.btn, lv_color_hex(0x2A3D8F), 0);
98 rd_view_t* motor_view = rd_view_create(
"Motors");
100 lv_obj_t* parent = rd_view_obj(motor_view);
101 lv_obj_set_style_bg_color(parent, lv_color_hex(0x1E1E1E), 0);
103 lv_obj_t* btn_container = lv_obj_create(parent);
104 lv_obj_set_size(btn_container, LV_PCT(100), LV_PCT(100));
105 lv_obj_set_style_bg_opa(btn_container, 0, 0);
106 lv_obj_set_style_border_width(btn_container, 0, 0);
108 lv_obj_set_layout(btn_container, LV_LAYOUT_FLEX);
109 lv_obj_set_flex_flow(btn_container, LV_FLEX_FLOW_ROW_WRAP);
110 lv_obj_set_flex_align(btn_container, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
123 md.btn = lv_btn_create(btn_container);
124 lv_obj_set_size(md.btn, 100, 100);
125 lv_obj_set_style_radius(md.btn, 8, 0);
126 lv_obj_set_style_bg_color(md.btn, lv_color_hex(0x2A3D8F), 0);
127 lv_obj_set_style_shadow_width(md.btn, 0, 0);
128 lv_obj_clear_flag(md.btn, LV_OBJ_FLAG_SCROLLABLE);
129 lv_obj_add_event_cb(md.btn,
motor_click_cb, LV_EVENT_CLICKED, &md);
131 md.label = lv_label_create(md.btn);
132 lv_label_set_text(md.label, md.name.c_str());
133 lv_obj_align(md.label, LV_ALIGN_TOP_MID, 0, 15);
134 lv_obj_set_style_text_align(md.label, LV_TEXT_ALIGN_CENTER, 0);
135 lv_obj_set_style_text_color(md.label, lv_color_hex(0xFFFFFF), 0);
137 lv_obj_t* vent = lv_obj_create(md.btn);
138 lv_obj_set_size(vent, 50, 25);
139 lv_obj_align(vent, LV_ALIGN_BOTTOM_MID, 0, -12);
140 lv_obj_set_style_bg_color(vent, lv_color_hex(0x111111), 0);
141 lv_obj_set_style_bg_opa(vent, 100, 0);
142 lv_obj_set_style_border_width(vent, 1, 0);
143 lv_obj_set_style_border_color(vent, lv_color_hex(0x000000), 0);
144 lv_obj_clear_flag(vent, LV_OBJ_FLAG_CLICKABLE);
145 lv_obj_clear_flag(vent, LV_OBJ_FLAG_SCROLLABLE);
150 lv_obj_set_style_bg_color(
modal_overlay, lv_color_hex(0x000000), 0);
159 lv_obj_set_style_bg_color(
chart_modal, lv_color_hex(0x222222), 0);
160 lv_obj_set_style_border_color(
chart_modal, lv_color_hex(0x555555), 0);
167 lv_obj_set_style_text_color(
modal_title, lv_color_hex(0xFFFFFF), 0);
170 lv_obj_set_size(close_btn, 60, 30);
171 lv_obj_align(close_btn, LV_ALIGN_TOP_RIGHT, 0, -10);
172 lv_obj_t* close_lbl = lv_label_create(close_btn);
173 lv_label_set_text(close_lbl,
"Close");
174 lv_obj_center(close_lbl);
175 lv_obj_add_event_cb(close_btn,
close_modal_cb, LV_EVENT_CLICKED, NULL);
179 lv_obj_align(
temp_chart, LV_ALIGN_BOTTOM_MID, 0, 0);
180 lv_chart_set_type(
temp_chart, LV_CHART_TYPE_LINE);
182 lv_chart_set_range(
temp_chart, LV_CHART_AXIS_PRIMARY_Y, 10, 60);
183 lv_chart_set_axis_tick(
temp_chart, LV_CHART_AXIS_PRIMARY_Y, 10, 5, 8, 1,
true, 40);