zurück zur Übersicht...
25.03.2019

2,2″ TFT-Anzeige

Das TFT-Display mit einer Diagonalen von 2,2 Zoll ist mit dem ILI9341 Treibermodul ausgestattet und lässt sich somit über den SPI-Anschluss des Arduinos ansteuern. Das Panel besitzt außerdem eine LED-Hintergrundbeleuchtung.

TFT-Modul (Oberseite)
Abb.: TFT-Modul (Oberseite)
TFT-Modul (Unterseite)
Abb.: TFT-Modul (Unterseite)

Eigenschaften des TFT-Moduls

Verwendete Bauteile

Anschlüsse

Anschlüsse des 2,2″ SPI TFT-Modul
Abb.: Anschlüsse des 2,2″ SPI TFT-Modul

Im folgenden Bild ist der Anschluss des TFT-Moduls an den Arduino gezeigt. Wichtig sind die Widerstände, die als Spannungsteiler gegenüber GND dienen.

TFT-Pin Ardiuno-Pin
MISO / SDO (nicht verwendet)
SCK / CLK 13
MOSI / SDI 11
DC / RS 9
RESET 7
CS 10
GND GND
VCC VCC 3,3V
LED VCC 3,3V (über Vorwiderstand)
Aufbau der Schaltung
Abb.: Aufbau der Schaltung

Test des TFT-Moduls

Der folgende Code testet die Funktionalität des TFT-Bildschirms, d.h. es werden zunächst einige zufällige Kreise gezeichnet und dannach einige Textbeispiele in verschiedenen Ausrichtungen.
Es werden folgende Libraries verwendet: SPI, Adafruit_GFX und Adafruit_ILI9341.

#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"

#define TFT_RESET 7
#define TFT_DC    9
#define TFT_CS   10
#define TFT_MOSI 11
#define TFT_CLK  13

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RESET);

void setup()
{
    tft.begin();
    tft.fillScreen(ILI9341_BLACK);

    showRandomCircles();
    delay(3000);
}

void loop()
{
    for(byte i=0; i<4; i++) {
        tft.setRotation(i);
        showText();
        delay(2500);
    }
}

void showRandomCircles()
{
    for(byte i=0; i<255; i++) {
        tft.drawCircle(random(tft.width()), random(tft.height()), random(20), ILI9341_WHITE);
    }
}

unsigned long showText()
{
    tft.fillScreen(ILI9341_BLACK);
    tft.setCursor(0, 0);
    tft.setTextColor(ILI9341_WHITE);  tft.setTextSize(1);
    tft.println("Hello, World!");
    tft.setTextColor(ILI9341_YELLOW); tft.setTextSize(2);
    tft.println(1234.56);
    tft.setTextColor(ILI9341_RED);    tft.setTextSize(3);
    tft.println(0xDEADBEEF, HEX);
    tft.println();
    tft.setTextColor(ILI9341_GREEN);
    tft.setTextSize(5);
    tft.println("Inferno");
    tft.setTextSize(2);
    tft.println("Nel mezzo del cammin,");
    tft.setTextSize(1);
    tft.println("di nostra vita");
    tft.println("mi ritrovai per una selva oscura,");
    tft.println("ché la diritta via era smarrita.");
    tft.println("Mentre ch’i’ rovinava in basso loco,");
    tft.println("dinanzi a li occhi mi si fu offerto");
    tft.println("chi per lungo silenzio parea fioco.");
}
Video: Live-Demonstration des Tests mit dem 2,2″ TFT-Display

Beispiel: Monitoring eines analogen Pins

Als kleine Beispielanwendung kann man das Eingangssignal eines analogen Pins vom Arduino (hier A0) permanent auslesen und als Graph darstellen:

#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"

#define TFT_RESET 7
#define TFT_DC    9
#define TFT_CS   10
#define TFT_MOSI 11
#define TFT_CLK  13

#define NUM_SIGNALS 240

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RESET);
int x, y, signals[NUM_SIGNALS];

void setup()
{
    tft.begin();
    tft.fillScreen(ILI9341_BLACK);
}

void loop()
{
    showGraph();
}

void showGraph()
{
    for (x=1; x<NUM_SIGNALS; x++) {
        y = analogRead(A0) / 4;
        tft.drawPixel(x, signals[x], ILI9341_BLACK);
        tft.drawPixel(x,          y, ILI9341_WHITE);
        signals[x] = y;
    }
}