Arduino Uno R4 - ILI9341 ILI9488 ST7789 TFT LCD Touch Display SPI-Schnittstelle
Der Arduino Uno R4 – erhältlich als Minima und WiFi – verfügt über einen 48-MHz-Renesas-RA4M1-Prozessor und mehr SRAM als der klassische Uno, behält aber das gleiche Header-Layout. Die Hardware-SPI-Pins befinden sich an den gleichen physikalischen Positionen, daher funktioniert jede TFT-Verdrahtung, die auf dem Uno R3 funktioniert, direkt auf dem Uno R4 ohne Änderungen.
In dieser Anleitung werden Sie:
- Ein SPI-TFT-Display mit dem Arduino Uno R4 verdrahten.
- Formen zeichnen und Bereiche mit Farbe füllen.
- Text und Zahlen auf dem Bildschirm anzeigen.
- Bitmap-Bilder zeichnen, die im Programmspeicher (PROGMEM) gespeichert sind.
- Bitmap-Bilder zeichnen, die von einer SD-Karte geladen sind.
- Text mit einer benutzerdefinierten externen Schriftart rendern.
- Rohe Touch-Koordinaten von einem XPT2046-Controller auslesen.
- Auf dem Bildschirm zeichnen, indem Sie einen Finger über das Display ziehen.
- Interaktive Touch-Schaltflächen erstellen.
- Den Touchscreen kalibrieren.
- Einen sekundären oder benutzerdefinierten SPI-Bus für das Display verwenden.
Diese Anleitung behandelt Touch- und Non-Touch-SPI-TFT-LCD-Displays. Sie funktioniert mit 1,3, 1,54, 2,2, 2,4, 2,8, 3,2 und 3,5 Zoll Panels mit ILI9341-, ILI9488- oder ST7789-Controller-Chips.

Tipp – einfachere und schnellere Alternative: Wenn Sie einen Arduino Uno R4 verwenden, ziehen Sie den TFT Touch Shield in Betracht. Er wird direkt auf den Uno R4-Header gesteckt – ohne Jumper-Kabel und ohne Pegelwandler erforderlich. Verwendetes eine 8-Bit-Parallelschnittstelle, die Pixeldaten erheblich schneller überträgt als SPI.
Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables STEM V4 IoT Starter-Kit (Arduino enthalten) | |
| 1 | × | DIYables STEM V4B IoT Starter-Kit (Arduino enthalten) | |
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
SPI-TFT-Display-Übersicht
Ein SPI-TFT-Display ist ein Farb-LCD-Panel, das von einem Controller-Chip über den SPI-Bus gesteuert wird. Die DIYables_TFT_SPI-Bibliothek unterstützt drei häufige Driver-Chips:
- ILI9341 - 16-Bit-RGB565-Farbe, bis 40 MHz SPI.
- ILI9488 - 18-Bit-RGB666-Farbe, bis 24 MHz SPI.
- ST7789 - 16-Bit-RGB565-Farbe, bis 40 MHz SPI.
Empfehlung: Falls Sie noch kein Display gekauft haben, empfehlen wir den ST7789-Treiber. Er ist weit verbreitet, läuft mit voller 40-MHz-SPI-Geschwindigkeit und ist die unkomplizierteste Wahl für neue Projekte.
Die Bibliothek erweitert Adafruit GFX, daher sind alle Standard-Zeichnungs- und Textfunktionen verfügbar.
Pinbelegung
Die meisten SPI-TFT-LCD-Displays haben die folgenden Pins:
Display-Pins:
| Pin | Funktion |
|---|---|
| VCC | Stromversorgung |
| GND | Masse |
| CS | Chip Select – auf niedrig gezogen, um das Display auf dem SPI-Bus auszuwählen |
| DC / RS | Daten / Befehl wählen – hoch für Pixeldaten, niedrig für Befehle |
| RST | Hardware-Reset – optional; mit 3,3V verbinden, falls nicht verwendet |
| MOSI / SDI / SDA | SPI-Daten eingang (MCU → Display) |
| SCK / CLK | SPI-Takt |
| MISO / SDO | SPI-Datenausgang (Display → MCU) – optional für nur Display |
| LED / BL / BLK | Hintergrundbeleuchtung – mit 3,3V oder PWM-Pin verbinden zum Dimmen |
SD-Karten-Pins (falls Ihre Anwendung auf die SD-Karte zugreifen muss):
| Pin | Funktion |
|---|---|
| SD_CS / TF_CS | SD-Karten-Chip-Select |
| MOSI / SDI | MOSI – Daten von MCU zur SD-Karte |
| SCK / CLK | SCK – SPI-Takt |
| MISO / SDO | MISO – Daten von SD-Karte zu MCU |
Für TFT-Displays, die Touch unterstützen, 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 geben auch T_CS-, T_CLK-, T_DIN-, T_DO- und T_IRQ-Pins frei. Diese sind auf diesen Platinen nicht funktional – der Touch-Controller IC ist nicht bestückt. Sie erscheinen, weil die Leiterplatte das gleiche Layout wie die Touch-fähige Version wiederverwendet, um Herstellungsvarianten zu reduzieren.

Verdrahtungsschema
⚠ Wichtig – Spannungskonflikt: Der Arduino Uno R4 ist ein 5V-Board. Seine GPIO-Pins geben 5V-Logik aus, aber SPI-TFT-Displays arbeiten mit 3,3V. Das direkte Verbinden der Signalleitungen (MOSI, SCK, CS, DC, RST und T_CS bei Touch-Verwendung) vom Uno R4 zum Display beschädigt das Display. Sie müssen einen 5V-auf-3,3V-Pegelwandler auf jede vom MCU gesteuerte Signalleitung zwischen dem Uno R4 und dem Display verwenden. Die MISO-Leitung (Display → MCU) benötigt keinen Pegelwandler. Ein einzelnes 4-Kanal-Modul reicht für die Non-Touch-Verdrahtung aus; die With-Touch-Verdrahtung benötigt insgesamt 6 Kanäle (T_CS hinzufügen), daher verwenden Sie zwei 4-Kanal-Module oder ein 8-Kanal-Modul. Verbinden Sie das TFT-VCC mit dem 3,3V-Pin auf dem Uno R4.
Ohne Touch
Verbinden Sie MOSI mit D11, SCK mit D13 und MISO mit D12 auf dem Uno R4. CS, DC und RST können alle verfügbaren GPIO sein – D10, D9 und D8 werden in den Beispielen verwendet.
Display:
| TFT-Pin | Arduino Uno R4 Pin | Beschreibung |
|---|---|---|
| VCC | 3,3V oder 5V | Stromversorgung |
| GND | GND | Masse |
| CS | D10 | Chip Select |
| DC / RS | D9 | Daten / Befehl wählen |
| 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 |
SD-Karte (falls Ihre Anwendung auf die SD-Karte zugreifen muss):
| SD-Pin | Arduino Uno R4 Pin | Beschreibung |
|---|---|---|
| SD_CS / TF_CS | beliebiger freier GPIO | SD-Karten-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 R4 SPI-Bus und teilen Sie D11, D13 und D12 mit dem Display.
Display:
| TFT-Pin | Arduino Uno R4 Pin | Beschreibung |
|---|---|---|
| VCC | 3,3V oder 5V | Stromversorgung |
| GND | GND | Masse |
| CS | D10 | Chip Select |
| DC / RS | D9 | Daten / Befehl wählen |
| 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 |
Touch-Controller (falls Ihre Anwendung die Touch-Funktion verwendet und das Display diese unterstützt):
| Touch-Pin | Arduino Uno R4 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.
Siehe Der beste Weg, den Arduino Uno R4 und andere Komponenten mit Strom zu versorgen.
Falls Ihr MCU zwei oder mehr Hardware-SPI-Schnittstellen hat, können Sie jedes Gerät (Display, SD-Karte, Touch-Controller) seinem eigenen dedizierten SPI-Bus zuweisen. Falls Ihr MCU nur eine Hardware-SPI-Schnittstelle hat, teilen sich alle drei Geräte die gleichen drei Datenleitungen (MOSI, SCK, MISO) – auf dem Uno R4 sind diese D11, D13 und D12. Jedes Gerät hat seinen eigenen CS-Pin, daher ist nur einer gleichzeitig aktiv. Die DIYables_TFT_SPI-Bibliothek verwaltet sowohl das Display als auch den XPT2046-Touch-Controller über eine einzige API – es ist keine separate SPI-Bibliothek für die Touch-Seite erforderlich.
So installieren Sie die Bibliothek
- Stecken Sie den Arduino Uno R4 mit einem USB-Typ-C-Kabel in Ihren Computer.
- Überprüfen Sie in der Arduino IDE, dass das richtige Board (Arduino Uno R4 Minima oder WiFi) und der richtige serieller Anschluss ausgewählt sind.
- Klicken Sie auf das Symbol Bibliotheken in der linken Seitenleiste.
- Geben Sie "DIYables_TFT_SPI" in das Suchfeld ein und suchen Sie die von DIYables veröffentlichte Bibliothek.
- Klicken Sie auf Installieren um die Bibliothek hinzuzufügen. Installieren Sie bei Aufforderung auch die Abhängigkeit Adafruit GFX Library.
- Search for DIYables TFT SPI created by DIYables.io and click the Install button.
Minimale Sketch-Struktur
Alle Sketches, die die DIYables_TFT_SPI-Bibliothek verwenden, haben dieses Skelett:
Übergeben Sie die physikalischen Pixelabmessungen Ihres Panels an den Konstruktor. Module mit dem gleichen Driver-Chip gibt es in verschiedenen Größen.
Formen zeichnen
Das DrawShapes-Beispiel zeigt die Adafruit GFX-Zeichnungsprimitiven: Kreise, Dreiecke, Rechtecke, abgerundete Rechtecke und Linien.
So führen Sie es aus
- Verdrahten Sie das TFT-Modul mit dem Arduino Uno R4, wie in der Verdrahtungsanleitung gezeigt.
- Stecken Sie das USB-Typ-C-Kabel ein.
- Fügen Sie den Code in Arduino IDE ein, wählen Sie die richtige Platine und den richtigen Anschluss, und drücken Sie Upload.
- Das Display zeigt ein Gitter farbiger Formen, das sich alle paar Sekunden aktualisiert.
Kurzreferenz Methoden
| Methode | Was sie macht | Verwendung |
|---|---|---|
| begin() | Initialisieren Sie den Display-Controller. Rufen Sie einmal in setup() auf. | TFT_display.begin(); |
| setRotation(r) | Drehen Sie das Koordinatensystem. 0=Hochformat, 1=Querformat. | TFT_display.setRotation(1); |
| fillScreen(color) | Bildschirm mit einer Volltonfarbe löschen. | TFT_display.fillScreen(WHITE); |
| colorRGB(r,g,b) | Erstellen Sie eine 16-Bit-RGB565-Farbe aus 8-Bit-Komponenten. | colorRGB(0, 128, 255) |
| fillCircle(x,y,r,color) | Zeichnen Sie einen ausgefüllten Kreis. | TFT_display.fillCircle(80, 80, 40, RED); |
| fillRect(x,y,w,h,color) | Zeichnen Sie ein ausgefülltes Rechteck. | TFT_display.fillRect(10, 10, 60, 40, BLUE); |
| drawRoundRect(x,y,w,h,r,color) | Zeichnen Sie eine abgerundete Rechteckkontour. | TFT_display.drawRoundRect(5,5,100,50,10,GREEN); |
Text und Zahlen anzeigen
Das ShowTextAndNumber-Beispiel zeigt, wie Sie Zeichenketten und Zahlen in verschiedenen Größen, Farben und Positionen drucken.
So führen Sie es aus
- Verdrahten und laden Sie wie oben hoch.
- Das Display druckt mehrere Textzeilen und numerische Werte.
Kurzreferenz Methoden
| Methode | Was sie macht | Verwendung |
|---|---|---|
| setTextColor(color) | Legen Sie die Vordergrundtextfarbe fest. | TFT_display.setTextColor(BLACK); |
| setTextSize(size) | Skalieren Sie Text. Größe 1 ist 6x8 Pixel. | TFT_display.setTextSize(2); |
| setCursor(x, y) | Positionieren Sie den Textcursor. | TFT_display.setCursor(10, 30); |
| print(value) | Drucken Sie eine Zeichenkette oder Zahl am Cursor. | TFT_display.print("Temp: "); |
| println(value) | Drucken Sie und fahren Sie zur nächsten Zeile. | TFT_display.println(25.4); |
Bild zeichnen
Das DrawImage-Beispiel zeigt ein vollständiges RGB565-Bitmap-Bild, das im Programmspeicher gespeichert ist. Die Bilddaten werden in bitmap.h als const uint16_t Array mit PROGMEM deklariert. Dies speichert die Pixeldaten im Flash statt im SRAM, damit das Display auch auf Boards mit begrenztem RAM korrekt funktioniert. Kopieren Sie bitmap.h in den Sketch-Ordner, bevor Sie kompilieren.
So führen Sie es aus
- Platzieren Sie bitmap.h im gleichen Ordner wie die Sketch-Datei.
- Verdrahten Sie das TFT-Modul mit dem Arduino Uno R4, wie in der Verdrahtungsanleitung gezeigt.
- Stecken Sie das USB-Typ-C-Kabel ein.
- Fügen Sie den Code in Arduino IDE ein, bestätigen Sie die Platine und den Anschluss, und drücken Sie Upload.
- Das Display zeigt das Bitmap-Bild, das aus dem Programmspeicher geladen wurde.
Kurzreferenz Methoden
| Methode | Was sie macht | Verwendung |
|---|---|---|
| drawRGBBitmap(x,y,bitmap,w,h) | Zeichnen Sie ein RGB565-PROGMEM-Bitmap, das bei Pixel (x, y) beginnt. | TFT_display.drawRGBBitmap(0, 0, myImage, 240, 320); |
| fillScreen(color) | Löschen Sie den Bildschirm vor dem Zeichnen des Bildes. | TFT_display.fillScreen(BLACK); |
Bild von SD-Karte zeichnen
Das DrawImageSDcard-Beispiel liest eine roh RGB565-Binärdatei von einer Micro-SD-Karte und überträgt Pixeldaten direkt in kleinen Chunks an das Display. Dieser Ansatz streamt das Bild, ohne jemals das vollständige Bild im RAM zu halten, was es praktisch für große Panels macht.
Verbinden Sie das SD-Kartenmodul mit dem gleichen SPI-Bus wie das Display. Teilen Sie MOSI (D11), SCK (D13) und MISO (D12). Weisen Sie dem SD-Modul einen separaten CS-Pin zu – definieren Sie ihn als SD_CS_PIN im Sketch.
So führen Sie es aus
- Verdrahten Sie das SD-Modul mit dem Arduino Uno R4. Teilen Sie den SPI-Bus (D11/D13/D12) mit dem Display und verbinden Sie SD CS mit Ihrem gewählten Pin.
- Kopieren Sie eine roh RGB565-Binärdatei auf die Wurzel der SD-Karte. Bilddimensionen müssen der Panel-Auflösung entsprechen.
- Stecken Sie das USB-Typ-C-Kabel ein.
- Fügen Sie den Code in Arduino IDE ein, bestätigen Sie Platine und Anschluss, und drücken Sie Upload.
- Das Bild wird von der Karte gelesen und auf dem Bildschirm angezeigt.
Kurzreferenz Methoden
| Methode | Was sie macht | Verwendung |
|---|---|---|
| startWrite() | Beginnen Sie eine direkte SPI-Transaktion, halten Sie CS bestätigt. | TFT_display.startWrite(); |
| setAddrWindow(x0,y0,x1,y1) | Definieren Sie den rechteckigen Pixelbereich zum Schreiben. | TFT_display.setAddrWindow(0, 0, 239, 319); |
| pushColors(buf, len) | Senden Sie einen Buffer von RGB565-Pixelwerten an das Display. | TFT_display.pushColors(buf, 512); |
| endWrite() | Beenden Sie die SPI-Transaktion und geben Sie CS frei. | TFT_display.endWrite(); |
Externe Schriftart verwenden
Das UseExternalFont-Beispiel renderiert Bildschirmtext mit einer benutzerdefinierten Adafruit GFX-kompatiblen Schriftart. Im Vergleich zur integrierten 5×7-Bitmap-Schriftart bieten benutzerdefinierte Schriftarten bessere Lesbarkeit und Gestaltung. Die Schriftartdatei ist als Header enthalten und wird mit einem einzigen setFont()-Aufruf aktiviert.
So führen Sie es aus
- Verdrahten Sie das TFT-Modul mit dem Uno R4, wie in der Verdrahtungsanleitung gezeigt.
- Stecken Sie das USB-Typ-C-Kabel ein.
- Fügen Sie den Code in Arduino IDE ein, bestätigen Sie Platine und Anschluss, und drücken Sie Upload.
- Das Display renderiert Text in der benutzerdefinierten Schriftart. Beachten Sie die verbesserte Glyphqualität im Vergleich zur integrierten Schriftart.
Kurzreferenz Methoden
| Methode | Was sie macht | Verwendung |
|---|---|---|
| setFont(&FontName) | Aktivieren Sie eine benutzerdefinierte GFX-kompatible Schriftart. Übergeben Sie NULL, um die integrierte 5×7-Schriftart wiederherzustellen. | TFT_display.setFont(&FreeSans12pt7b); |
| setCursor(x, y) | Verschieben Sie den Textcursor an die angegebene Position. | TFT_display.setCursor(10, 40); |
| setTextColor(color) | Legen Sie die Vordergrundtextfarbe fest. | TFT_display.setTextColor(WHITE); |
| print(text) | Drucken Sie eine Zeichenkette an der aktuellen Cursorposition mit der aktiven Schriftart. | TFT_display.print("Hello!"); |
Touch Punkt abrufen
Das TouchGetPoint-Beispiel liest rohe ADC-Koordinaten von einem XPT2046-Touch-Controller und druckt sie auf dem seriellen Monitor. Dies zuerst auszuführen hilft Ihnen, den Zahlenbereich Ihres spezifischen Panels zu verstehen – Daten, die Sie zur Kalibrierung des Touchscreens in späteren Beispielen verwenden werden.
Verdrahtung: T_CLK→D13, T_DIN→D11, T_DO→D12 (gemeinsamer SPI-Bus mit Display). T_CS→D7, T_IRQ→D6.
So führen Sie es aus
- Verdrahten Sie den XPT2046-Controller mit dem Uno R4 und teilen Sie den SPI-Bus mit dem Display. T_CS zu D7, T_IRQ zu D6.
- Stecken Sie das USB-Typ-C-Kabel ein.
- Fügen Sie den Code ein, bestätigen Sie Platine und Anschluss, und drücken Sie Upload.
- Öffnen Sie den seriellen Monitor mit 9600 Baud. Drücken Sie und ziehen Sie auf dem Display, um rohe X-, Y- und Druckwerte zu sehen.
Kurzreferenz Methoden
| Methode | Was sie macht | Verwendung |
|---|---|---|
| initTouchSPI(cs, irq) | Initialisieren Sie den XPT2046 auf dem gemeinsamen SPI-Bus. Verwenden Sie -1 für irq, wenn der Interrupt-Pin nicht verbunden ist. | TFT_display.initTouchSPI(7, 6); |
| readTouchRaw(x, y, z) | Rückgabe rohe ADC-Touch-Werte ohne Anwendung von Kalibrierung. Gibt „true" zurück, wenn gedrückt. | TFT_display.readTouchRaw(x, y, z); |
Touch zeichnen
Das TouchDraw-Beispiel erstellt eine einfache Finger-Zeichen-Anwendung. Kalibrierte Touch-Koordinaten werden verwendet, um kleine gefüllte Kreise an jedem Punkt zu platzieren, an dem der Finger das Display berührt, wodurch eine kontinuierliche Zeichnung entsteht, wenn er sich bewegt.
So führen Sie es aus
- Verdrahten Sie den XPT2046 mit dem Uno R4, wie im Abschnitt „Touch Punkt abrufen" oben beschrieben.
- Stecken Sie das USB-Typ-C-Kabel ein.
- Fügen Sie den Code ein, bestätigen Sie Platine und Anschluss, und drücken Sie Upload.
- Ziehen Sie einen Finger über das Display, um auf dem Bildschirm zu malen.
Kurzreferenz Methoden
| Methode | Was sie macht | Verwendung |
|---|---|---|
| initTouchSPI(cs, irq) | Richten Sie den XPT2046 auf dem gemeinsamen SPI-Bus ein. | TFT_display.initTouchSPI(7, 6); |
| setTouchCalibration(minX,maxX,minY,maxY) | Ordnen Sie rohe ADC-Werte Bildschirm-Pixelkoordinaten zu. Rufen Sie diese Werte aus dem TouchCalibration-Beispiel ab. | TFT_display.setTouchCalibration(200, 3800, 300, 3700); |
| setTouchInvertX(invert) / setTouchInvertY(invert) | Kehrt die Touch-Achse um, wenn X oder Y auf Ihrem spezifischen Panel oder Batch gespiegelt ist. Rufen Sie VOR setTouchCalibration() auf. | TFT_display.setTouchInvertY(true); |
| getTouch(x, y) | Rufen Sie kalibrierte Touch-Koordinaten in Bildschirm-Pixeln ab. Gibt „true" zurück, wenn der Bildschirm gedrückt wird. | if (TFT_display.getTouch(x, y)) { ... } |
| fillCircle(x, y, r, color) | Zeichnen Sie einen kleinen Punkt am Berührungspunkt. | TFT_display.fillCircle(x, y, 3, RED); |
Touch-Schaltfläche
Das TouchButton-Beispiel zeichnet rechteckige Schaltflächen auf dem Bildschirm und prüft Touch-Koordinaten gegen die Grenzen jeder Schaltfläche. Wenn auf eine Schaltfläche getippt wird, wird sie hervorgehoben und führt eine Aktion aus. Dies zeigt, wie Sie eine minimale touchgesteuerte Benutzeroberfläche erstellen.
Der T_IRQ-Pin ist für dieses Beispiel optional. Übergeben Sie -1 als irq-Argument, wenn Sie ihn lieber nicht verbinden möchten.
So führen Sie es aus
- Verbinden Sie T_CS mit D7. T_IRQ kann unverbunden bleiben – legen Sie es im Sketch auf -1 fest.
- Stecken Sie das USB-Typ-C-Kabel ein.
- Fügen Sie den Code ein, bestätigen Sie Platine und Anschluss, und drücken Sie Upload.
- Tippen Sie auf die auf dem Bildschirm angezeigten Schaltflächen. Jede Schaltfläche wechselt die Farbe, wenn sie gedrückt wird.
Kurzreferenz Methoden
| Methode | Was sie macht | Verwendung |
|---|---|---|
| initTouchSPI(cs, irq) | Initialisieren Sie den XPT2046. Übergeben Sie -1 für irq, um ohne Interrupt-Pin zu umfragen. | TFT_display.initTouchSPI(7, -1); |
| setTouchCalibration(minX,maxX,minY,maxY) | Wenden Sie Kalibrierung an, damit getTouch() Anzeigepikel-Koordinaten zurückgibt. | TFT_display.setTouchCalibration(200, 3800, 300, 3700); |
| setTouchInvertX(invert) / setTouchInvertY(invert) | Kehrt die Touch-Achse um, wenn X oder Y auf Ihrem spezifischen Panel oder Batch gespiegelt ist. Rufen Sie VOR setTouchCalibration() auf. | TFT_display.setTouchInvertY(true); |
| getTouch(x, y) | Rufen Sie die aktuelle kalibrierte Berührungsposition ab. Gibt „true" zurück, während der Bildschirm gedrückt wird. | if (TFT_display.getTouch(x, y)) { ... } |
| fillRect(x, y, w, h, color) | Zeichnen Sie ein durchgehend farbiges Rechteck für den Schaltflächenhintergrund. | TFT_display.fillRect(10, 10, 120, 60, BLUE); |
Touch-Kalibrierung
Das TouchCalibration-Beispiel führt Sie durch die Messung des rohen ADC-Bereichs Ihres XPT2046-Touch-Panels. Berühren Sie jede Ecke, wenn Sie dazu aufgefordert werden, und beobachten Sie die auf dem seriellen Monitor gedruckten Mindest- und Höchstwerte für X und Y. Verwenden Sie diese vier Zahlen im setTouchCalibration()-Aufruf in allen Ihren anderen Touch-Sketches.
So führen Sie es aus
- Verdrahten Sie den XPT2046 mit dem Uno R4, wie im Abschnitt „Touch Punkt abrufen" beschrieben.
- Stecken Sie das USB-Typ-C-Kabel ein.
- Fügen Sie den Code ein, bestätigen Sie Platine und Anschluss, und drücken Sie Upload.
- Öffnen Sie den seriellen Monitor mit 9600 Baud. Befolgen Sie die auf dem Bildschirm angezeigten Aufforderungen, um jede Ecke des Displays zu berühren.
- Notieren Sie die vier gedruckten Werte und fügen Sie sie in setTouchCalibration() in Ihren anderen Touch-Sketches ein.
Kurzreferenz Methoden
| Methode | Was sie macht | Verwendung |
|---|---|---|
| initTouchSPI(cs, irq) | Initialisieren Sie den XPT2046-Touch-Controller. | TFT_display.initTouchSPI(7, 6); |
| readTouchRaw(x, y, z) | Lesen Sie rohe ADC-Werte, um den Kalibrierungsbereich zu messen. | TFT_display.readTouchRaw(x, y, z); |
| setTouchCalibration(minX,maxX,minY,maxY) | Speichern Sie die Kalibrierungswerte, damit getTouch() korrekt Pixelkoordinaten zuordnet. | TFT_display.setTouchCalibration(200, 3800, 300, 3700); |
| setTouchInvertX(invert) / setTouchInvertY(invert) | Kehrt die Touch-Achse um, wenn X oder Y auf Ihrem spezifischen Panel oder Batch gespiegelt ist. Rufen Sie VOR Kalibrierung auf, damit die gespeicherten Werte Ihrem Panel entsprechen. | TFT_display.setTouchInvertY(true); |
Benutzerdefinierten SPI verwenden
Das CustomSPI-Beispiel zeigt, wie Sie dem Display-Konstruktor eine explizite SPIClass-Instanz bereitstellen. Verwenden Sie diesen Ansatz, wenn der Standard-SPI-Bus mit einer anderen Peripherie beschäftigt ist, wenn Sie den Bus mit zusätzlicher Konfiguration teilen müssen oder wenn Sie eine benutzerdefinierte SPI-Taktfrequenz festlegen möchten.
Der Uno R4 Minima und WiFi geben jeweils einen einzelnen Hardware-SPI-Bus auf D11/D13/D12 frei. Das Beispiel zeigt das Übergeben von &SPI explizit und das Anpassen der maximalen SPI-Taktgeschwindigkeit.
So führen Sie es aus
- Verdrahten Sie das TFT-Display mit dem Uno R4, wie in der Verdrahtungsanleitung gezeigt.
- Stecken Sie das USB-Typ-C-Kabel ein.
- Fügen Sie den Code ein, bestätigen Sie Platine und Anschluss, und drücken Sie Upload.
- Das Display wird auf dem expliziten SPI-Bus gestartet und rendert ein Farbbalkentestmuster.
Kurzreferenz Methoden
| Methode | Was sie macht | Verwendung |
|---|---|---|
| DIYables_ILI9341_SPI(w,h,cs,dc,rst,spi) | Konstruktor-Variante, die einen Zeiger auf alle SPIClass akzeptiert. Standardmäßig &SPI, wenn das Argument weggelassen wird. | DIYables_ILI9341_SPI tft(240, 320, 10, 9, 8, &SPI); |
| begin() | Initialisieren Sie das Display auf dem konfigurierten SPI-Bus. | TFT_display.begin(); |
Fehlerbehebung
- Schwarzer Bildschirm - Bestätigen Sie, dass CS, DC, MOSI und SCK alle verbunden sind. Eine fehlende CS-Leitung lässt das Display inaktiv.
- Falscher Treiber - Nur eine Konstruktor-Zeile sollte aktiv sein. Die anderen müssen auskommentiert sein.
- Verschobenes oder zugeschnittenes Bild - Die Breite und Höhe im Konstruktor müssen der physischen Panelgröße entsprechen.
- Touch funktioniert nicht - Führen Sie das TouchCalibration-Beispiel aus, um Kalibrierungswerte speziell für Ihren Panel zu erhalten.
Plattformunterstützung
Die Bibliothek stützt sich ausschließlich auf Arduino-Standard-APIs (SPI, digitalWrite, millis) und läuft auf allen Arduino-kompatiblen Plattformen, einschließlich des Uno R4 Minima und WiFi.