ESP32 TTGO mit PlatformIO / VSCode

29. Januar 2021 at 19:30

Das ESP Board mit Display soll für einen CO2 Sensor eingesetzt werden. Dieser Artikel beschreibt aber erst einmal wie man das ein solches Projekt unter PlatformIO / VS Code erzeugt.

Projekt Anlegen

platformio.ini – Bibliotheken einbinden

[codesyntax lang=”c”]

[env:ttgo-lora32-v1]
platform = espressif32
board = ttgo-lora32-v1
framework = arduino
upload_speed = 921600
monitor_speed = 115200
lib_deps =
    bodmer/TFT_eSPI # for TTGO display

[/codesyntax]

 

Bibliothek TFT_eSPI holen

Nun den ersten Build mit F5 starten. Damit holt sich PIO die Bibliotheken.

Danach kann man sie unter .pio/lipdeps sehen:

TFT Bibliothek anpassen

TTGO-Pong\.pio\libdeps\ttgo-lora32-v1\TFT_eSPI\User_Setup.h

Den default Treiber mit “//” kommentieren und den ST7789 aktivieren, d.h. die Kommentar-Zeichen “//” entfernen

[codesyntax lang=”c”]

// #define ILI9341_DRIVER
#define ST7789_DRIVER      // Full configuration option, define additional parameters below for this display

[/codesyntax]

TTGO test\.pio\libdeps\ttgo-lora32-v1\TFT_eSPI\User_Setup_Select.h

Ebenso in dieser Datei eine include Zeile aktivieren

[codesyntax lang=”c”]


// #include <User_Setup.h>

#include <User_Setups/Setup25_TTGO_T_Display.h>    // Setup file for ESP32 and TTGO T-Display ST7789V SPI bus TFT

[/codesyntax]

Beispiel-Code kopieren

Ich verwende hier das Beispiel “Pong”, da man damit sehen kann, ob der ganze Bildschirm ausgenutzt wird.

TTGO-Pong\.pio\libdeps\ttgo-lora32-v1\TFT_eSPI\examples\320 x 240\TFT_Pong\TFT_Pong.ino

Einfach den Inhalt in die Datei TTGO-Pong\src\main.cpp kopieren

Dann am Anfang das Arduino-Include wieder einfügen

[codesyntax lang=”c”]

#include <Arduino.h>

[/codesyntax]

Auflösung festlegen:

Im Code die Definition für h und w auf 135 bzw. 240 ändern.

[codesyntax lang=”c”]

TFT_eSPI tft = TFT_eSPI(); // Invoke custom library

int16_t h = 135;
int16_t w = 240;

[/codesyntax]

Funktionen deklarieren

Die Funktionen müssen in VSCode vor der ersten Verwendung deklariert werden.
Hierzu oberhalb von setup() folgenden Block einfügen.

[codesyntax lang=”c”]

// Declare function before first use
void initgame (void);
void calc_target_y (void);
void lpaddle(void);
void rpaddle(void);
void midline(void);
void ball(void);

void setup(void)
{

[/codesyntax]

Dann mit F5 die firmware erzeugen und mit F6 hochladen.