Einführung
Die Bibliothek TFT_eSPI stellt für ESP-Mikrocontroller eine gemeinsame Bibliothek für TFT-Displays in verschiedenen Formaten bereit. Weil die TFT-Displays über Steuerdateien angesprochen werden, sind keine individuellen Bibliotheken mehr notwendig.
Bibliothek installieren

Die Steuerdateien
User_Setup.h
Diese Datei enthält die Definition des verwendeten Treibers und die ⇒SPI-Pins des Mikrocontrollers. Sie muss entsprechend angepasst werden.
Du musst beim verwendeten Treiber für das Display und beim verwendeten Mikrocontroller die Kommentarzeichen (//) vor den verwendeten SPI-Pins entfernen.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
// verwendeter Treiber // TFT 160x128 // #define ST7735_DRIVER // #define TFT_WIDTH 128 // #define TFT_HEIGHT 160 // #define ST7735_BLACKTAB // TFT 320x240 // #define ILI9341_DRIVER // #define TFT_WIDTH 240 // #define TFT_HEIGHT 320 // TFT 480x320 // #define ST7796_DRIVER // #define TFT_WIDTH 320 // #define TFT_HEIGHT 480 // ESP32-2432S028R // #define ILI9341_2_DRIVER // #define TFT_WIDTH 240 // #define TFT_HEIGHT 320 // #define TFT_BACKLIGHT_ON HIGH // SPI-Pins: ESP32-Wroom // #define TFT_CS 5 // #define TFT_DC 2 // #define TFT_RST 4 // SPI-Pins: Wemos D1/NodeMCU // #define TFT_CS D8 // #define TFT_RST D1 // #define TFT_DC D2 // SPI-Pins: ESP32-2432S028R // #define TFT_MOSI 13 // #define TFT_SCLK 14 // #define TFT_CS 15 // #define TFT_DC 2 // #define TFT_RST -1 // #define TFT_BL 21 // #define SPI_FREQUENCY 55000000 // #define SPI_READ_FREQUENCY 20000000 // ESP32-2432S028R Touch-Pins // #define TOUCH_IRQ 36 // #define TOUCH_MOSI 32 // #define TOUCH_MISO 39 // #define TOUCH_CLK 25 // #define TOUCH_CS 33 // #define SPI_TOUCH_FREQUENCY 2500000 // Schriftarten // Font 2-4: ASCII-Zeichen bis 127: Buchstaben, Zahlen und Satzzeichen, keine Umlaute // Font 6-8: Zahlen .- #define LOAD_FONT2 #define LOAD_FONT4 #define LOAD_FONT6 #define LOAD_FONT7 #define LOAD_FONT8 #define LOAD_GFXFF #define SMOOTH_FONT |
User_Setup_Select.h
Diese Datei enthält die den TFT-Displays zugeordnete Treiber. Ich habe mich hier auf die Displays mit 160×128, 320×240 und 480×320 beschränkt.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include "User_Setup.h" // 320x240 #if defined (ILI9341_DRIVER) || defined(ILI9341_2_DRIVER) || defined (ILI9342_DRIVER) #include <TFT_Drivers/ILI9341_Defines.h> #define TFT_DRIVER 0x9341 // 320x240 #elif defined (ST7789_DRIVER) #include <TFT_Drivers/ST7789_Defines.h> #define TFT_DRIVER 0x7789 // 160x128 #elif defined (ST7735_DRIVER) #include <TFT_Drivers/ST7735_Defines.h> #define TFT_DRIVER 0x7735 #define ST7735_BLACKTAB // 480x320 #elif defined (ST7796_DRIVER) #include "TFT_Drivers/ST7796_Defines.h" #define TFT_DRIVER 0x7796 #endif |
Individuelle Konfigurationen
Neben der Standardkonfiguration in der Datei User_Setup.h kannst du auch individuelle Konfigurationen anlegen. Weil mit jedem Update der Bibliothek alle Dateien überschrieben werden, ist es sinnvoll, diese individuellen Konfigurationen in einem anderen Ordner abzulegen. Ich habe mich für den Ordner libraries (Unterordner des Ordners Arduino, hier liegen alle installierten Bibliotheken) entschieden.
Ich habe dort einen Ordner TFT_eSPI_Konfiguration erstellt und die individuellen Konfigurationen und die geänderte Datei User_Setup_Select.h dort abgelegt. Beim nächsten Update gehen die Konfigurationsdateien im Ordner libraries/TFT_eSPI zwar verloren, sie können aber aus dem Ordner libraries/TFT-eSPI_Konfiguration leicht wieder zurück kopiert werden.
ESP32-Wroom mit TFT 160 ✕ 128 Pixeln
Datei: ESP32-Wroom_160x128
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// TFT 160x128 #define ST7735_DRIVER #define TFT_WIDTH 128 #define TFT_HEIGHT 160 #define ST7735_BLACKTAB // SPI-Pins ESP32-Wroom #define TFT_CS 5 #define TFT_DC 2 #define TFT_RST 4 // Schriftarten // Font 2-4: ASCII-Zeichen bis 127: Buchstaben, Zahlen und Satzzeichen, keine Umlaute // Font 6-8: Zahlen .- #define LOAD_FONT2 #define LOAD_FONT4 #define LOAD_FONT6 #define LOAD_FONT7 #define LOAD_FONT8 #define LOAD_GFXFF #define SMOOTH_FONT |
Wemos D1 Mini/NodeMCU mit TFT 160 ✕ 128 Pixeln
Datei: Wemos-D1_160x128.h
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// TFT 160x128 #define ST7735_DRIVER #define TFT_WIDTH 128 #define TFT_HEIGHT 160 #define ST7735_BLACKTAB // SPI-Pins Wemos D1/NodeMCU #define TFT_CS D8 #define TFT_RST D1 #define TFT_DC D2 // Schriftarten // Font 2-4: ASCII-Zeichen bis 127: Buchstaben, Zahlen und Satzzeichen, keine Umlaute // Font 6-8: Zahlen .- #define LOAD_FONT2 #define LOAD_FONT4 #define LOAD_FONT6 #define LOAD_FONT7 #define LOAD_FONT8 #define LOAD_GFXFF #define SMOOTH_FONT |
ESP32-Wroom mit TFT 320 ✕ 240 Pixeln
Datei: ESP32-Wroom_320x240.h
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// TFT 320x240 #define ILI9341_DRIVER #define TFT_WIDTH 240 #define TFT_HEIGHT 320 // SPI-Pins ESP32-Wroom #define TFT_CS 5 #define TFT_DC 2 #define TFT_RST 4 // Schriftarten // Font 2-4: ASCII-Zeichen bis 127: Buchstaben, Zahlen und Satzzeichen, keine Umlaute // Font 6-8: Zahlen .- #define LOAD_FONT2 #define LOAD_FONT4 #define LOAD_FONT6 #define LOAD_FONT7 #define LOAD_FONT8 #define LOAD_GFXFF #define SMOOTH_FONT |
Wemos D1 Mini/NodeMCU mit TFT 320 ✕ 240 Pixeln
Datei: Wemos-D1_320x240.h
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// TFT 480x320 #define ILI9341_DRIVER #define TFT_WIDTH 240 #define TFT_HEIGHT 320 // SPI-Pins Wemos D1/NodeMCU #define TFT_CS D8 #define TFT_RST D1 #define TFT_DC D2 // Schriftarten // Font 2-4: ASCII-Zeichen bis 127: Buchstaben, Zahlen und Satzzeichen, keine Umlaute // Font 6-8: Zahlen .- #define LOAD_FONT2 #define LOAD_FONT4 #define LOAD_FONT6 #define LOAD_FONT7 #define LOAD_FONT8 #define LOAD_GFXFF #define SMOOTH_FONT |
ESP32-Wroom mit TFT 480 ✕ 320 Pixeln
Datei: ESP32-Wroom_480x320.h
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// Treiber TFT #define ST7796_DRIVER #define TFT_WIDTH 320 #define TFT_HEIGHT 480 // SPI-Pins ESP32-Wroom #define TFT_CS 5 #define TFT_DC 2 #define TFT_RST 4 // Farben sind invertiert: Schwarz = weiß #define TFT_INVERSION_ON // Schriftarten // Font 2-4: Buchstaben, Zahlen und Satzzeichen, keine Umlaute // Font 6-8: Zahlen -. #define LOAD_FONT2 #define LOAD_FONT4 #define LOAD_FONT6 #define LOAD_FONT7 #define LOAD_FONT8 #define SMOOTH_FONT #define LOAD_GFXFF |
Wemos D1 Mini/NodeMCU mit TFT 480 ✕ 320 Pixeln
Datei: Wemos-D1_480x320.h
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// TFT 480x320 #define ST7796_DRIVER #define TFT_WIDTH 320 #define TFT_HEIGHT 480 // SPI-Pins Wemos D1/NodeMCU #define TFT_CS D8 #define TFT_RST D1 #define TFT_DC D2 // Farben sind invertiert: Schwarz = weiß #define TFT_INVERSION_ON // Schriftarten // Font 2-4: ASCII-Zeichen bis 127: Buchstaben, Zahlen und Satzzeichen, keine Umlaute // Font 6-8: Zahlen .- #define LOAD_FONT2 #define LOAD_FONT4 #define LOAD_FONT6 #define LOAD_FONT7 #define LOAD_FONT8 #define LOAD_GFXFF #define SMOOTH_FONT |
ESP32-2432S028 (ILI9341) Mikro-USB-Anschluss
Datei ESP32-2432S028_ILI9341.h
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
// Treiber TFT #define ILI9341_2_DRIVER #define TFT_WIDTH 240 #define TFT_HEIGHT 320 #define TFT_BACKLIGHT_ON HIGH // Farbreihenfolge statt RGB BGR // #define TFT_RGB_ORDER TFT_BGR // Farben sind invertiert: Schwarz = weiß // #define TFT_INVERSION_ON #define TFT_INVERSION_OFF // SPI-Pins #define TFT_MOSI 13 #define TFT_SCLK 14 #define TFT_CS 15 #define TFT_DC 2 #define TFT_RST -1 #define TFT_BL 21 #define SPI_FREQUENCY 55000000 #define SPI_READ_FREQUENCY 20000000 // Touch #define TOUCH_IRQ 36 #define TOUCH_MOSI 32 #define TOUCH_MISO 39 #define TOUCH_CLK 25 #define TOUCH_CS 33 #define SPI_TOUCH_FREQUENCY 2500000 // Schriftarten // Font 2-4: Buchstaben, Zahlen und Satzzeichen, keine Umlaute // Font 6-8: Zahlen -. #define LOAD_FONT2 #define LOAD_FONT4 #define LOAD_FONT6 #define LOAD_FONT7 #define LOAD_FONT8 #define SMOOTH_FONT #define LOAD_GFXFF |
ESP32-2432S028 (ST7789) USB-C-Anschluss
Datei ESP32-2432S028_ST7789.h
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
// Treiber TFT #define ST7789_DRIVER #define TFT_WIDTH 240 #define TFT_HEIGHT 320 #define TFT_BACKLIGHT_ON HIGH // SPI-Pins #define TFT_MOSI 13 #define TFT_SCLK 14 #define TFT_CS 15 #define TFT_DC 2 #define TFT_RST -1 #define TFT_BL 21 // Farbreihenfolge statt RGB BGR #define TFT_RGB_ORDER TFT_BGR // Farben sind invertiert: Schwarz = weiß // #define TFT_INVERSION_OFF #define TFT_INVERSION_ON #define SPI_FREQUENCY 55000000 #define SPI_READ_FREQUENCY 20000000 // Touch #define TOUCH_IRQ 36 #define TOUCH_MOSI 32 #define TOUCH_MISO 39 #define TOUCH_CLK 25 #define TOUCH_CS 33 #define SPI_TOUCH_FREQUENCY 2500000 // Schriftarten // Font 2-4: Buchstaben, Zahlen und Satzzeichen, keine Umlaute // Font 6-8: Zahlen -. #define LOAD_FONT2 #define LOAD_FONT4 #define LOAD_FONT6 #define LOAD_FONT7 #define LOAD_FONT8 #define SMOOTH_FONT #define LOAD_GFXFF |
ESP32-JC2432W328C (ST7789)
Datei ESP32-JC2432W328C_ST7789.h
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
// Treiber TFT #define ST7789_DRIVER #define TFT_WIDTH 240 #define TFT_HEIGHT 320 #define TFT_BACKLIGHT_ON HIGH // SPI-Pins #define ESP32_DMA #define TFT_MOSI 13 #define TFT_SCLK 14 #define TFT_CS 15 #define TFT_DC 2 #define TFT_RST -1 #define TFT_BL 27 // Farbreihenfolge statt RGB BGR #define TFT_RGB_ORDER TFT_BGR // Farben sind invertiert: Schwarz = weiß // #define TFT_INVERSION_ON #define TFT_INVERSION_OFF #define SPI_FREQUENCY 55000000 #define SPI_READ_FREQUENCY 20000000 // Touch #define TOUCH_IRQ 36 #define TOUCH_MOSI 32 #define TOUCH_MISO 39 #define TOUCH_CLK 25 #define TOUCH_CS 33 #define SPI_TOUCH_FREQUENCY 2500000 // Schriftarten // Font 2-4: Buchstaben, Zahlen und Satzzeichen, keine Umlaute // Font 6-8: Zahlen und Satzzeichen #define LOAD_FONT2 #define LOAD_FONT4 #define LOAD_FONT6 #define LOAD_FONT7 #define LOAD_FONT8 #define SMOOTH_FONT #define LOAD_GFXFF |
Die Datei User_Setup_Select.h muss geändert werden. Statt der Standarddatei User_Setup.h muss die individuelle Konfiguration eingebunden werden. Du musst bei der verwendeten Konfiguration die Kommentarzeichen (//) entfernen.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
// Standard-Konfiguration // #include "User_Setup.h" // individuelle Konfigurationen // #include "../TFT_eSPI_Konfiguration/ESP32-2432S028_ILI9341.h" // #include "../TFT_eSPI_Konfiguration/ESP32-2432S028_ST7789.h" // #include "../TFT_eSPI_Konfiguration/ESP32-Wroom_480x320.h" // #include "../TFT_eSPI_Konfiguration/Wemos-D1_480x320.h" // #include "../TFT_eSPI_Konfiguration/ESP32-Wroom_320x240.h" // #include "../TFT_eSPI_Konfiguration/Wemos-D1_320x240.h" // #include "../TFT_eSPI_Konfiguration/Wemos-D1_160x128.h" // #include "../TFT_eSPI_Konfiguration/ESP32-Wroom_160x128.h" // 320x240 #if defined (ILI9341_DRIVER) || defined(ILI9341_2_DRIVER) || defined (ILI9342_DRIVER) #include <TFT_Drivers/ILI9341_Defines.h> #define TFT_DRIVER 0x9341 // 160x128 #elif defined (ST7735_DRIVER) #include <TFT_Drivers/ST7735_Defines.h> #define TFT_DRIVER 0x7735 #define ST7735_BLACKTAB // CYD JC2432W328C 320x240/CYD ESP32-2432S028 #elif defined (ST7789_DRIVER) #include <TFT_Drivers/ST7789_Defines.h> #define TFT_DRIVER 0x7789 // 480x320 #elif defined (ST7796_DRIVER) #include <TFT_Drivers/ST7796_Defines.h> #define TFT_DRIVER 0x7796 #endif |
Beispiel: interne Fonts
Font 2-4: Buchstaben, Zahlen und Satzzeichen, keine Umlaute
Font 6-8: Zahlen .-

|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#include "TFT_eSPI.h" TFT_eSPI tft = TFT_eSPI(); void setup() { tft.init(); tft.setRotation(1); tft.fillScreen(TFT_BLACK); tft.setTextColor(TFT_GREEN); tft.setCursor(0, 10); tft.setTextFont(2); tft.println("abcd ABCD 1234"); tft.setTextColor(TFT_YELLOW); tft.setTextFont(4); tft.println("abcd ABCD 1234"); tft.setTextColor(TFT_BLUE); tft.setTextFont(6); tft.println(1234); tft.setTextColor(TFT_BROWN); tft.setTextFont(7); tft.println(1234); tft.setTextColor(TFT_GOLD); tft.setTextFont(8); tft.println(1234); } void loop() { // bleibt leer, das Programm läuft nur einmal } |
Beispiel: grafische Funktionen
Das Programm kann für alle Konfigurationen verwendet werden.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
#include "TFT_eSPI.h" TFT_eSPI tft = TFT_eSPI(); // Farben #define SCHWARZ 0x0000 #define WEISS 0xFFFF #define BLAU 0x001F #define ROT 0xF800 #define GRUEN 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define GELB 0xFFE0 #define BRAUN 0x9A60 #define GRAU 0x7BEF #define GRUENGELB 0xB7E0 #define DUNKELCYAN 0x03EF #define ORANGE 0xFDA0 #define PINK 0xFE19 #define BORDEAUX 0xA000 #define HELLBLAU 0x867D #define VIOLETT 0x915C #define SILBER 0xC618 #define GOLD 0xFEA0 void setup() { tft.init(); } void loop() { tft.fillScreen(SCHWARZ); tft.setTextSize(1); tft.setCursor(1, 5); tft.setTextColor(BLAU); tft.print("Text"); delay(500); tft.setTextSize(2); tft.setCursor(1, 20); tft.setTextColor(ORANGE); tft.print("Text"); delay(500); tft.setTextSize(3); tft.setCursor(1, 40); tft.setTextColor(GRUEN); tft.print("Text"); delay(500); tft.setTextSize(5); tft.setCursor(1, 70); tft.setTextColor(ROT); tft.print("Text"); delay(500); delay(2000); // zufällige Pixel tft.fillScreen(SCHWARZ); for (int i = 0; i < 700; i++) { int PixelX = random(1, tft.width()); int PixelY = random(1, tft.height()); tft.drawPixel(PixelX, PixelY, tft.color565(random(255),random(255),random(255))); delay(5); } delay(2000); // Linien ziehen tft.fillScreen(SCHWARZ); for (int i = 1; i < tft.height(); i+=10) { tft.drawLine(1, i, tft.width(), i, ORANGE); } delay(2000); // Kreise vom Mittelpunkt zeichnen tft.fillScreen(SCHWARZ); for (int i = 1; i < tft.width() / 2; i+=10) { tft.fillCircle(tft.width() / 2, tft.height() / 2, tft.width() / 2 - i, tft.color565(random(255),random(255),random(255))); delay(50); } delay(2000); // Rechtecke zeichnen tft.fillScreen(SCHWARZ); for (int i = 1; i < tft.width(); i+=10) { tft.drawRect(tft.width() / 2 - i / 2, tft.height() / 2 - i / 2 , i, i, tft.color565(random(255),random(255),random(255))); } delay(2000); // ausgefüllte Rechtecke zeichnen tft.fillScreen(SCHWARZ); for (int i = 1; i < tft.width() / 2; i+=10) { tft.fillRect(i, i, i, i, tft.color565(random(ROT),random(GRUEN),random(BLAU))); delay(50); } delay(2000); // Dreiecke tft.fillScreen(SCHWARZ); for (int i = 1; i <tft.width(); i+=10) { tft.fillTriangle(i, i, 100, 100, 1, tft.width(), tft.color565(random(255),random(255),random(255))); delay(50); } } |
Quellen
Letzte Aktualisierung: