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.
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 | Arduino-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) |
Der folgende Code testet die Funktionalität des TFT-Bildschirms, d.h. es werden zunächst einige zufällige
Kreise gezeichnet und danach 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.");
}
Als kleine Beispielanwendung kann man das Eingangssignal eines analogen Pins des Arduino (hier A0) permanent auslesen und als Graphen 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;
}
}
zurück