Adafruit-ST7735R-Display minimales LVGL-Beispiel für PlatformIO

Wichtig: In neueren Versionen von PlatformIO werden die meisten ESP32-Boards mit diesem Beispiel abstürzen, es sei denn, Sie erstellen eine custom lv_conf.h-Konfigurationsdatei, die angibt, internen Speicher statt PSRAM zu verwenden. Siehe Wie man ESP32-LVGL-Absturz/Reboot in lv_tlsf_create() / lv_mem_init() behebt für Anweisungen zur Behebung.

Dieses Beispiel baut auf der in Minimales ESP32 PlatformIO TFT-Display-Beispiel mit Adafruit ST7735 beschriebenen Hardware- & Software-Einrichtung auf, verwendet jedoch die LVGL-Bibliothek, um erweiterte Rendering-Möglichkeiten zu bieten.

Siehe Minimales ESP32 PlatformIO TFT-Display-Beispiel mit Adafruit ST7735 für die Hardware-Konfiguration.

Beachten Sie, dass dies nur eine minimale Vorlage zum Einstieg in LVGL ist - außer zentriertem Text-Rendering werden keine fortgeschrittenen LVGL-Techniken verwendet.

ST7735R-TFT-Display zeigt zentrierten Hello-LVGL-Text, gerendert mit der LVGL-Bibliothek

st7735_lvgl_example.cpp
#include <Arduino.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <Adafruit_LvGL_Glue.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_setup(void) {
  // Create simple label centered on screen
  lv_obj_t *label = lv_label_create(lv_scr_act());
  lv_label_set_text(label, "Hello LVGL!");
  lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
}

void setup() {
  lcd.initR(INITR_BLACKTAB);      // Init ST7735S chip, black tab
  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(); // Call UI-building function above
}

void loop() {
  lv_task_handler(); // Call LittleVGL task handler periodically
  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

Check out similar posts by category: Arduino, LVGL, PlatformIO