Arduino - ILI9341 ILI9488 ST7789 TFT LCD Touch Display SPI-Schnittstelle
Dieses Tutorial zeigt Ihnen, wie Sie ein SPI TFT Display mit Arduino verwenden. Im Detail werden wir lernen:
- Wie Sie ein SPI TFT Display Modul mit einem Arduino verbinden.
- Wie Sie Formen, Linien zeichnen und Flächen mit Farben füllen.
- Wie Sie Text und numerische Werte auf dem Bildschirm anzeigen.
- Wie Sie Bitmap-Bilder aus dem Programmspeicher (PROGMEM) zeichnen.
- Wie Sie Bitmap-Bilder von einer SD-Karte laden und zeichnen.
- Wie Sie Text mit einer benutzerdefinierten externen Schriftart rendern.
- Wie Sie rohe Touch-Koordinaten von einem XPT2046-Controller lesen.
- Wie Sie auf dem Bildschirm zeichnen, indem Sie einen Finger über die Anzeige ziehen.
- Wie Sie interaktive Touch-Schaltflächen auf dem Bildschirm erstellen.
- Wie Sie den Touch-Bildschirm kalibrieren.
- Wie Sie einen sekundären oder benutzerdefinierten SPI-Bus für die Anzeige verwenden.
Dieses Tutorial behandelt sowohl Touch- als auch Non-Touch SPI TFT LCD Displays. Es funktioniert mit 1,3, 1,54, 2,2, 2,4, 2,8, 3,2 und 3,5 Zoll Panels, die von ILI9341, ILI9488 oder ST7789 Controller Chips gesteuert werden.

Tipp — einfachere und schnellere Alternative: Wenn Sie Arduino Uno verwenden, erwägen Sie den TFT Touch Shield. Er wird direkt auf den Uno-Header gesteckt — keine Jumper-Drähte und kein Level Converter erforderlich. Er verwendet eine 8-Bit-Parallelschnittstelle, die Pixeldaten erheblich schneller als SPI überträgt.
Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables STEM V3 Starter-Kit (Arduino enthalten) | |
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über das SPI TFT Display
Ein SPI TFT Display ist ein Vollfarb-LCD-Panel, das über den Serial Peripheral Interface (SPI) Bus gesteuert wird. Es verwendet einen dedizierten Driver Chip - meistens die ILI9341, ILI9488 oder ST7789 - um Zeichnungsbefehle zu empfangen und Pixeldaten zu verwalten.
Wichtige Fakten:
- ILI9341 - 16-Bit RGB565 Farbe, bis zu 40 MHz SPI.
- ILI9488 - 18-Bit RGB666 Farbe über SPI, bis zu 24 MHz SPI.
- ST7789 - 16-Bit RGB565 Farbe, bis zu 40 MHz SPI.
Empfehlung: Wenn Sie noch kein Display gekauft haben, empfehlen wir den ST7789 Driver. Er ist weit verbreitet, läuft mit voller 40 MHz SPI-Geschwindigkeit und ist die einfachste Wahl für neue Projekte.
Pinbelegung
Die meisten SPI TFT LCD Displays haben die folgenden Pins:
Display Pins:
| Pin | Funktion |
|---|---|
| VCC | Stromversorgung |
| GND | Masse |
| CS | Chip Select — wird auf Low gezogen, um die Anzeige auf dem SPI Bus auszuwählen |
| DC / RS | Daten / Befehl Select — High für Pixeldaten, Low für Befehle |
| RST | Hardware Reset — optional; mit 3,3V verbinden, falls nicht verwendet |
| MOSI / SDI / SDA | SPI Dateneingabe (MCU → Display) |
| SCK / CLK | SPI Takt |
| MISO / SDO | SPI Datenausgang (Display → MCU) — optional für nur Display-Verwendung |
| LED / BL / BLK | Hintergrundbeleuchtung Stromversorgung — mit 3,3V oder einem PWM-Pin zum Dimmen verbinden |
SD Kartenpin (falls Ihre Anwendung Zugriff auf die SD-Karte benötigt):
| Pin | Funktion |
|---|---|
| SD_CS / TF_CS | SD-Karte Chip Select |
| MOSI / SDI | MOSI — Daten von MCU zu SD-Karte |
| SCK / CLK | SCK — SPI Takt |
| MISO / SDO | MISO — Daten von SD-Karte zu MCU |
Für TFT Displays mit Touch-Unterstützung gibt es zusätzliche Touch-Pins (falls Ihre Anwendung die Touch-Funktion verwendet und das Display diese unterstützt):
| Pin | Funktion |
|---|---|
| T_CS | Touch Controller Chip Select |
| T_CLK | SCK — SPI Takt |
| T_DIN | MOSI — Daten von MCU zu Touch Controller |
| T_DO | MISO — Daten von Touch Controller zu MCU |
| T_IRQ | Touch Interrupt — optional; signalisiert, wenn der Bildschirm berührt wird |
Hinweis: Einige Non-Touch Display Module stellen auch T_CS, T_CLK, T_DIN, T_DO und T_IRQ Pins bereit. Diese sind auf diesen Boards nicht funktional — der Touch Controller IC ist nicht bestückt. Sie erscheinen, weil die PCB dasselbe Layout wie die Touch-aktivierte Version wiederverwendet, um Fertigungsvarianten zu reduzieren.

Verdrahtungsschema
⚠ Wichtig — Spannungsabweichung: Arduino Uno ist eine 5V Platine. Seine GPIO Pins geben 5V Logik aus, aber SPI TFT Displays arbeiten bei 3,3V. Das direkte Verbinden der Signal-Leitungen (MOSI, SCK, CS, DC, RST und T_CS bei Verwendung von Touch) vom Uno zur Anzeige beschädigt das Display. Sie müssen einen 5V bis 3,3V Level Converter auf jeder MCU-gesteuerten Signalleitung zwischen dem Uno und der Anzeige verwenden. Die MISO Leitung (Display → MCU) benötigt keinen Level Converter. Ein einzelnes 4-Kanal-Modul reicht für die Non-Touch-Verdrahtung aus; die With-Touch-Verdrahtung benötigt 6 Kanäle insgesamt (T_CS hinzufügen), verwenden Sie also zwei 4-Kanal-Module oder ein 8-Kanal-Modul. Verbinden Sie das TFT VCC mit dem 3,3V Pin des Uno.
Ohne Touch
Verbinden Sie MOSI mit D11, SCK mit D13, MISO mit D12 am Arduino Uno. CS, DC und RST können beliebige verfügbare GPIO sein — D10, D9, D8 werden in den Beispielen verwendet.
Display:
| TFT Pin | Arduino Uno Pin | Beschreibung |
|---|---|---|
| VCC | 3,3V | Stromversorgung (nur 3,3V — das Display läuft auf 3,3V) |
| GND | GND | Masse |
| CS | D10 | Chip Select |
| DC / RS | D9 | Daten / Befehl Select |
| RST | D8 | Reset (optional) |
| MOSI / SDI | D11 | Hardware SPI MOSI |
| SCK | D13 | Hardware SPI Takt |
| MISO / SDO | D12 | Hardware SPI MISO (optional) |
| LED / BL | 3,3V | Hintergrundbeleuchtung Stromversorgung |
SD-Karte (falls Ihre Anwendung Zugriff auf die SD-Karte benötigt):
| SD Pin | Arduino Uno Pin | Beschreibung |
|---|---|---|
| SD_CS / TF_CS | beliebiger freier GPIO | SD-Karte Chip Select |
| MOSI / SDI | D11 | Mit Display MOSI gemeinsam genutzt (D11) |
| SCK / CLK | D13 | Mit Display SCK gemeinsam genutzt (D13) |
| MISO / SDO | D12 | Mit Display MISO gemeinsam genutzt (D12) |

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Mit Touch
Verbinden Sie den XPT2046 Touch Controller mit dem Arduino Uno SPI Bus, wobei D11, D13 und D12 mit dem Display gemeinsam genutzt werden.
Display:
| TFT Pin | Arduino Uno Pin | Beschreibung |
|---|---|---|
| VCC | 3,3V | Stromversorgung (nur 3,3V — das Display läuft auf 3,3V) |
| GND | GND | Masse |
| CS | D10 | Chip Select |
| DC / RS | D9 | Daten / Befehl Select |
| RST | D8 | Reset (optional) |
| MOSI / SDI | D11 | Hardware SPI MOSI |
| SCK | D13 | Hardware SPI Takt |
| MISO / SDO | D12 | Hardware SPI MISO (optional) |
| LED / BL | 3,3V | Hintergrundbeleuchtung Stromversorgung |
Touch Controller (falls Ihre Anwendung die Touch-Funktion verwendet und das Display diese unterstützt):
| Touch Pin | Arduino Uno Pin | Beschreibung |
|---|---|---|
| T_CS | beliebiger freier GPIO | Touch Chip Select |
| T_IRQ | beliebiger freier GPIO | Touch Interrupt (optional) |
| T_DIN | D11 | Mit Display MOSI gemeinsam genutzt (D11) |
| T_CLK | D13 | Mit Display SCK gemeinsam genutzt (D13) |
| T_DO | D12 | Mit Display MISO gemeinsam genutzt (D12) |

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Falls Ihr MCU zwei oder mehr Hardware-SPI-Schnittstellen hat, können Sie jedes Peripheriegerät (Display, SD-Karte, Touch Controller) einem dedizierten SPI-Bus zuweisen. Falls Ihr MCU nur eine Hardware-SPI-Schnittstelle hat, nutzen alle drei Peripheriegeräte die gleichen drei Datenleitungen (MOSI, SCK, MISO) — auf dem Uno sind dies D11, D13 und D12. Jedes Peripheriegerät hat seinen eigenen CS-Pin, sodass jeweils nur eines aktiv ist. Die DIYables_TFT_SPI Bibliothek verwaltet sowohl das Display als auch den XPT2046 Touch Controller durch eine einzelne API — es ist keine separate SPI Bibliothek für die Touch-Seite erforderlich.
Bibliotheksinstallation
- Verbinden Sie die Arduino Platine mit Ihrem Computer über ein USB-Kabel.
- Öffnen Sie die Arduino IDE, wählen Sie die richtige Platine und den Port.
- Navigieren Sie zum Bibliotheken Symbol auf der linken Leiste der Arduino IDE.
- Suchen Sie "DIYables_TFT_SPI", dann finden Sie die DIYables_TFT_SPI Bibliothek von DIYables.
- Klicken Sie auf die Schaltfläche Installieren, um die neueste Version der Bibliothek zu installieren.
- Wenn Sie aufgefordert werden, Abhängigkeiten zu installieren, klicken Sie auf Alle installieren, um auch die Adafruit GFX Bibliothek zu installieren.
- Search for DIYables TFT SPI created by DIYables.io and click the Install button.
Grundstruktur
Jede Skizze, die die DIYables_TFT_SPI Bibliothek verwendet, folgt dieser grundlegenden Struktur:
Die Breite und Höhe, die an den Konstruktor übergeben werden, müssen mit der in dem Datenblatt Ihres Moduls gedruckten physischen Auflösung übereinstimmen. Module mit dem gleichen Driver Chip werden in verschiedenen Größen verkauft - zum Beispiel sind ST7789 Module in 240x320, 240x240, 135x240 und anderen Varianten erhältlich.
Arduino Code - Formen zeichnen
Das DrawShapes Beispiel zeigt, wie Sie Kreise, Dreiecke, Rechtecke, abgerundete Rechtecke und Linien mit den integrierten Adafruit GFX Zeichenfunktionen zeichnen.
Schnelle Schritte
- Verbinden Sie das TFT Display mit dem Arduino nach dem Verdrahtungsschema oben.
- Verbinden Sie die Arduino Platine mit Ihrem Computer über ein USB-Kabel.
- Öffnen Sie die Arduino IDE, wählen Sie die richtige Platine und den Port.
- Kopieren Sie den obigen Code und fügen Sie ihn in den Editor der Arduino IDE ein.
- Ändern Sie die Konstruktor-Zeile, um Ihren Display Driver und Ihre Auflösung anzupassen.
- Klicken Sie auf die Schaltfläche Hochladen in der Arduino IDE, um den Code auf Arduino hochzuladen.
- Das Display zeigt ein Muster farbiger Formen, das sich alle paar Sekunden ausfüllt und neu zeichnet.
API Zusammenfassung
| Methode | Beschreibung | Beispiel |
|---|---|---|
| TFT_display.begin() | Initialisieren Sie das Display. Rufen Sie einmal in setup() auf. | TFT_display.begin(); |
| TFT_display.setRotation(r) | Legen Sie die Bildschirmausrichtung fest. 0=Hochformat, 1=Querformat. | TFT_display.setRotation(1); |
| TFT_display.fillScreen(color) | Füllen Sie den gesamten Bildschirm mit einer Farbe. | TFT_display.fillScreen(BLACK); |
| DIYables_TFT_SPI::colorRGB(r,g,b) | Konvertieren Sie RGB-Werte in eine 16-Bit-Farbe. | colorRGB(255, 0, 0) |
| TFT_display.drawCircle(x,y,r,color) | Zeichnen Sie einen Kreis Umriss. | TFT_display.drawCircle(60, 60, 30, RED); |
| TFT_display.fillCircle(x,y,r,color) | Zeichnen Sie einen gefüllten Kreis. | TFT_display.fillCircle(60, 60, 30, RED); |
| TFT_display.drawRect(x,y,w,h,color) | Zeichnen Sie einen Rechteck Umriss. | TFT_display.drawRect(10, 10, 80, 40, BLUE); |
| TFT_display.fillRect(x,y,w,h,color) | Zeichnen Sie ein gefülltes Rechteck. | TFT_display.fillRect(10, 10, 80, 40, BLUE); |
| TFT_display.drawLine(x0,y0,x1,y1,color) | Zeichnen Sie eine Linie. | TFT_display.drawLine(0, 0, 100, 100, GREEN); |
Arduino Code - Text und Nummer anzeigen
Das ShowTextAndNumber Beispiel zeigt, wie Sie Text Strings und numerische Werte auf dem Display mit verschiedenen Größen und Positionen drucken.
Schnelle Schritte
- Verbinden Sie das Display und laden Sie den Code wie oben beschrieben hoch.
- Das Display druckt mehrere Textzeilen mit verschiedenen Farben und Größen.
API Zusammenfassung
| Methode | Beschreibung | Beispiel |
|---|---|---|
| TFT_display.setTextColor(color) | Legen Sie die Vordergrundfarbe des Textes fest. | TFT_display.setTextColor(WHITE); |
| TFT_display.setTextSize(size) | Legen Sie die Textskala fest (1=6x8 px, 2=12x16 px, ...). | TFT_display.setTextSize(2); |
| TFT_display.setCursor(x, y) | Bewegen Sie den Text Cursor zu einer Position. | TFT_display.setCursor(10, 20); |
| TFT_display.print(value) | Drucken Sie eine Zeichenkette oder Nummer am Cursor. | TFT_display.print("Hello!"); |
| TFT_display.println(value) | Drucken Sie und bewegen Sie den Cursor zur nächsten Zeile. | TFT_display.println(42); |
Arduino Code - Bild zeichnen
Das DrawImage Beispiel zeigt ein RGB565 Vollfarb Bitmap aus dem Programmspeicher (PROGMEM). Die Pixel-Daten befinden sich in einer Companion Bitmap.h Header Datei als const uint16_t Array und werden niemals in SRAM kopiert, was es für speicherbegrenzte Platinen geeignet macht. Fügen Sie bitmap.h zum gleichen Ordner wie die Skizze vor dem Kompilieren hinzu.
Schnelle Schritte
- Verbinden Sie das TFT Display mit dem Arduino nach dem Verdrahtungsschema oben.
- Platzieren Sie bitmap.h im gleichen Ordner wie die Skizze.
- Verbinden Sie die Arduino Platine mit Ihrem Computer über ein USB-Kabel.
- Öffnen Sie die Arduino IDE, wählen Sie die richtige Platine und den Port, fügen Sie den Code ein und klicken Sie auf Hochladen.
- Das Display zeigt das im Programmspeicher gespeicherte Bitmap Bild.
API Zusammenfassung
| Methode | Beschreibung | Beispiel |
|---|---|---|
| TFT_display.drawRGBBitmap(x,y,bitmap,w,h) | Zeichnen Sie ein RGB565 Bitmap aus PROGMEM an der Position (x, y). Das Array muss PROGMEM deklariert sein. | TFT_display.drawRGBBitmap(0, 0, myImage, 240, 320); |
| TFT_display.fillScreen(color) | Löschen Sie den Bildschirm auf eine Volltonfarbe, bevor Sie das Bitmap zeichnen. | TFT_display.fillScreen(BLACK); |
Arduino Code - Bild von SD-Karte zeichnen
Das DrawImageSDcard Beispiel liest eine rohe RGB565 Binärbild Datei direkt von einer Micro SD-Karte und streamt Pixel-Daten in Chunks zum Display, wodurch die Notwendigkeit entfällt, das gesamte Bild in RAM zu laden. Verbinden Sie ein SD-Karte Modul mit dem gleichen SPI-Bus wie das Display und definieren Sie seinen CS Pin als SD_CS_PIN in der Skizze.
Schnelle Schritte
- Verbinden Sie das SD-Karte Modul mit dem Arduino. Teilen Sie die MOSI (D11), SCK (D13) und MISO (D12) Leitungen mit dem Display. Verbinden Sie das SD Modul CS mit dem als SD_CS_PIN definierten Pin.
- Kopieren Sie ein rohes RGB565 Binärbild auf die Wurzel der SD-Karte. Die Bild Dimensionen müssen mit der Breite und Höhe des Panels übereinstimmen.
- Verbinden Sie die Arduino Platine mit Ihrem Computer über ein USB-Kabel.
- Öffnen Sie die Arduino IDE, wählen Sie die richtige Platine und den Port, fügen Sie den Code ein und klicken Sie auf Hochladen.
- Das Display zeigt das von der SD-Karte gestreamte Bild.
API Zusammenfassung
| Methode | Beschreibung | Beispiel |
|---|---|---|
| TFT_display.startWrite() | Beginnen Sie eine direkte SPI Transaktion. Hält CS für die Dauer bestätigt. | TFT_display.startWrite(); |
| TFT_display.setAddrWindow(x0,y0,x1,y1) | Legen Sie den rechteckigen Bereich von Pixeln zum Schreiben fest. | TFT_display.setAddrWindow(0, 0, 239, 319); |
| TFT_display.pushColors(buf, len) | Streamen Sie einen Puffer von RGB565 Pixel Wörtern zum Display. | TFT_display.pushColors(buf, 512); |
| TFT_display.endWrite() | Beenden Sie die SPI Transaktion und geben Sie CS frei. | TFT_display.endWrite(); |
Arduino Code - Externe Schriftart verwenden
Das UseExternalFont Beispiel rendert Text unter Verwendung einer Adafruit GFX kompatiblen benutzerdefinierten Schriftart für schärfere, höherwertige Glyphen. Die Schriftart wird als Header Datei eingebunden und durch Aufruf von setFont() aktiviert. Übergeben Sie NULL, um jederzeit zur integrierten 5×7 Pixel Schriftart zurückzukehren.
Schnelle Schritte
- Verbinden Sie das TFT Display mit dem Arduino nach dem Verdrahtungsschema oben.
- Verbinden Sie die Arduino Platine mit Ihrem Computer über ein USB-Kabel.
- Öffnen Sie die Arduino IDE, wählen Sie die richtige Platine und den Port, fügen Sie den Code ein und klicken Sie auf Hochladen.
- Das Display rendert Text in der benutzerdefinierten Schriftart. Vergleichen Sie sie mit der integrierten Schriftart, um die Verbesserung der Schärfe zu sehen.
API Zusammenfassung
| Methode | Beschreibung | Beispiel |
|---|---|---|
| TFT_display.setFont(&FontName) | Wechseln Sie zu einer benutzerdefinierten GFX kompatiblen Schriftart. Übergeben Sie NULL, um die integrierte 5×7 Schriftart wiederherzustellen. | TFT_display.setFont(&FreeSans12pt7b); |
| TFT_display.setCursor(x, y) | Positionieren Sie den Text Cursor vor dem Aufruf von print(). | TFT_display.setCursor(10, 40); |
| TFT_display.setTextColor(color) | Legen Sie die Vordergrundfarbe des Textes fest. | TFT_display.setTextColor(WHITE); |
| TFT_display.print(text) | Drucken Sie eine Zeichenkette unter Verwendung der aktiven Schriftart. | TFT_display.print("Hello!"); |
Arduino Code - Touch Punkt abrufen
Das TouchGetPoint Beispiel initialisiert den XPT2046 Touch Controller und liest rohe ADC Koordinaten, wann immer der Bildschirm berührt wird. Rohe Werte werden zum Serial Monitor gedruckt. Führen Sie dieses Beispiel zuerst aus, um den numerischen Bereich Ihres Panels zu verstehen, bevor Sie die Kalibrierung anwenden.
Verdrahtung: Verbinden Sie T_CLK, T_DIN und T_DO mit den gleichen SPI Pins wie das Display (D13, D11, D12). Verbinden Sie T_CS mit Pin 7 und T_IRQ mit Pin 6. Der XPT2046 teilt den SPI-Bus mit dem Display.
Schnelle Schritte
- Verbinden Sie den XPT2046 Touch Controller mit dem Arduino. T_CLK→D13, T_DIN→D11, T_DO→D12 (gemeinsam mit Display). T_CS→D7, T_IRQ→D6.
- Verbinden Sie die Arduino Platine mit Ihrem Computer über ein USB-Kabel.
- Öffnen Sie die Arduino IDE, wählen Sie die richtige Platine und den Port, fügen Sie den Code ein und klicken Sie auf Hochladen.
- Öffnen Sie den Serial Monitor bei 9600 Baud. Berühren Sie den Bildschirm, um rohe X, Y und Druck Z Werte zu drucken.
API Zusammenfassung
| Methode | Beschreibung | Beispiel |
|---|---|---|
| TFT_display.initTouchSPI(cs, irq) | Initialisieren Sie den XPT2046 auf dem gemeinsamen SPI Bus. Übergeben Sie -1 für irq, falls der Pin nicht verbunden ist. | TFT_display.initTouchSPI(7, 6); |
| TFT_display.readTouchRaw(x, y, z) | Lesen Sie rohe ADC Werte vom Touch Controller. Gibt true zurück, wenn der Bildschirm berührt wird. | TFT_display.readTouchRaw(x, y, z); |
Arduino Code - Touch Zeichnen
Das TouchDraw Beispiel verwandelt die Anzeige in eine Finger-Malerei-Leinwand. Wenn Sie einen Finger über den Bildschirm ziehen, werden farbige Punkte an jeder Touch-Koordinate mit kalibrierten Positionen platziert und erstellen so eine durchgehende gezogene Linie.
Schnelle Schritte
- Verbinden Sie den XPT2046 Touch Controller mit dem Arduino wie im Touch Punkt abrufen Abschnitt oben beschrieben.
- Verbinden Sie die Arduino Platine mit Ihrem Computer über ein USB-Kabel.
- Öffnen Sie die Arduino IDE, wählen Sie die richtige Platine und den Port, fügen Sie den Code ein und klicken Sie auf Hochladen.
- Ziehen Sie einen Finger über die Anzeige, um auf dem Bildschirm zu zeichnen. Heben Sie es an und ziehen Sie erneut, um einen neuen Strich zu beginnen.
API Zusammenfassung
| Methode | Beschreibung | Beispiel |
|---|---|---|
| TFT_display.initTouchSPI(cs, irq) | Initialisieren Sie den XPT2046 auf dem gemeinsamen SPI Bus. | TFT_display.initTouchSPI(7, 6); |
| TFT_display.setTouchCalibration(minX,maxX,minY,maxY) | Ordnen Sie rohe ADC Werte Bildschirm Pixel Koordinaten zu. Erhalten Sie die vier Werte aus dem TouchCalibration Beispiel. | TFT_display.setTouchCalibration(200, 3800, 300, 3700); |
| TFT_display.setTouchInvertX(invert) / TFT_display.setTouchInvertY(invert) | Dreht die Touch-Achse, wenn X oder Y auf Ihrem bestimmten Panel oder Batch gespiegelt wird. Rufen Sie VOR setTouchCalibration() auf. | TFT_display.setTouchInvertY(true); |
| TFT_display.getTouch(x, y) | Erhalten Sie kalibrierte Touch-Position in Bildschirm Pixeln. Gibt true zurück, wenn der Bildschirm berührt wird. | if (TFT_display.getTouch(x, y)) { ... } |
| TFT_display.fillCircle(x, y, r, color) | Zeichnen Sie einen gefüllten Punkt an der Touch-Position. | TFT_display.fillCircle(x, y, 3, RED); |
Arduino Code - Touch Schaltfläche
Das TouchButton Beispiel zeichnet rechteckige Schaltflächen auf dem Bildschirm und erkennt Tippen unter Verwendung kalibrierter Touch-Koordinaten. Wenn ein Button Bereich gedrückt wird, ändert er die Farbe und löst eine Aktion aus. Dieses Beispiel zeigt, wie Sie eine einfache Touch UI erstellen.
T_IRQ muss nicht für die polling basierte Touch Erkennung verbunden sein. Übergeben Sie -1 als irq Argument, um es zu deaktivieren.
Schnelle Schritte
- Verbinden Sie T_CS mit Pin 7. T_IRQ kann unverbunden gelassen werden (übergeben Sie -1 im Code).
- Verbinden Sie die Arduino Platine mit Ihrem Computer über ein USB-Kabel.
- Öffnen Sie die Arduino IDE, wählen Sie die richtige Platine und den Port, fügen Sie den Code ein und klicken Sie auf Hochladen.
- Tippen Sie auf die auf dem Display angezeigten Schaltflächen. Jede Schaltfläche ändert die Farbe, wenn sie gedrückt wird.
API Zusammenfassung
| Methode | Beschreibung | Beispiel |
|---|---|---|
| TFT_display.initTouchSPI(cs, irq) | Initialisieren Sie den XPT2046. Übergeben Sie -1 für irq, um den Polling Modus ohne den Interrupt Pin zu verwenden. | TFT_display.initTouchSPI(7, -1); |
| TFT_display.setTouchCalibration(minX,maxX,minY,maxY) | Wenden Sie Kalibrierungskonstanten an, so dass getTouch() genaue Pixel Koordinaten zurückgibt. | TFT_display.setTouchCalibration(200, 3800, 300, 3700); |
| TFT_display.setTouchInvertX(invert) / TFT_display.setTouchInvertY(invert) | Dreht die Touch-Achse, wenn X oder Y auf Ihrem bestimmten Panel oder Batch gespiegelt wird. Rufen Sie VOR setTouchCalibration() auf. | TFT_display.setTouchInvertY(true); |
| TFT_display.getTouch(x, y) | Erhalten Sie kalibrierte Touch Koordinaten. Gibt true zurück, wenn der Bildschirm gedrückt wird. | if (TFT_display.getTouch(x, y)) { ... } |
| TFT_display.fillRect(x, y, w, h, color) | Zeichnen Sie ein Button Hintergrund Rechteck. | TFT_display.fillRect(10, 10, 120, 60, BLUE); |
Arduino Code - Touch Kalibrierung
Das TouchCalibration Beispiel führt Sie durch das Finden der richtigen Kalibrierungswerte für Ihr spezifisches XPT2046 Panel. Berühren Sie die Ecken des Bildschirms, wenn Sie aufgefordert werden, und lesen Sie die Min/Max X und Y Werte aus dem Serial Monitor. Kopieren Sie diese vier Nummern in setTouchCalibration() in allen anderen Touch Beispielen.
Schnelle Schritte
- Verbinden Sie den XPT2046 Touch Controller mit dem Arduino wie im Touch Punkt abrufen Abschnitt beschrieben.
- Verbinden Sie die Arduino Platine mit Ihrem Computer über ein USB-Kabel.
- Öffnen Sie die Arduino IDE, wählen Sie die richtige Platine und den Port, fügen Sie den Code ein und klicken Sie auf Hochladen.
- Öffnen Sie den Serial Monitor bei 9600 Baud. Berühren Sie jede Ecke des Bildschirms wie angewiesen.
- Notieren Sie die vier gedruckten Werte (minX, maxX, minY, maxY) und fügen Sie sie in setTouchCalibration() in Ihren anderen Touch Skizzen ein.
API Zusammenfassung
| Methode | Beschreibung | Beispiel |
|---|---|---|
| TFT_display.initTouchSPI(cs, irq) | Initialisieren Sie den XPT2046 Touch Controller. | TFT_display.initTouchSPI(7, 6); |
| TFT_display.readTouchRaw(x, y, z) | Lesen Sie rohe ADC Werte, um den Kalibrierungsbereich zu bestimmen. | TFT_display.readTouchRaw(x, y, z); |
| TFT_display.setTouchCalibration(minX,maxX,minY,maxY) | Speichern Sie Kalibrierungskonstanten, so dass getTouch() rohe Werte zu Pixel Koordinaten abbildet. | TFT_display.setTouchCalibration(200, 3800, 300, 3700); |
| TFT_display.setTouchInvertX(invert) / TFT_display.setTouchInvertY(invert) | Dreht die Touch-Achse, wenn X oder Y auf Ihrem bestimmten Panel oder Batch gespiegelt wird. Rufen Sie VOR der Kalibrierung auf, so dass die gespeicherten Werte Ihrem Panel entsprechen. | TFT_display.setTouchInvertY(true); |
Arduino Code - Benutzerdefiniertes SPI
Das CustomSPI Beispiel demonstriert, wie Sie einen expliziten SPIClass Pointer an den Display Konstruktor übergeben. Dies ist wichtig, wenn ein anderes Peripheriegerät bereits den Standard SPI Bus besetzt oder wenn Sie die SPI Taktfrequenz für lange oder verrauschte Kabel begrenzen müssen.
Der Arduino Uno hat einen Hardware SPI Bus auf D11 (MOSI), D13 (SCK) und D12 (MISO). Das Beispiel zeigt, wie Sie &SPI explizit übergeben und wie Sie eine niedrigere maximale SPI-Geschwindigkeit konfigurieren.
Schnelle Schritte
- Verbinden Sie das TFT Display mit dem Arduino wie im Verdrahtungsschema gezeigt.
- Verbinden Sie die Arduino Platine mit Ihrem Computer über ein USB-Kabel.
- Öffnen Sie die Arduino IDE, wählen Sie die richtige Platine und den Port, fügen Sie den Code ein und klicken Sie auf Hochladen.
- Das Display wird auf dem expliziten SPI Bus initialisiert und zeigt ein Farbbalken Test Muster.
API Zusammenfassung
| Methode | Beschreibung | Beispiel |
|---|---|---|
| DIYables_ILI9341_SPI(w,h,cs,dc,rst,spi) | Konstruktor, der einen expliziten SPIClass Pointer als letztes Argument akzeptiert. Lassen Sie es weg, um auf &SPI zu standardisieren. | DIYables_ILI9341_SPI tft(240, 320, 10, 9, 8, &SPI); |
| TFT_display.begin() | Initialisieren Sie das Display auf dem konfigurierten SPI Bus. | TFT_display.begin(); |
Problembehandlung
Falls der Code nicht funktioniert, gibt es einige häufige Probleme, die Sie beheben können:
- Schwarzer Bildschirm: Überprüfen Sie, ob VCC, GND, CS, DC, MOSI und SCK alle korrekt verdrahtet sind. Eine fehlende CS oder DC Leitung ist die häufigste Ursache.
- Falscher Driver: Stellen Sie sicher, dass Sie die Konstruktor-Zeile kommentiert haben, die Ihrem Modul Driver Chip (ILI9341, ILI9488 oder ST7789) entspricht. Ein nicht übereinstimmender Driver zeigt einen leeren oder vollständig weißen Bildschirm.
- Falsche Auflösung: Die an den Konstruktor übergebene Breite und Höhe müssen zu Ihrem Panel passen. Eine falsche Größe verursacht, dass das Bild verschoben oder abgeschnitten wird.
- Müll auf dem Bildschirm: Überprüfen Sie, ob MOSI und SCK auf den Hardware SPI Pins (D11 und D13 am Uno) sind. Ein Tausch ist ein häufiger Fehler.
- Touch reagiert nicht: Führen Sie das TouchCalibration Beispiel aus, um die richtigen Kalibrierungswerte für Ihr Panel zu finden.
Plattformunterstützung
Die DIYables_TFT_SPI Bibliothek verwendet Standard Arduino SPI APIs und unterstützt alle Arduino kompatiblen Plattformen (architectures=*). Die Adafruit GFX Bibliothek Abhängigkeit ist ebenfalls plattformübergreifend.