Important : Dans les versions plus récentes de PlatformIO, la plupart des cartes ESP32 planteront avec cet exemple à moins que vous ne créiez un fichier de config lv_conf.h personnalisé spécifiant d’utiliser la mémoire interne au lieu de PSRAM. Voir Comment corriger le crash / redémarrage ESP32 LVGL dans lv_tlsf_create() / lv_mem_init() pour des instructions sur comment corriger cela.
Cet exemple s’appuie sur notre post précédent Exemple LVGL minimal d’affichage Adafruit ST7735R pour PlatformIO
Voir Exemple minimal d’affichage TFT PlatformIO ESP32 utilisant Adafruit ST7735 pour la configuration matérielle recommandée.
Notez que cet exemple peut facilement être modifié pour fonctionner avec d’autres contrôleurs LCD ou affichages.
st7735r_lvgl_chart_example.cpp
#include <Arduino.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <Adafruit_LvGL_Glue.h>
#include <lvgl.h>
#include <string>
constexpr int Pin_LCD_CS = 27;
constexpr int Pin_LCD_DC = 23;
constexpr int Pin_LCD_RST = 22;
constexpr int Pin_LCD_SCLK = 14;
constexpr int Pin_LCD_MISO = 12;
constexpr int Pin_LCD_MOSI = 13;
Adafruit_ST7735 lcd(Pin_LCD_CS, Pin_LCD_DC, Pin_LCD_MOSI, Pin_LCD_SCLK,
Pin_LCD_RST);
Adafruit_LvGL_Glue glue;
void lvgl_chart_setup() {
/*Crée un graphique*/
lv_obj_t * chart;
chart = lv_chart_create(lv_scr_act());
lv_obj_set_size(chart, 160, 100);
lv_obj_align(chart, LV_ALIGN_BOTTOM_MID, 0, -3);
lv_chart_set_type(chart, LV_CHART_TYPE_LINE); /*Affiche aussi les lignes et points*/
/*Ajoute deux séries de données*/
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 * ser2 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_GREEN), LV_CHART_AXIS_SECONDARY_Y);
/*Définit les points suivants sur 'ser1'*/
lv_chart_set_next_value(chart, ser1, 10);
lv_chart_set_next_value(chart, ser1, 10);
lv_chart_set_next_value(chart, ser1, 10);
lv_chart_set_next_value(chart, ser1, 10);
lv_chart_set_next_value(chart, ser1, 10);
lv_chart_set_next_value(chart, ser1, 10);
lv_chart_set_next_value(chart, ser1, 10);
lv_chart_set_next_value(chart, ser1, 30);
lv_chart_set_next_value(chart, ser1, 70);
lv_chart_set_next_value(chart, ser1, 90);
/*Définit directement les points sur 'ser2'*/
ser2->y_points[0] = 90;
ser2->y_points[1] = 70;
ser2->y_points[2] = 65;
ser2->y_points[3] = 65;
ser2->y_points[4] = 65;
ser2->y_points[5] = 65;
ser2->y_points[6] = 65;
ser2->y_points[7] = 65;
ser2->y_points[8] = 65;
ser2->y_points[9] = 65;
lv_chart_refresh(chart); /*Requis après définition directe*/
}
void lvgl_setup(void) {
// Crée un label simple centré sur l'écran
lv_obj_t *label = lv_label_create(lv_scr_act());
lv_label_set_text(label, "Temperature");
lv_obj_align(label, LV_ALIGN_TOP_MID, 0, 2);
lvgl_chart_setup();
}
void setup() {
lcd.initR(INITR_BLACKTAB); // Init la puce ST7735S, onglet noir
lcd.setRotation(1);
LvGLStatus status = glue.begin(&lcd);
if(status != LVGL_OK) {
Serial.printf("Glue error %d\r\n", (int)status);
ESP.restart();
}
lvgl_setup(); // Appelle la fonction de construction d'UI ci-dessus
}
void loop() {
lv_task_handler(); // Appelle le gestionnaire de tâches LittleVGL périodiquement
delay(5);
}platformio.ini
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
lib_deps =
adafruit/Adafruit GFX Library@^1.11.5
adafruit/Adafruit ST7735 and ST7789 Library@^1.10.0
adafruit/Adafruit LittlevGL Glue Library@^2.1.4
adafruit/SdFat - Adafruit Fork@^2.2.1
lvgl/lvgl@^8.3.7
Consultez les articles similaires par catégorie :
Arduino LVGL PlatformIO
Si cet article vous a aidé, pensez à m'offrir un café ou à faire un don via PayPal pour soutenir la recherche et la publication de nouveaux articles sur TechOverflow
