Teil 5: Mini-Farb-TFT ILI9341 ansteuern

© Kriangkrai Wangjai, 123RF

Schicke Ausgabe

Über ein kleines Display behalten Sie Messdaten und andere Werte des ESP8266 jederzeit im Blick. Eine passende Bibliothek erleichtert das Verdrahten.

Der letzte Teil dieser Reihe hat beleuchtet, wie die SPI-Schnittstelle des ESP8266 arbeitet. Dieses Interface kommt oft bei Displays zum Einsatz, da sich darüber große Datenmengen mit wenig Aufwand übertragen lassen. Für den im Folgenden vorgestellten Aufbau kommt ein TFT-Farbdisplay mit einer Diagonalen von 2,2 Zoll zum Einsatz.

Es weist eine Auflösung von 320 x 240 Bildpunkten bei 262 000 Farben auf. Das erscheint auf den ersten Blick mager – aber auch die ersten Farbgrafikkarten für den PC brachten es auf keine höhere Auflösung und konnten lediglich 16 Farben darstellen. Vor weniger als 30 Jahren brauchte es noch einen High-End-PC, um eine solche Auflösung auf den Schirm zu zaubern.

Das verwendete Display, ein ILI9341, bringt es auf 262 000 Farben. Das Datenblatt [1] dazu – eigentlich eher ein Buch – bringt es auf 240 Seiten Umfang. Es enthält zahlreiche technische Details, von denen Sie für diesen Workshop lediglich die Information zur Betriebsspannung benötigen: Sie liegt zwischen 1,65 und 3,3 Volt.

Testaufbau

Der Schaltplan in Abbildung 1 zeigt, wie Sie das Display an den ESP8266 anschließen. Gegenüber den Schaltplänen aus den letzten Teilen kommt hier der Kondensator C3 hinzu: Er stabilisiert die Versorgungsspannung des ESP8266. Das ist nötig, weil Display und ESP8266 in diesem Projekt für kurze Momente ziemlich viel Strom ziehen. Montieren Sie den Kondensator möglichst dicht an den Spannungsanschlüssen des Mikrocontrollers.

Abbildung 1: Schaltplan zu unserem Testaufbau.

Sollten Sie sonderbare Abstürze bemerken, liegt das unter Umständen daran, dass die Spannungsquelle die Stromspitzen nicht liefern kann. Greifen Sie in diesem Fall zu einer stärkeren Spannungsversorgung. Alternativ können Sie versuchen, die Kapazität von C3 zu erhöhen. Abbildung 2 zeigt den komplett verdrahteten Aufbau des Versuchs.

Abbildung 2: Mit einem Breadboard stecken Sie den Aufbau des Versuchs zusammen, um die korrekte Verdrahtung auszuprobieren.

Bibliotheken

Um auf das TFT-Modul zuzugreifen, benötigen Sie zwei Bibliotheken: die Adafruit_GFX und die Adafruit_ILI9341. Jetzt kommt der unschöne Teil: Sie benötigen eine gepatchte Version der Bibliothek ILI9341, die Sie nicht über die Bibliotheken-Verwaltung der Arduino-IDE einbinden können. Die aktuell dort zu findende Version bringt den Patch für den ESP8266 noch nicht mit.

Die gepatchte Version (Abbildung 3) steht online als ZIP-Archiv bereit [2]. Sie binden Sie unter Sketch | Bibliothek einbinden | .zip Bibliothek hinzufügen ein (Abbildung 4). Die GFX-Bibliothek integrieren Sie wie gewohnt unter Sketch | Bibliothek einbinden | Bibliothek Verwalten (Abbildung 5).

Abbildung 3: Als Erstes laden Sie die gepatchte Bibliothek ILI9341 herunter.
Abbildung 4: Die heruntergeladene Bibliothek binden Sie anschließend in die IDE ein.
Abbildung 5: Die GFX-Bibliothek binden Sie direkt über das Interface der IDE ein.

Die Bibliothek Adafruit_GFX [5] bringt eine ganze Reihe von praktischen Funktionen mit; die Tabelle "Flexibles Werkzeug: Adafruit_GFX" beschreibt die wichtigsten davon. Dabei entsprechen x und y den Koordinaten im kartesischen Koordinatensystem. Der Wert für color gibt die Farbe an, die Sie dem gezeichneten Objekt geben möchten. Bei runden Objekten enthält r deren Radius.

Flexibles Werkzeug: Adafruit_GFX

Funktion

Zweck

void drawPixel(uint16_t x, uint16_t y, uint16_t color);

ein Pixel zeichnen

void drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t color);

eine Linie zeichnen

void drawFastVLine(uint16_t x0, uint16_t y0, uint16_t length, uint16_t color);

eine vertikale Linie zeichnen

void drawFastHLine(uin86_t x0, uin86_t y0, uint8_t length, uint16_t color);

eine horizontale Linie zeichnen

void drawRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color);

ein Rechteck zeichnen

void fillRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color);

ein gefülltes Rechteck zeichnen

void drawCircle(uint16_t x0, uint16_t y0, uint16_t r, uint16_t color);

einen Kreis zeichnen

void fillCircle(uint16_t x0, uint16_t y0, uint16_t r, uint16_t color);

einen gefüllten Kreis zeichnen

void drawRoundRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t r, uint16_t color);

ein Rechteck mit abgerundeten Ecken zeichnen

void fillRoundRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t r, uint16_t color);

ein gefülltes Rechteck mit abgerundeten Ecken zeichnen

void drawTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color);

ein Dreieck zeichnen

void fillTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color);

ein gefülltes Dreieck zeichnen

void drawChar(uint16_t x, uint16_t y, char c, uint16_t color, uint16_t bg, uint8_t size);

ein Zeichen auf das Display schreiben

void setCursor(uint16_t x0, uint16_t y0);

den Cursor an einer bestimmten Stelle positionieren

void setTextColor(uint16_t color);

Farbe des Texts ändern

void setTextColor(uint16_t color, uint16_t backgroundcolor);

Textfarbe ändern mit Hintergrundfarbe ändern

void setTextSize(uint8_t size);

Größe des Texts andern

void setTextWrap(boolean w);

Text automatisch umbrechen

void drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, int16_t h, uint16_t color);

ein Bitmap anzeigen

void fillScreen(uint16_t color);

kompletten Schirm mit einer Farbe füllen

void setRotation(uint8_t rotation);

Bildschirm drehen (rotation darf Werte von null bis drei annehmen)

uint16_t width();

gibt die Höhe des Bildschirms zurück

uint16_t height();

gibt die Breite des Bildschirms zurück

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

02/2018
Digital Signage

Diese Ausgabe als PDF kaufen

Preis € 7,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Neues auf der Heft-DVD

    Nur mit dem optimalen System und der richtigen Software nutzen Sie das volle Potenzial des Raspberry Pi. Mit der Heft-DVD erhalten Sie nicht nur die neusten Distributionen für den RasPi und Co., sondern gleichzeitig auch die passenden Programme zu den Artikeln.

  • Ferngebootet

    Das Booten über das Netzwerk beherrscht auch der RasPi 3 – und bietet damit sehr viel mehr Flexibilität, als Sie mit SD-Cards erzielen können.

  • Bleibende Werte

    Ein EEPROM dient dazu, Daten auch nach Abschalten der Energiezufuhr zu speichern, etwa als Kanalspeicher in Autoradios. Wir zeigen, wie Sie einen solchen Speicher beschreiben und wieder auslesen.

  • Auf Wolke 1

    Mit einem schnellen Netzwerkanschluss und einer SATA-Schnittstelle dient sich der Odroid HC1 als NAS-Alternative an – allerdings nicht für jedermann.

  • Wohnungsfunker

    Der kompakte Router GL.iNet dockt problemlos am Raspberry Pi an und erweitert diesen um einen Access Point samt Server-Funktion.

  • Satter Sound

  • Wer klopfet an?

    Wechselsprechanlagen mit Bild- und Tonübertragung gibt es zwar von der Stange, allerdings zu gesalzenen Preisen. Günstiger und obendrein flexibler ist ein Eigenbau mit Pi Zero und RasPi 3.

  • Wiedergeburt

    Mit dem Keyrah-Tastaturadapter und einem Raspberry Pi machen Sie aus einem defekten C64 eine optimale Emulator-Station, bei der Sie die originale Tastatur und die Joystick-Ports nutzen.

  • Kleine Nachtmusik

    Waveform8 beseitigt einige Ecken und Kanten des Vorgängers Tracktion – und macht die DAW endgültig fit für den Einsatz auf dem Raspberry Pi.

  • Recycling

    Mit einer Dockingstation lassen sich ausgemusterte IDE/SATA-Festplatten im 2,5- und 3,5-Zoll-Format am Raspberry Pi betreiben. Mit dem Samba-Server gliedern Sie den Mini-Rechner dann als Datenspeicher in Ihr lokales Netzwerk ein.