1.44-inch TFT display with Arduino

FunduinoLast updated on

Text, Linien und Formen auf dem ST7735 zeichnen

Ein TFT-Display zeigt nicht nur Zeichen wie ein LCD, sondern echte Grafik in Farbe. Das hier verwendete Modell misst 1,44 Zoll, wird über SPI angesteuert und nutzt den verbreiteten Controller ST7735.

Die Bibliothek Adafruit ST7735 nimmt dir die Ansteuerung ab. Der Beispielsketch führt der Reihe nach vor, was möglich ist: Schrift in vier Größen und mehreren Farben, Linien, gefüllte Kreise sowie umrandete und ausgefüllte Rechtecke.

Anschlussschema des TFT-Displays am Arduino
So wird das Display angeschlossen

Wofür TFT-Displays gut sind

TFT-Displays begegnen dir überall: im Navigationsgerät und in der Armaturentafel im Auto, in Fernsehern und Monitoren, in Digitalkameras und Smartphones und inzwischen auch in Herden und Küchenmaschinen.

Das hier verwendete Modell hat 1,44 Zoll Diagonale, wird über SPI angesteuert und arbeitet mit dem Controller ST7735.

Das Display anschließen

Im Sketch sind drei Steuerleitungen festgelegt: CS an Pin 10, DC an Pin 9 und RST an Pin 8. Dazu kommen die SPI-Leitungen sowie Spannung und Masse.

Das Anschlussbild zeigt die vollständige Belegung.

Anschlussschema des TFT-Displays am Arduino
So wird das Display angeschlossen

Die Bibliothek installieren

Suche im Bibliotheksverwalter unter Sketch → Bibliothek einbinden → Bibliotheken verwalten nach Adafruit ST7735. Im folgenden Dialog musst du die zusätzlich benötigten Bibliotheken mitinstallieren – vor allem Adafruit GFX, die die eigentlichen Zeichenbefehle mitbringt.

Welche Befehle zur Verfügung stehen, zeigt die Übersichtstabelle.

Die Überschrift im Artikel nennt die Bibliothek „Adafruit ST77735“ – mit einer 7 zu viel. Richtig ist ST7735.

Bibliothek Adafruit ST7735 in der Bibliotheksverwaltung
Die Bibliothek Adafruit ST7735
Tabelle mit den Zeichenbefehlen der Bibliothek
Die wichtigsten Befehle im Überblick
1 / 2

Das Programm

Der Sketch läuft einmal komplett im setup durch und zeigt nacheinander, was das Display kann: vier Schriftgrößen in verschiedenen Farben, waagerechte Linien, ineinanderliegende Kreise sowie umrandete und ausgefüllte Rechtecke.

Der loop bleibt leer – es gibt nichts zu wiederholen.

Zeigt dein Display verschobene Ränder oder vertauschte Farben, passt der Initialisierungstyp nicht. Der Sketch verwendet INITR_REDTAB; je nach Charge sind INITR_GREENTAB oder INITR_BLACKTAB richtig. Der Artikel erwähnt das nicht.

Text, Linien, Kreise und Rechtecke zeichnen
// Pins zuordnen
# define TFT_PIN_CS 10
# define TFT_PIN_DC 9
# define TFT_PIN_RST 8
// Bibliotheken einbinden
# include "SPI.h"
# include "Adafruit_GFX.h"
# include "Adafruit_ST7735.h"
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_PIN_CS, TFT_PIN_DC, TFT_PIN_RST);
void setup()
{
  Serial.begin(9600);
  delay(500);
  Serial.println("Bildschirm: " + String(tft.height()) + " x " + String(tft.width()));
  tft.initR(INITR_REDTAB);
  // Bildschirm um 180 Grad drehen
  tft.setRotation(2);
  // schwarzer Hintergrund
  tft.fillScreen(ST7735_BLACK);
  // verschiedene Schriftgrößen
  tft.setTextSize(1);
  tft.setCursor(1, 5);
  tft.setTextColor(ST7735_BLUE);
  tft.print("Text");
  delay(500);
  tft.setTextSize(2);
  tft.setCursor(1, 20);
  tft.setTextColor(ST7735_GREEN);
  tft.print("Text");
  delay(500);
  tft.setTextSize(3);
  tft.setCursor(1, 40);
  tft.setTextColor(ST7735_RED);
  tft.print("Text");
  delay(500);
  tft.setTextSize(4);
  tft.setCursor(1, 70);
  tft.setTextColor(ST7735_YELLOW);
  tft.print("Text");
  delay(2000);
  // Linien ziehen
  tft.fillScreen(ST7735_BLACK);
  tft.drawLine(1, 1, tft.width(), 1, ST7735_ORANGE);
  tft.drawLine(1, 30, tft.width(), 30, ST7735_ORANGE);
  tft.drawLine(1, 60, tft.width(), 60, ST7735_ORANGE);
  delay(2000);
  // Kreise zeichnen
  tft.fillScreen(ST7735_BLACK);
  tft.fillCircle(60, 60, 50, ST7735_MAGENTA);
  tft.fillCircle(60, 60, 30, ST7735_GREEN);
  tft.fillCircle(60, 60, 30, ST7735_YELLOW);
  delay(2000);
  // Rechtecke zeichnen
  tft.fillScreen(ST7735_BLACK);
  tft.drawRect(1, 1, 50, 50, ST7735_ORANGE);
  tft.drawRect(5, 5, 50, 50, ST7735_ORANGE);
  tft.drawRect(10, 10, 50, 50, ST7735_ORANGE);
  delay(2000);
  // ausgefüllte Rechtecke zeichnen
  tft.fillScreen(ST7735_BLACK);
  tft.fillRect(5, 5, 50, 50, ST7735_GREEN);
  tft.fillRect(10, 10, 70, 70, ST7735_BLUE);
  tft.fillRect(15, 15, 90, 90, ST7735_RED);
}
void loop()
{
  // nichts zu tun, das Programm
  // läuft nur einmal
}
Rate the instructions

Comments

Ask a question or share an experience

Contact us if something doesn’t work. Please include your board and the error message.

We review every comment before publication. Your email address remains with us.