Version is good
This commit is contained in:
@@ -141,65 +141,106 @@ void setValuetoArc(ARC arc, float value) {
|
|||||||
lv_obj_set_style_arc_color(arc.arc, lv_palette_main(LV_PALETTE_RED), LV_PART_INDICATOR);
|
lv_obj_set_style_arc_color(arc.arc, lv_palette_main(LV_PALETTE_RED), LV_PART_INDICATOR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#define CONTAINER_WIDTH SCREEN_WIDTH
|
||||||
|
#define CONTAINER_HEIGHT SCREEN_HEIGHT-145
|
||||||
|
#define LEFTAXIS_WIDTH 25
|
||||||
|
#define RIGHTAXIS_WIDTH 15
|
||||||
|
#define CHART_WIDTH (CONTAINER_WIDTH - LEFTAXIS_WIDTH - RIGHTAXIS_WIDTH - 40)
|
||||||
|
#define CHART_HEIGHT (CONTAINER_HEIGHT)
|
||||||
|
|
||||||
void drawChart() {
|
void drawChart() {
|
||||||
Serial.println("draw_chart ");
|
Serial.println("draw_chart ");
|
||||||
|
|
||||||
// Create a container to display the chart and scale
|
// Create a container to display the chart and scale
|
||||||
lv_obj_t * container_row = lv_obj_create(lv_screen_active());
|
lv_obj_t * container_row = lv_obj_create(lv_screen_active());
|
||||||
lv_obj_set_size(container_row, SCREEN_WIDTH-10, SCREEN_HEIGHT-145);
|
lv_obj_set_size(container_row, CONTAINER_WIDTH, CONTAINER_HEIGHT);
|
||||||
lv_obj_align(container_row, LV_ALIGN_BOTTOM_MID, 0, -10);
|
lv_obj_align(container_row, LV_ALIGN_BOTTOM_MID, 0, 0);
|
||||||
// Set the container in a flexbox row layout aligned center
|
// Set the container in a flexbox row layout aligned center
|
||||||
lv_obj_set_flex_flow(container_row, LV_FLEX_FLOW_ROW);
|
lv_obj_set_flex_flow(container_row, LV_FLEX_FLOW_ROW);
|
||||||
lv_obj_set_flex_align(container_row, LV_FLEX_ALIGN_CENTER,LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
|
lv_obj_set_flex_align(container_row, LV_FLEX_ALIGN_CENTER,LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
|
||||||
lv_obj_set_scrollbar_mode(container_row, LV_SCROLLBAR_MODE_OFF);
|
lv_obj_set_scrollbar_mode(container_row, LV_SCROLLBAR_MODE_OFF);
|
||||||
|
static lv_style_t style_container_row;
|
||||||
|
lv_style_set_pad_row(&style_container_row, 0);
|
||||||
|
lv_obj_add_style(container_row, &style_container_row, 0);
|
||||||
|
lv_obj_set_style_border_side(container_row, LV_BORDER_SIDE_BOTTOM, LV_PART_MAIN);
|
||||||
|
|
||||||
|
// linke Axe
|
||||||
|
lv_obj_t * sclaeT = lv_scale_create(container_row);
|
||||||
|
lv_obj_set_size(sclaeT, 30, 75);
|
||||||
|
lv_scale_set_mode(sclaeT, LV_SCALE_MODE_VERTICAL_LEFT);
|
||||||
|
|
||||||
|
static const char * sclaeT_labels[5] = {"10°C", "15°C", "20°C", "25°C", "30°C"};
|
||||||
|
lv_scale_set_text_src(sclaeT, sclaeT_labels);
|
||||||
|
lv_scale_set_label_show(sclaeT, true);
|
||||||
|
|
||||||
|
lv_scale_set_total_tick_count(sclaeT, 21);
|
||||||
|
lv_scale_set_major_tick_every(sclaeT, 5);
|
||||||
|
|
||||||
|
lv_obj_set_style_length(sclaeT, 0, LV_PART_ITEMS);
|
||||||
|
lv_obj_set_style_length(sclaeT, 0, LV_PART_INDICATOR);
|
||||||
|
lv_obj_set_style_line_width(sclaeT, 0, LV_PART_ITEMS);
|
||||||
|
lv_obj_set_style_line_width(sclaeT, 1, LV_PART_INDICATOR);
|
||||||
|
lv_obj_set_style_line_width(sclaeT, 0, LV_PART_MAIN);
|
||||||
|
lv_scale_set_range(sclaeT, 10, 30);
|
||||||
|
|
||||||
|
static lv_style_t style_sclaeT;
|
||||||
|
lv_style_init(&style_sclaeT);
|
||||||
|
lv_style_set_text_font(&style_sclaeT, &lv_font_montserrat_10);
|
||||||
|
lv_style_set_text_color(&style_sclaeT, lv_color_hex(0x0000FF));
|
||||||
|
lv_obj_add_style(sclaeT, &style_sclaeT, 0);
|
||||||
|
|
||||||
|
|
||||||
// Create a chart in lower third of screen
|
// Create a chart
|
||||||
// lv_obj_t * chart;
|
// lv_obj_t * chart;
|
||||||
chart = lv_chart_create(container_row);
|
chart = lv_chart_create(container_row);
|
||||||
lv_obj_set_size(chart, SCREEN_WIDTH-45, SCREEN_HEIGHT-150);
|
lv_obj_set_size(chart, CHART_WIDTH, CHART_HEIGHT);
|
||||||
lv_obj_align(chart, LV_ALIGN_BOTTOM_MID, 0, -5);
|
lv_obj_align(chart, LV_ALIGN_BOTTOM_MID, 0, -5);
|
||||||
lv_chart_set_type(chart, LV_CHART_TYPE_LINE); /*Show lines and points too*/
|
lv_chart_set_type(chart, LV_CHART_TYPE_LINE); /*Show lines and points too*/
|
||||||
lv_chart_set_point_count(chart, MAXREADINGS);
|
lv_chart_set_point_count(chart, MAXREADINGS);
|
||||||
lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 100);
|
lv_chart_set_div_line_count(chart, 5, 5);
|
||||||
lv_chart_set_range(chart, LV_CHART_AXIS_SECONDARY_Y, 10, 30);
|
lv_chart_set_range(chart, LV_CHART_AXIS_SECONDARY_Y, 40, 100);
|
||||||
|
lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, 10, 30);
|
||||||
lv_obj_set_style_size(chart, 0, 0, LV_PART_INDICATOR); // No points on line
|
lv_obj_set_style_size(chart, 0, 0, LV_PART_INDICATOR); // No points on line
|
||||||
lv_obj_set_style_border_width(chart, 0, LV_PART_MAIN); // No border
|
lv_obj_set_style_border_width(chart, 0, LV_PART_MAIN); // No border
|
||||||
lv_obj_set_style_pad_right(chart, -10, LV_PART_MAIN); // No border
|
// lv_obj_set_style_pad_right(chart, -10, LV_PART_MAIN); // No border
|
||||||
|
|
||||||
/*Add data series*/
|
/*Add data series*/
|
||||||
lv_chart_series_t * ser1 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_RED), LV_CHART_AXIS_PRIMARY_Y);
|
lv_chart_series_t * ser1 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_BLUE), LV_CHART_AXIS_PRIMARY_Y);
|
||||||
lv_chart_set_point_count(chart, MAXREADINGS);
|
lv_chart_set_point_count(chart, MAXREADINGS);
|
||||||
lv_chart_set_ext_y_array(chart, ser1, (lv_coord_t *)bmewert);
|
lv_chart_set_ext_y_array(chart, ser1, (lv_coord_t *)bmewert);
|
||||||
|
|
||||||
lv_chart_series_t * ser2 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_BLUE), LV_CHART_AXIS_SECONDARY_Y);
|
lv_chart_series_t * ser2 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_RED), LV_CHART_AXIS_SECONDARY_Y);
|
||||||
lv_chart_set_point_count(chart, MAXREADINGS);
|
lv_chart_set_point_count(chart, MAXREADINGS);
|
||||||
lv_chart_set_ext_y_array(chart, ser2, (lv_coord_t *)bmewert_hum);
|
lv_chart_set_ext_y_array(chart, ser2, (lv_coord_t *)bmewert_hum);
|
||||||
|
|
||||||
lv_chart_refresh(chart); /*Required after direct set*/
|
lv_chart_refresh(chart); /*Required after direct set*/
|
||||||
|
|
||||||
// Axen
|
// rechte Axe
|
||||||
lv_obj_t * scale = lv_scale_create(container_row);
|
lv_obj_t * scale = lv_scale_create(container_row);
|
||||||
lv_obj_set_size(scale, 15, 75);
|
lv_obj_set_size(scale, 40, 75);
|
||||||
lv_scale_set_mode(scale, LV_SCALE_MODE_VERTICAL_LEFT);
|
lv_scale_set_mode(scale, LV_SCALE_MODE_VERTICAL_RIGHT);
|
||||||
|
|
||||||
lv_scale_set_label_show(scale, true);
|
static const char * scale_labels[5] = {"40%", "55%", "70%", "85%", "100%"};
|
||||||
|
lv_scale_set_text_src(scale, scale_labels);
|
||||||
|
lv_scale_set_label_show(scale, true);
|
||||||
|
|
||||||
lv_scale_set_total_tick_count(scale, 21);
|
lv_scale_set_total_tick_count(scale, 21);
|
||||||
lv_scale_set_major_tick_every(scale, 5);
|
lv_scale_set_major_tick_every(scale, 5);
|
||||||
|
|
||||||
lv_obj_set_style_length(scale, 0, LV_PART_ITEMS);
|
lv_obj_set_style_length(scale, 0, LV_PART_ITEMS);
|
||||||
lv_obj_set_style_length(scale, 0, LV_PART_INDICATOR);
|
lv_obj_set_style_length(scale, 0, LV_PART_INDICATOR);
|
||||||
lv_obj_set_style_line_width(scale, 0, LV_PART_ITEMS);
|
lv_obj_set_style_line_width(scale, 0, LV_PART_ITEMS);
|
||||||
lv_obj_set_style_line_width(scale, 1, LV_PART_INDICATOR);
|
lv_obj_set_style_line_width(scale, 1, LV_PART_INDICATOR);
|
||||||
lv_obj_set_style_line_width(scale, 0, LV_PART_MAIN);
|
lv_obj_set_style_line_width(scale, 0, LV_PART_MAIN);
|
||||||
lv_scale_set_range(scale, 10, 30);
|
lv_scale_set_range(scale, 40, 100);
|
||||||
|
|
||||||
static lv_style_t style_scale;
|
static lv_style_t style_scale;
|
||||||
lv_style_init(&style_scale);
|
lv_style_init(&style_scale);
|
||||||
lv_style_set_text_font(&style_scale, &lv_font_montserrat_10);
|
lv_style_set_text_font(&style_scale, &lv_font_montserrat_10);
|
||||||
lv_obj_add_style(scale, &style_scale, 0);
|
lv_style_set_text_color(&style_scale, lv_color_hex(0xFF0000));
|
||||||
|
lv_obj_add_style(scale, &style_scale, 0);
|
||||||
|
|
||||||
|
/* // Label an der Axe
|
||||||
lv_obj_t * unitxAx_label = lv_label_create(container_row);
|
lv_obj_t * unitxAx_label = lv_label_create(container_row);
|
||||||
lv_label_set_text(unitxAx_label, "°C");
|
lv_label_set_text(unitxAx_label, "°C");
|
||||||
lv_obj_align(unitxAx_label, LV_ALIGN_TOP_RIGHT, -20, 8);
|
lv_obj_align(unitxAx_label, LV_ALIGN_TOP_RIGHT, -20, 8);
|
||||||
@@ -207,7 +248,7 @@ void setValuetoArc(ARC arc, float value) {
|
|||||||
lv_style_init(&style_unitxAx_label);
|
lv_style_init(&style_unitxAx_label);
|
||||||
lv_style_set_text_font(&style_unitxAx_label, &lv_font_montserrat_12);
|
lv_style_set_text_font(&style_unitxAx_label, &lv_font_montserrat_12);
|
||||||
lv_obj_add_style(unitxAx_label, &style_unitxAx_label, 0);
|
lv_obj_add_style(unitxAx_label, &style_unitxAx_label, 0);
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ typedef struct {
|
|||||||
|
|
||||||
#ifdef MAIN
|
#ifdef MAIN
|
||||||
ARC arcTemp = {NULL, "temp", 40, 0, 110, 30.0, "%.1f", "°C", 10, 30, 20, 25};
|
ARC arcTemp = {NULL, "temp", 40, 0, 110, 30.0, "%.1f", "°C", 10, 30, 20, 25};
|
||||||
ARC arcHum = {NULL, "humi", 170, 0, 110, 60.0, "%.0f", "%",0, 100, 65, 70};
|
ARC arcHum = {NULL, "humi", 170, 0, 110, 60.0, "%.0f", "%", 40, 100, 65, 70};
|
||||||
lv_obj_t * date_label;
|
lv_obj_t * date_label;
|
||||||
lv_obj_t * time_label;
|
lv_obj_t * time_label;
|
||||||
#else
|
#else
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
#include "grafik.h"
|
#include "grafik.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
|
||||||
#define BMWREADTIME 10000
|
#define BMWREADTIME 60000
|
||||||
#define NTPREADTIME 1000
|
#define NTPREADTIME 1000
|
||||||
|
|
||||||
long bmeReadtimer = 0;
|
long bmeReadtimer = 0;
|
||||||
@@ -103,13 +103,14 @@ void loop() {
|
|||||||
timeinfo = gettheTime(NTPREADTIME);
|
timeinfo = gettheTime(NTPREADTIME);
|
||||||
if (timeinfo.tm_sec == 0) { // minute over
|
if (timeinfo.tm_sec == 0) { // minute over
|
||||||
showDateTime(timeinfo);
|
showDateTime(timeinfo);
|
||||||
printLocalTime();
|
|
||||||
}
|
}
|
||||||
if (millis() - bmeReadtimer > BMWREADTIME) {
|
if (millis() - bmeReadtimer > BMWREADTIME) {
|
||||||
bmeReadtimer = millis();
|
bmeReadtimer = millis();
|
||||||
bmedata = readBME280();
|
bmedata = readBME280();
|
||||||
setValuetoArc(arcTemp, bmedata.temp);
|
setValuetoArc(arcTemp, bmedata.temp);
|
||||||
setValuetoArc(arcHum, bmedata.hum);
|
setValuetoArc(arcHum, bmedata.hum);
|
||||||
|
updatechartData(bmedata.temp, bmedata.hum);
|
||||||
|
|
||||||
}
|
}
|
||||||
lv_task_handler(); // let the GUI do its work
|
lv_task_handler(); // let the GUI do its work
|
||||||
lv_tick_inc(5); // tell LVGL how much time has passed
|
lv_tick_inc(5); // tell LVGL how much time has passed
|
||||||
|
|||||||
Reference in New Issue
Block a user