Arduino Nano - ILI9341 ILI9488 ST7789 TFT LCD Touch Display SPI-Schnittstelle
Diese Anleitung zeigt dir Schritt für Schritt, wie du ein SPI-TFT-Display am Arduino Nano verwendest. Der Nano enthält denselben ATmega328P wie der Uno in einem kompakten, Breadboard-freundlichen Paket - er hat die gleichen Hardware-SPI-Pins, so dass die TFT-Verdrahtung identisch mit der des Uno ist. Die Haupteinschränkung ist der 2KB-SRAM: Vermeide große In-Memory-Bitmaps und verwende PROGMEM für Bilddaten.
Das wirst du durcharbeiten:
- Verdrahtung eines SPI-TFT-Displays am Arduino Nano.
- Zeichnen von Formen, Linien und gefüllten Bereichen.
- Anzeige von Text und Zahlen in verschiedenen Größen.
- Zeichnen von Bitmap-Bildern aus dem Programmpeicher (PROGMEM).
- Zeichnen von Bitmap-Bildern, die von einer SD-Karte geladen werden.
- Rendern von Text mit einem benutzerdefinierten externen Zeichensatz.
- Lesen von rohen Touch-Koordinaten von einem XPT2046-Controller.
- Zeichnen auf dem Bildschirm durch Ziehen des Fingers.
- Erstellen von interaktiven Touch-Schaltflächen.
- Kalibrieren des Touch-Bildschirms.
- Verwendung eines sekundären oder benutzerdefinierten SPI-Bus für das Display.
Diese Anleitung behandelt sowohl Touch- als auch 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, die von ILI9341-, ILI9488- oder ST7789-Controller-Chips angesteuert werden.

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Was ist das SPI-TFT-Display?
Ein SPI-TFT-Display-Modul ist ein Farb-LCD-Panel, das von einem Controller-Chip über einen 4-adrigen SPI-Bus angesteuert wird. Die DIYables_TFT_SPI-Bibliothek unterstützt drei beliebte Driver-Chips:
- ILI9341 - 16-Bit-RGB565-Farbe, bis zu 40 MHz SPI.
- ILI9488 - 18-Bit-RGB666-Farbe über SPI, bis zu 24 MHz.
- ST7789 - 16-Bit-RGB565-Farbe, bis zu 40 MHz SPI.
Empfehlung: Wenn du noch kein Display gekauft hast, 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.
Das gesamte Zeichnen erfolgt über die Adafruit GFX API, die Formen, Text, Schriftarten und Bitmap-Ausgabe bietet.
Pinbelegung
Die meisten SPI-TFT-LCD-Displays haben folgende Pins:
Display-Pins:
| Pin | Funktion |
|---|---|
| VCC | Stromversorgung |
| GND | Masse |
| CS | Chip-Auswahl — auf niedrig ziehen, um das Display auf dem SPI-Bus auszuwählen |
| DC / RS | Daten-/Befehl-Auswahl — hoch für Pixeldaten, niedrig für Befehle |
| RST | Hardware-Reset — optional; an 3,3V anschließen, wenn nicht verwendet |
| MOSI / SDI / SDA | SPI-Dateneingang (MCU → Display) |
| SCK / CLK | SPI-Takt |
| MISO / SDO | SPI-Datenausgang (Display → MCU) — optional für Display-only-Betrieb |
| LED / BL / BLK | Hintergrundbeleuchtung Stromversorgung — an 3,3V oder einen PWM-Pin anschließen zum Dimmen |
SD-Karten-Pins (wenn deine Anwendung auf die SD-Karte zugreifen muss):
| Pin | Funktion |
|---|---|
| SD_CS / TF_CS | SD-Karten-Chip-Auswahl |
| 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 (wenn deine Anwendung die Touch-Funktion verwendet und das Display dies unterstützt):
| Pin | Funktion |
|---|---|
| T_CS | Touch-Controller-Chip-Auswahl |
| 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 zur Verfügung. Diese funktionieren nicht auf diesen Boards — der Touch-Controller-IC ist nicht bestückt. Sie erscheinen, weil die Leiterplatte das gleiche Layout wie die Touch-aktivierte Version wiederverwendet, um Fertigungsvarianten zu reduzieren.

Schaltschema
⚠ Wichtig — Spannungsmismatch: Der Arduino Nano ist ein 5V-Board. Seine GPIO-Pins geben 5V-Logik aus, aber SPI-TFT-Displays arbeiten bei 3,3V. Das direkte Verbinden der Signalleitungen (MOSI, SCK, CS, DC, RST und T_CS bei Verwendung von Touch) vom Nano zum Display beschädigt das Display. Du musst einen 5V-auf-3,3V-Level-Converter auf jeder MCU-gesteuerten Signalleitung zwischen dem Nano und dem Display 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 Touch-Verdrahtung benötigt 6 Kanäle insgesamt (add T_CS), verwende also zwei 4-Kanal-Module oder ein 8-Kanal-Modul. Verbinde die TFT VCC mit dem 3,3V-Pin am Nano.
Ohne Touch
Verbinde MOSI mit D11, SCK mit D13, MISO mit D12 am Nano. CS, DC und RST können beliebige verfügbare GPIO-Pins sein - D10, D9, D8 werden in den Beispielen verwendet.
Display:
| TFT-Pin | Arduino-Nano-Pin | Beschreibung |
|---|---|---|
| VCC | 3.3V | Stromversorgung (nur 3,3V — das Display läuft mit 3,3V) |
| GND | GND | Masse |
| CS | D10 | Chip-Auswahl |
| DC / RS | D9 | Daten-/Befehl-Auswahl |
| 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 (wenn deine Anwendung auf die SD-Karte zugreifen muss):
| SD-Pin | Arduino-Nano-Pin | Beschreibung |
|---|---|---|
| SD_CS / TF_CS | beliebiger freier GPIO | SD-Karten-Chip-Auswahl |
| MOSI / SDI | D11 | Mit Display MOSI gemeinsam (D11) |
| SCK / CLK | D13 | Mit Display SCK gemeinsam (D13) |
| MISO / SDO | D12 | Mit Display MISO gemeinsam (D12) |

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Mit Touch
Verbinde den XPT2046-Touch-Controller mit dem Arduino-Nano-SPI-Bus und teile D11, D13 und D12 mit dem Display.
Display:
| TFT-Pin | Arduino-Nano-Pin | Beschreibung |
|---|---|---|
| VCC | 3.3V | Stromversorgung (nur 3,3V — das Display läuft mit 3,3V) |
| GND | GND | Masse |
| CS | D10 | Chip-Auswahl |
| DC / RS | D9 | Daten-/Befehl-Auswahl |
| 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 (wenn deine Anwendung die Touch-Funktion verwendet und das Display dies unterstützt):
| Touch-Pin | Arduino-Nano-Pin | Beschreibung |
|---|---|---|
| T_CS | beliebiger freier GPIO | Touch-Chip-Auswahl |
| T_IRQ | beliebiger freier GPIO | Touch-Interrupt (optional) |
| T_DIN | D11 | Mit Display MOSI gemeinsam (D11) |
| T_CLK | D13 | Mit Display SCK gemeinsam (D13) |
| T_DO | D12 | Mit Display MISO gemeinsam (D12) |

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Siehe Der beste Weg, den Arduino Nano und andere Komponenten mit Strom zu versorgen.
Wenn dein MCU zwei oder mehr Hardware-SPI-Schnittstellen hat, kannst du jedes Peripheriegerät (Display, SD-Karte, Touch-Controller) einem eigenen dedizierten SPI-Bus zuweisen. Wenn dein MCU nur eine Hardware-SPI-Schnittstelle hat, teilen sich alle drei Peripheriegeräte die gleichen drei Datenleitungen (MOSI, SCK, MISO) - am Nano sind dies D11, D13 und D12. Jedes Peripheriegerät hat seinen eigenen CS-Pin, so dass nur einer gleichzeitig aktiv ist. Die DIYables_TFT_SPI-Bibliothek verwaltet sowohl das Display als auch den XPT2046-Touch-Controller über eine einzige API — keine separate SPI-Bibliothek ist für die Touch-Seite erforderlich.
Einrichtung der Bibliothek
- Stecke den Arduino Nano mit einem Mini-B-USB-Kabel in deinen Computer.
- Öffne Arduino IDE. Stelle das Board auf Arduino Nano ein und wähle den entsprechenden Port aus.
- Gehe zum Libraries-Panel auf der linken Seite.
- Gib "DIYables_TFT_SPI" in das Suchfeld ein. Suche nach der Bibliothek von DIYables.
- Klicke auf Install. Bei Aufforderung installiere alle Abhängigkeiten.
- Search for DIYables TFT SPI created by DIYables.io and click the Install button.
Hinweis: Wenn dein Nano einen älteren Bootloader verwendet, wähle ATmega328P (Old Bootloader) unter Processor im Menü Tools aus.
Basiskode
Jede Skizze, die mit der DIYables_TFT_SPI-Bibliothek erstellt wird, beginnt mit dieser Grundlage:
Gib die physischen Pixelabmessungen des Panels an den Konstruktor weiter. Eine falsche Größe führt dazu, dass das Bild abgeschnitten oder verschoben wird.
Arduino Nano Code - Zeichne Formen
Das Beispiel DrawShapes zeichnet Kreise, Dreiecke, Rechtecke, abgerundete Rechtecke und Linien mit den Adafruit GFX Primitiven.
Folge mit
- Verdrahte das TFT-Modul mit dem Nano mit Hilfe der obigen Tabelle.
- Verbinde den Nano mit deinem Computer mit einem Mini-B-USB-Kabel.
- Öffne Arduino IDE, wähle das Board und den Port aus, füge den Code ein und klicke auf Upload.
- Das Display zeigt ein sich wiederholendes Raster aus farbigen Formen.
Methodenübersicht
| Methode | Erklärung | Beispielaufruf |
|---|---|---|
| begin() | Initialisiere den Display-Controller. | TFT_display.begin(); |
| setRotation(r) | Drehe 0-3. 1=Querformat. | TFT_display.setRotation(1); |
| fillScreen(color) | Male den ganzen Bildschirm. | TFT_display.fillScreen(WHITE); |
| colorRGB(r,g,b) | Mache einen 16-Bit-Farbwert. | colorRGB(0,255,0) |
| fillCircle(x,y,r,color) | Gefüllter Kreis. | TFT_display.fillCircle(60,60,30,RED); |
| drawRect(x,y,w,h,color) | Rechteck-Kontur. | TFT_display.drawRect(10,10,80,50,BLUE); |
| fillTriangle(x0,y0,x1,y1,x2,y2,color) | Gefülltes Dreieck. | TFT_display.fillTriangle(60,10,10,110,110,110,GREEN); |
Arduino Nano Code - Text und Zahlen anzeigen
Das Beispiel ShowTextAndNumber druckt Zeichenketten und numerische Werte auf dem Bildschirm unter Verwendung der integrierten GFX-Text-Engine.
Folge mit
- Verdrahte und lade wie oben hoch.
- Das Display druckt mehrere Zeilen von Text und Zahlen aus.
Methodenübersicht
| Methode | Erklärung | Beispielaufruf |
|---|---|---|
| setTextColor(color) | Setzt die Vordergrundfarbe für den gesamten folgenden Text. | TFT_display.setTextColor(WHITE); |
| setTextSize(size) | Skaliert Text um einen Pixelfaktor. Größe 1 = 6×8 px. Halte die Größe klein, um sie auf dem winzigen Bildschirm des Nano zu halten. | TFT_display.setTextSize(1); |
| setCursor(x, y) | Positioniert den Textcursor bei (x, y). | TFT_display.setCursor(0, 10); |
| print(value) | Druckt eine Zeichenkette oder Zahl am Cursor. Halte Zeichenketten kurz, um SRAM zu sparen. | TFT_display.print("Nano!"); |
| println(value) | Druckt und umbrochen zur nächsten Zeile. | TFT_display.println(42); |
Arduino Nano Code - Bild zeichnen
Das Beispiel DrawImage zeigt eine Vollfarb-RGB565-Bitmap auf dem Bildschirm. Der Nano hat nur 2 KB SRAM, daher müssen die Pixeldaten unter Verwendung des PROGMEM-Schlüsselworts im Programmflash bleiben. Die bitmap.h-Begleitdatei enthält ein const uint16_t Array, das PROGMEM deklariert ist. Die Bibliothek liest direkt aus dem Flash zum Zeichnungszeitpunkt, wobei der SRAM unangetastet bleibt.
Platziere bitmap.h im gleichen Skizzenordner vor dem Kompilieren.
Folge mit
- Kopiere bitmap.h in den gleichen Ordner wie die Skizze.
- Verdrahte das TFT-Display mit dem Nano mit Hilfe der obigen Pin-Tabelle (D11, D13, D12 für SPI).
- Verbinde den Nano mit deinem Computer mit einem Mini-B-USB-Kabel.
- Öffne Arduino IDE, wähle das Board und den Port aus, füge den Code ein und klicke auf Upload.
- Das Display rendert die PROGMEM-Bitmap-Bild.
Methodenübersicht
| Methode | Erklärung | Beispielaufruf |
|---|---|---|
| drawRGBBitmap(x,y,bitmap,w,h) | Zeichnet eine RGB565-Bitmap aus einem PROGMEM-Array. Position (x, y) ist die obere linke Ecke. | TFT_display.drawRGBBitmap(0, 0, myImage, 240, 320); |
| fillScreen(color) | Löscht den Bildschirm auf eine durchgehende Farbe vor dem Zeichnen. | TFT_display.fillScreen(BLACK); |
Arduino Nano Code - Bild von SD-Karte zeichnen
Das Beispiel DrawImageSDcard liest eine rohe RGB565-Bilddatei von einer SD-Karte und streamt sie in kleinen Stücken zum Display. Da Daten gestreamt und nicht in einen vollständigen Puffer geladen werden, kann selbst der Nano große Bilder ohne Speichererschöpfung anzeigen.
Verdrahte das SD-Modul mit den gleichen SPI-Pins wie das Display (D11/D13/D12) und verbinde seine CS-Leitung mit einem separaten Pin, der als SD_CS_PIN definiert ist.
Folge mit
- Verdrahte das SD-Kartenmodul mit dem Nano. Teile den SPI-Bus: MOSI→D11, SCK→D13, MISO→D12. Verbinde SD CS mit dem Pin, der als SD_CS_PIN definiert ist.
- Kopiere ein rohes RGB565-Binärbild auf die Wurzel der SD-Karte. Bildbreite und -höhe müssen mit deinem Panel übereinstimmen.
- Verbinde den Nano mit deinem Computer mit einem Mini-B-USB-Kabel.
- Öffne Arduino IDE, wähle Board und Port aus, füge den Code ein und klicke auf Upload.
- Das Bild wird von der Karte gelesen und auf dem Bildschirm angezeigt.
Methodenübersicht
| Methode | Erklärung | Beispielaufruf |
|---|---|---|
| startWrite() | Öffnet eine direkte SPI-Transaktion mit beharrlichem Display-CS. | TFT_display.startWrite(); |
| setAddrWindow(x0,y0,x1,y1) | Definiert den rechteckigen Bereich zum Empfang von Pixeldaten. | TFT_display.setAddrWindow(0, 0, 239, 319); |
| pushColors(buf, len) | Sendet einen Puffer mit RGB565-Pixelwerten zum Display. Halte den Puffer klein, um innerhalb des SRAM-Budgets des Nano zu bleiben. | TFT_display.pushColors(buf, 256); |
| endWrite() | Schließt die SPI-Transaktion und gibt CS frei. | TFT_display.endWrite(); |
Arduino Nano Code - Verwende externen Zeichensatz
Das Beispiel UseExternalFont tauscht den integrierten 5×7-Bitmap-Zeichensatz gegen einen schärferen Adafruit GFX-kompatiblen benutzerdefinierten Zeichensatz aus. Wähle den Zeichensatz, indem du einen Zeiger auf seine Struktur an setFont() übergibst. Rufe setFont(NULL) auf, um jederzeit zur integrierten Schriftart zurückzukehren.
Folge mit
- Verdrahte das TFT-Display mit dem Nano mit Hilfe der obigen Pin-Tabelle.
- Verbinde den Nano mit deinem Computer mit einem Mini-B-USB-Kabel.
- Öffne Arduino IDE, wähle das Board und den Port aus, füge den Code ein und klicke auf Upload.
- Das Display rendert Text unter Verwendung des benutzerdefinierten Zeichensatzes.
Methodenübersicht
| Methode | Erklärung | Beispielaufruf |
|---|---|---|
| setFont(&FontName) | Aktiviert einen benutzerdefinierten GFX-kompatiblen Zeichensatz. Das Übergeben von NULL stellt die integrierte 5×7-Schriftart wieder her. | TFT_display.setFont(&FreeSans12pt7b); |
| setCursor(x, y) | Bewegt den Textcursor zur angegebenen Pixelposition. | TFT_display.setCursor(10, 40); |
| setTextColor(color) | Setzt die Vordergrundfarbe für gedruckten Text. | TFT_display.setTextColor(WHITE); |
| print(text) | Druckt eine Zeichenkette unter Verwendung der aktiven Schriftart am aktuellen Cursor. | TFT_display.print("Nano!"); |
Arduino Nano Code - Touch Punkte lesen
Das Beispiel TouchGetPoint liest rohe ADC-Werte von einem XPT2046-Touch-Controller und druckt sie auf dem Serial Monitor. Gehe zuerst durch dieses Beispiel durch, um den rohen Koordinatenbereich zu sehen, den dein Panel produziert - diese Grenzen sind, was du später in die Kalibrierung einsteckst.
Verdrahtung: Teile den SPI-Bus (D11/D13/D12) zwischen dem XPT2046 und dem Display. Verbinde T_CS mit D7 und T_IRQ mit D6.
Folge mit
- Verdrahte den XPT2046 mit dem Nano. Teile D11 (MOSI), D13 (SCK), D12 (MISO) mit dem Display. T_CS→D7, T_IRQ→D6.
- Verbinde den Nano mit deinem Computer mit einem Mini-B-USB-Kabel.
- Öffne Arduino IDE, wähle das Board und den Port aus, füge den Code ein und klicke auf Upload.
- Öffne den Serial Monitor bei 9600 Baud. Drücke verschiedene Teile des Bildschirms, um die rohen X-, Y- und Z-Werte zu sehen.
Methodenübersicht
| Methode | Erklärung | Beispielaufruf |
|---|---|---|
| initTouchSPI(cs, irq) | Startet den XPT2046 auf dem gemeinsamen SPI-Bus. Gib -1 für irq ein, wenn der Interrupt-Pin nicht verdrahtet ist. | TFT_display.initTouchSPI(7, 6); |
| readTouchRaw(x, y, z) | Gibt rohe ADC-Koordinatenwerte ohne angewendete Kalibrierung zurück. Gibt wahr zurück, wenn der Bildschirm berührt wird. | TFT_display.readTouchRaw(x, y, z); |
Arduino Nano Code - Touch Zeichnen
Das Beispiel TouchDraw erstellt eine Finger-Mal-Anwendung auf dem Nano. Jeder Punkt, den der Finger berührt, erzeugt einen kleinen gefüllten Kreis an der entsprechenden kalibrierten Bildschirmkoordinate, und das Ziehen erstellt einen kontinuierlichen Strich.
Folge mit
- Verdrahte den XPT2046 mit dem Nano wie im Abschnitt Touch Get Point beschrieben.
- Verbinde den Nano mit deinem Computer mit einem Mini-B-USB-Kabel.
- Öffne Arduino IDE, wähle das Board und den Port aus, füge den Code ein und klicke auf Upload.
- Ziehe einen Finger über das Display, um auf dem Bildschirm zu zeichnen. Hebe ab und drücke erneut, um einen neuen Strich zu starten.
Methodenübersicht
| Methode | Erklärung | Beispielaufruf |
|---|---|---|
| initTouchSPI(cs, irq) | Startet den XPT2046 auf dem gemeinsamen SPI-Bus. | TFT_display.initTouchSPI(7, 6); |
| setTouchCalibration(minX,maxX,minY,maxY) | Ordnet rohe ADC-Werte den Bildschirm-Pixelkoordinaten zu. Hol dir diese Nummern aus dem TouchCalibration-Beispiel. | TFT_display.setTouchCalibration(200, 3800, 300, 3700); |
| setTouchInvertX(invert) / setTouchInvertY(invert) | Dreht die Touch-Achse um, wenn X oder Y auf deinem spezifischen Panel oder Batch gespiegelt wird. Rufe BEFORE setTouchCalibration() an. | TFT_display.setTouchInvertY(true); |
| getTouch(x, y) | Gibt kalibrierte Touch-Koordinaten in Pixeln zurück. Gibt wahr zurück, während der Bildschirm gedrückt wird. | if (TFT_display.getTouch(x, y)) { ... } |
| fillCircle(x, y, r, color) | Zeichnet einen kleinen Punkt an der Touch-Position. | TFT_display.fillCircle(x, y, 3, RED); |
Arduino Nano Code - Touch-Schaltfläche
Das Beispiel TouchButton zeichnet rechteckige On-Screen-Schaltflächen und lauscht auf Taps in jeder Schaltflächenregion. Wenn eine Schaltfläche angetippt wird, hebt sie sich hervor und löst ihre Aktion aus. Dies ist die Grundlage für ein Touch-gesteuert Menü auf dem Nano.
T_IRQ ist optional. Übergib -1 als irq-Argument, wenn du lieber den Interrupt-Pin nicht verbindest.
Folge mit
- Verbinde T_CS mit D7. T_IRQ kann nicht verbunden bleiben.
- Verbinde den Nano mit deinem Computer mit einem Mini-B-USB-Kabel.
- Öffne Arduino IDE, wähle das Board und den Port aus, füge den Code ein und klicke auf Upload.
- Tippe auf die Schaltflächen auf dem Display. Jede sollte die Farbe wechseln, wenn sie gedrückt wird.
Methodenübersicht
| Methode | Erklärung | Beispielaufruf |
|---|---|---|
| initTouchSPI(cs, irq) | Startet den XPT2046. Das Übergeben von -1 für irq deaktiviert den Interrupt-Pin und verwendet stattdessen Polling. | TFT_display.initTouchSPI(7, -1); |
| setTouchCalibration(minX,maxX,minY,maxY) | Wendet Kalibrierung an, so dass getTouch() genaue Pixelpositionen zurückgibt. | TFT_display.setTouchCalibration(200, 3800, 300, 3700); |
| setTouchInvertX(invert) / setTouchInvertY(invert) | Dreht die Touch-Achse um, wenn X oder Y auf deinem spezifischen Panel oder Batch gespiegelt wird. Rufe BEFORE setTouchCalibration() an. | TFT_display.setTouchInvertY(true); |
| getTouch(x, y) | Holt die kalibrierte Touch-Position. Gibt wahr zurück, wenn der Bildschirm berührt wird. | if (TFT_display.getTouch(x, y)) { ... } |
| fillRect(x, y, w, h, color) | Zeichnet den Schaltflächenhintergrund als durchgehendes Rechteck. | TFT_display.fillRect(10, 10, 120, 60, BLUE); |
Arduino Nano Code - Touch-Kalibrierung
Das Beispiel TouchCalibration führt dich durch das Finden des rohen ADC-Bereichs für dein XPT2046-Panel. Berühre jede Ecke des Bildschirms der Reihe nach und notiere die minimalen und maximalen X- und Y-Werte aus dem Serial Monitor. Stecke diese vier Nummern in setTouchCalibration() in allen anderen Touch-Skizzen.
Folge mit
- Verdrahte den XPT2046 mit dem Nano wie im Abschnitt Touch Get Point beschrieben.
- Verbinde den Nano mit deinem Computer mit einem Mini-B-USB-Kabel.
- Öffne Arduino IDE, wähle das Board und den Port aus, füge den Code ein und klicke auf Upload.
- Öffne den Serial Monitor bei 9600 Baud. Berühre jede Ecke, wenn dazu aufgefordert.
- Notiere die vier gedruckten Werte und verwende sie in setTouchCalibration() in deinen anderen Touch-Skizzen.
Methodenübersicht
| Methode | Erklärung | Beispielaufruf |
|---|---|---|
| initTouchSPI(cs, irq) | Initialisiert den XPT2046-Controller. | TFT_display.initTouchSPI(7, 6); |
| readTouchRaw(x, y, z) | Liest rohe ADC-Werte, die zur Ermittlung des Kalibrierungsbereichs verwendet werden. | TFT_display.readTouchRaw(x, y, z); |
| setTouchCalibration(minX,maxX,minY,maxY) | Speichert die vier Kalibrierungskonstanten, so dass getTouch() rohe Werte Pixelkoordinaten zuordnet. | TFT_display.setTouchCalibration(200, 3800, 300, 3700); |
| setTouchInvertX(invert) / setTouchInvertY(invert) | Dreht die Touch-Achse um, wenn X oder Y auf deinem spezifischen Panel oder Batch gespiegelt wird. Rufe BEFORE auf, um die Kalibrierung auszuführen, damit die gespeicherten Werte deinem Panel entsprechen. | TFT_display.setTouchInvertY(true); |
Arduino Nano Code - Custom SPI
Das Beispiel CustomSPI zeigt, wie du einen expliziten SPIClass-Zeiger an den Display-Konstruktor übergibst. Auf dem Nano gibt es einen einzigen Hardware-SPI-Bus (D11/D13/D12). Das explizite Übergeben von &SPI ermöglicht dir, die SPI-Einstellungen präzise zu kontrollieren - beispielsweise die Taktgeschwindigkeit bei langen Drähten zum Display zu reduzieren.
Folge mit
- Verdrahte das TFT-Display mit dem Nano wie im Schaltschema gezeigt.
- Verbinde den Nano mit deinem Computer mit einem Mini-B-USB-Kabel.
- Öffne Arduino IDE, wähle das Board und den Port aus, füge den Code ein und klicke auf Upload.
- Das Display startet auf dem explizit konfigurierten SPI-Bus und zeigt ein Testmuster mit Farbbalken.
Methodenübersicht
| Methode | Erklärung | Beispielaufruf |
|---|---|---|
| DIYables_ILI9341_SPI(w,h,cs,dc,rst,spi) | Konstruktor, der einen expliziten SPIClass-Zeiger übernimmt. Lasse das letzte Argument weg, um auf &SPI als Standard einzustellen. | DIYables_ILI9341_SPI tft(240, 320, 10, 9, 8, &SPI); |
| begin() | Initialisiert das Display auf dem konfigurierten SPI-Bus. | TFT_display.begin(); |
Fehlerbehebung
- Schwarzer Bildschirm - Überprüfe CS (D10), DC (D9), MOSI (D11) und SCK (D13). Ein schwebender CS-Pin ist der häufigste Schuldige.
- Falsche Farben oder Müllpixel - Bestätige, dass du den richtigen Driver-Konstruktor auskommentiert hast.
- SRAM-Überlauf - Der Nano hat 2 KB SRAM. Speichere Bitmaps in PROGMEM mit dem PROGMEM Schlüsselwort und dem DrawImage-Beispiel.
- Upload schlägt fehl mit "nicht synchronisiert" - Versuche, ATmega328P (Old Bootloader) im Menü Processor in Tools auszuwählen.
Plattformunterstützung
Die Bibliothek verwendet nur Arduino-Standard-APIs (SPI, digitalWrite, millis) und funktioniert auf allen Arduino-kompatiblen Plattformen.