This commit is contained in:
2026-09-30 15:46:21 +02:00
parent f953deaec3
commit b09dde607a
3 changed files with 21 additions and 21 deletions
+3 -17
View File
@@ -23,10 +23,6 @@ static lv_display_t *sh_display = NULL;
static lv_obj_t *label = NULL; static lv_obj_t *label = NULL;
bmp280_t dev_bmp_280; bmp280_t dev_bmp_280;
static void lvgl_tick_cb(void *arg) {
lv_tick_inc(10);
}
void lvgl_task(void *pvParameters) { void lvgl_task(void *pvParameters) {
while (1) { while (1) {
lv_timer_handler(); lv_timer_handler();
@@ -42,7 +38,7 @@ void sensor_task(void *pvParameters) {
// Najpierw OLED, potem (blokujący) HTTP — żeby ekran // Najpierw OLED, potem (blokujący) HTTP — żeby ekran
// odświeżył się nawet gdy serwer nie odpowiada. // odświeżył się nawet gdy serwer nie odpowiada.
char buf[256]; char buf[256];
snprintf(buf, sizeof(buf), "Temp: %.2f C\nHumid: %.2f %%\nPress: %.2f hPa", snprintf(buf, sizeof(buf), "Temp: %.1f C\nHumid: %.1f %%\nPress: %.1f hPa",
CURR_READOUT.temperature, CURR_READOUT.temperature,
CURR_READOUT.humidity, CURR_READOUT.humidity,
CURR_READOUT.pressure / 100.); CURR_READOUT.pressure / 100.);
@@ -81,24 +77,14 @@ void app_main()
httpd_register_uri_handler(server, &ygg_press_uri); httpd_register_uri_handler(server, &ygg_press_uri);
httpd_register_uri_handler(server, &ygg_hum_uri); httpd_register_uri_handler(server, &ygg_hum_uri);
ESP_ERROR_CHECK(i2cdev_init());
sh_display = ygg_sh1106_init(); sh_display = ygg_sh1106_init();
// LVGL potrzebuje regularnego ticka, inaczej redraw nigdy się nie wykona
// (to był powód, dla którego wisiało "FIRST").
const esp_timer_create_args_t lvgl_tick_args = {
.callback = lvgl_tick_cb,
.name = "lvgl_tick",
};
esp_timer_handle_t lvgl_tick_handle = NULL;
ESP_ERROR_CHECK(esp_timer_create(&lvgl_tick_args, &lvgl_tick_handle));
ESP_ERROR_CHECK(esp_timer_start_periodic(lvgl_tick_handle, 10 * 1000));
lv_obj_t *scr = lv_display_get_screen_active(sh_display); lv_obj_t *scr = lv_display_get_screen_active(sh_display);
label = lv_label_create(scr); label = lv_label_create(scr);
ygg_set_display_label(sh_display, label, "FIRST"); ygg_set_display_label(sh_display, label, "PLEASE WAIT...");
ygg_bmp280_init(&dev_bmp_280); ygg_bmp280_init(&dev_bmp_280);
xTaskCreatePinnedToCore(lvgl_task, "lvgl", 4096, NULL, 4, NULL, APP_CPU_NUM); xTaskCreatePinnedToCore(lvgl_task, "lvgl", 4096, NULL, 4, NULL, APP_CPU_NUM);
xTaskCreatePinnedToCore(sensor_task, "bmp280_test", 8192, NULL, 5, NULL, APP_CPU_NUM); xTaskCreatePinnedToCore(sensor_task, "bmp280_test", 8192, NULL, 5, NULL, APP_CPU_NUM);
} }
+1
View File
@@ -5,6 +5,7 @@
#include "ygg_state.h" #include "ygg_state.h"
void ygg_bmp280_init(bmp280_t *dev) { void ygg_bmp280_init(bmp280_t *dev) {
ESP_ERROR_CHECK(i2cdev_init());
bmp280_params_t params; bmp280_params_t params;
bmp280_init_default_params(&params); bmp280_init_default_params(&params);
memset(dev, 0, sizeof(bmp280_t)); memset(dev, 0, sizeof(bmp280_t));
+17 -4
View File
@@ -1,11 +1,10 @@
#include <string.h>
#include "ygg_sh1106.h" #include "ygg_sh1106.h"
#include "lvgl.h" #include "lvgl.h"
#include "i2cdev.h" #include "i2cdev.h"
#include "esp_log.h"
#include "esp_lcd_io_i2c.h" #include "esp_lcd_io_i2c.h"
#include "esp_lcd_panel_ops.h" #include "esp_lcd_panel_ops.h"
#include "esp_timer.h" #include "esp_timer.h"
#include "esp_lcd_panel_io.h"
#include "esp_lcd_panel_sh1106.h" #include "esp_lcd_panel_sh1106.h"
#define I2C_HOST I2C_NUM_0 #define I2C_HOST I2C_NUM_0
@@ -57,8 +56,22 @@ static void example_lvgl_flush_cb(lv_display_t *disp, const lv_area_t *area, uin
lv_display_flush_ready(disp); lv_display_flush_ready(disp);
} }
static void lvgl_tick_cb(void *arg) {
lv_tick_inc(10);
}
void ygg_init_tick_cb() {
const esp_timer_create_args_t lvgl_tick_args = {
.callback = lvgl_tick_cb,
.name = "lvgl_tick",
};
esp_timer_handle_t lvgl_tick_handle = NULL;
ESP_ERROR_CHECK(esp_timer_create(&lvgl_tick_args, &lvgl_tick_handle));
ESP_ERROR_CHECK(esp_timer_start_periodic(lvgl_tick_handle, 10 * 1000));
}
lv_display_t* ygg_sh1106_init() { lv_display_t* ygg_sh1106_init() {
//ESP_ERROR_CHECK(i2cdev_init()); ESP_ERROR_CHECK(i2cdev_init());
static i2c_dev_t oled_i2c_dev; static i2c_dev_t oled_i2c_dev;
memset(&oled_i2c_dev, 0, sizeof(oled_i2c_dev)); memset(&oled_i2c_dev, 0, sizeof(oled_i2c_dev));
@@ -130,7 +143,7 @@ lv_display_t* ygg_sh1106_init() {
lv_display_set_buffers(display, buf, NULL, draw_buffer_sz, LV_DISPLAY_RENDER_MODE_FULL); lv_display_set_buffers(display, buf, NULL, draw_buffer_sz, LV_DISPLAY_RENDER_MODE_FULL);
lv_display_set_flush_cb(display, example_lvgl_flush_cb); lv_display_set_flush_cb(display, example_lvgl_flush_cb);
lv_obj_t *scr = lv_display_get_screen_active(display); ygg_init_tick_cb();
return display; return display;
} }