68 double rawTemp = md.getTemp();
69 lv_coord_t currentTemp = (lv_coord_t)rawTemp;
71 std::rotate(md.history.begin(), md.history.begin() + 1, md.history.end());
72 md.history.back() = currentTemp;
75 snprintf(buf,
sizeof(buf),
"%s\n%d°C", md.name.c_str(), currentTemp);
76 lv_label_set_text(md.label, buf);
79 if (nowOverheating != md.isOverheating) {
80 md.isOverheating = nowOverheating;
82 lv_obj_set_style_bg_color(md.btn, lv_color_hex(0xD32F2F), 0);
84 lv_obj_set_style_bg_color(md.btn, lv_color_hex(0x2A3D8F), 0);
101 rd_view_t* motor_view = rd_view_create(
"Motors");
103 lv_obj_t* parent = rd_view_obj(motor_view);
104 lv_obj_set_style_bg_color(parent, lv_color_hex(0x1E1E1E), 0);
106 lv_obj_t* btn_container = lv_obj_create(parent);
107 lv_obj_set_size(btn_container, LV_PCT(100), LV_PCT(100));
108 lv_obj_set_style_bg_opa(btn_container, 0, 0);
109 lv_obj_set_style_border_width(btn_container, 0, 0);
111 lv_obj_set_layout(btn_container, LV_LAYOUT_FLEX);
112 lv_obj_set_flex_flow(btn_container, LV_FLEX_FLOW_ROW_WRAP);
113 lv_obj_set_flex_align(btn_container, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
126 md.btn = lv_btn_create(btn_container);
127 lv_obj_set_size(md.btn, 100, 100);
128 lv_obj_set_style_radius(md.btn, 8, 0);
129 lv_obj_set_style_bg_color(md.btn, lv_color_hex(0x2A3D8F), 0);
130 lv_obj_set_style_shadow_width(md.btn, 0, 0);
131 lv_obj_clear_flag(md.btn, LV_OBJ_FLAG_SCROLLABLE);
132 lv_obj_add_event_cb(md.btn,
motor_click_cb, LV_EVENT_CLICKED, &md);
134 md.label = lv_label_create(md.btn);
135 lv_label_set_text(md.label, md.name.c_str());
136 lv_obj_align(md.label, LV_ALIGN_TOP_MID, 0, 15);
137 lv_obj_set_style_text_align(md.label, LV_TEXT_ALIGN_CENTER, 0);
138 lv_obj_set_style_text_color(md.label, lv_color_hex(0xFFFFFF), 0);
140 lv_obj_t* vent = lv_obj_create(md.btn);
141 lv_obj_set_size(vent, 50, 25);
142 lv_obj_align(vent, LV_ALIGN_BOTTOM_MID, 0, -12);
143 lv_obj_set_style_bg_color(vent, lv_color_hex(0x111111), 0);
144 lv_obj_set_style_bg_opa(vent, 100, 0);
145 lv_obj_set_style_border_width(vent, 1, 0);
146 lv_obj_set_style_border_color(vent, lv_color_hex(0x000000), 0);
147 lv_obj_clear_flag(vent, LV_OBJ_FLAG_CLICKABLE);
148 lv_obj_clear_flag(vent, LV_OBJ_FLAG_SCROLLABLE);
153 lv_obj_set_style_bg_color(
modal_overlay, lv_color_hex(0x000000), 0);
162 lv_obj_set_style_bg_color(
chart_modal, lv_color_hex(0x222222), 0);
163 lv_obj_set_style_border_color(
chart_modal, lv_color_hex(0x555555), 0);
170 lv_obj_set_style_text_color(
modal_title, lv_color_hex(0xFFFFFF), 0);
173 lv_obj_set_size(close_btn, 60, 30);
174 lv_obj_align(close_btn, LV_ALIGN_TOP_RIGHT, 0, -10);
175 lv_obj_t* close_lbl = lv_label_create(close_btn);
176 lv_label_set_text(close_lbl,
"Close");
177 lv_obj_center(close_lbl);
178 lv_obj_add_event_cb(close_btn,
close_modal_cb, LV_EVENT_CLICKED, NULL);
182 lv_obj_align(
temp_chart, LV_ALIGN_BOTTOM_MID, 0, 0);
183 lv_chart_set_type(
temp_chart, LV_CHART_TYPE_LINE);
185 lv_chart_set_range(
temp_chart, LV_CHART_AXIS_PRIMARY_Y, 10, 60);
186 lv_chart_set_axis_tick(
temp_chart, LV_CHART_AXIS_PRIMARY_Y, 10, 5, 8, 1,
true, 40);