Arduino TFT displej nabízí spoustu zajímavých vlastností. Tento barevný displej má velikost 1,77 palce, přičemž samotné rozlišení je 160 x 128 pixelů. Co se týká řízení displeje, tak komunikace s řídícím čipem ST7735 probíhá pomocí sběrnice SPI a na tuto sběrnici je také připojena čtečka microSD karet umístěná na spodní straně. Pro přepínání komunikace mezi displejem a čtečkou paměťových karet jsou na modulu vyvedeny samostatné CS (Chip Select) piny. Z dalších vlastností bych pak ještě rád zmínil napájecí napětí 5 V a maximální odběr přibližně 50 mA při použití podsvícení.
Pro úspěšné propojení TFT displeje a Arduino desky je nutné zapojit celkem 9 propojovacích pinů. Propojíme GND se zemí Arduina, BL s 5V Arduina, RESET s pinem D8, D/C s pinem D9, CS-LCD s pinem D7, MOSI s pinem D11, SCK s pinem D13, MISO s pinem D12 a +5V s 5V Arduina. Datové piny RESET, D/C a CS-LCD můžeme zapojit na jiné volné, ale musíme tuto volbu provést také na začátku programu. Zbytek datových pinů odpovídá sběrnici SPI a pro tu je nutné zachovat použité piny, kdy se zde jedná o piny na desce Arduino UNO. Pokud byste chtěli získat informace o SPI pinech na dalších deskách, najdete je zde: https://www.arduino.cc/en/Reference/SPI
Pro správnou funkci uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu Ucglib, návod, jak na to, je uveden zde. Ukázkový kód obsahuje na svém začátku připojení potřebných knihoven, nastavení čísel propojovacích pinů a inicializaci displeje z knihovny. V podprogramu setup jako první krok nastavíme průhledné pozadí písma, přičemž na dalším řádku je v komentáři uvedena také možnost nastavit plné pozadí písma. Dále nastavíme natočení tištěného obsahu o 270 stupňů a typ použitého písma. V komentáři je také uveden odkaz na seznam dalších podporovaných fontů. Následně vyčistíme jedním příkazem obsah displeje a začneme s tiskem. Nejprve si nastavíme pomocí RGB složek barvu písma, kdy jako první je ukázka bílé barvy, a následně nastavíme začátek tisku od souřadnic [x, y] = [40, 25]. Na tomto místě vytiskneme nápis Navody. Zbytek podprogramu setup pak obsahuje výpis zbylého statického textu, který budeme chtít tisknout, včetně ukázky nastavení ostatních barev a jako poslední komentář je uveden odkaz na referenci všech dostupných příkazů v dané knihovně. V nekonečné smyčce loop pak nastavíme vždy barvu na černou a pomocí příkazu drawBox vykreslíme obdélník od souřadnic [0, 80], přičemž třetí parametr označuje délku 160 pixelů a čtvrtý parametr výšku 20 pixelů. Tím si vymažeme předchozí obsah na daném řádku, na který následně modrou barvou vytiskneme počet vteřin od spuštění Arduina pomocí funkce millis(). Po vypsání těchto informací vyčkáme po dobu jedné vteřiny a smyčka loop se opakuje.
// LCD ST7735 128x160 SPI // připojení potřebných knihoven #include <SPI.h> #include "Ucglib.h" // nastavení propojovacích pinů #define RESET 8 #define DC 9 #define CSLCD 10 // inicializace displeje z knihovny Ucglib_ST7735_18x128x160_HWSPI ucg(DC, CSLCD, RESET); void setup(void) { // nastavení průhledného pozadí písma ucg.begin(UCG_FONT_MODE_TRANSPARENT); // nastavení plného pozadí písma //ucg.begin(UCG_FONT_MODE_SOLID); // otočení displeje o 270 stupňů ucg.setRotate270(); // nastavení fontu, // ukázka dalších fontů zde: // https://github.com/olikraus/ucglib/wiki/fontsize ucg.setFont(ucg_font_helvR12_tr); // vyčištění obsahu displeje ucg.clearScreen(); // nastavení barvy na bílou (barva ve složkách RGB, // červená-zelená-modrá v intenzitě 0-255) ucg.setColor(255, 255, 255); // nastavení kurzoru na pozici [x, y] = [40, 25] ucg.setPrintPos(40, 25); // tištění textu ucg.print("Navody."); ucg.setPrintPos(10, 50); // nastavení barvy na červenou ucg.setColor(255, 0, 0); ucg.println("dratek.cz!"); ucg.setPrintPos(10, 75); // nastavení barvy na zelenou ucg.setColor(0, 255, 0); ucg.print("Cas od spusteni:"); ucg.setPrintPos(50, 125); // nastavení barvy na šedou ucg.setColor(127, 127, 127); ucg.println(" vterin."); // reference všech dostupných příkazů: // https://github.com/olikraus/ucglib/wiki/reference } void loop(void) { // nastavení barvy na černou ucg.setColor(0, 0, 0); // nakresli vyplněný box danou barvou // od souřadnic [0, 80] 160 pixelů do délky // a 20 pixelů na výšku ucg.drawBox(0, 80, 160, 20); // nastavení barvy na modrou ucg.setColor(0, 0, 255); // modrá ucg.setPrintPos(60, 100); // vytištění čísla - počet vteřin od // zapnutí Arduina ucg.print(millis() / 1000); // pauza po dobu 1 vteřiny delay(1000); }
Po nahrání ukázkového kódu do Arduino desky s připojeným TFT displejem dostaneme například tento výsledek:
Arduino TFT displej je dle mého názoru velice zajímavý zobrazovací modul, který umožňuje zobrazovat uživateli různé informace z Arduina. Hodí se tedy do těch projektů, kde nechceme pro vizualizaci běhu Arduina používat počítač a sériovou linku, ale chceme informace zobrazovat právě na zmíněném barevném displeji. Velkou výhodou je zde také přítomný slot na paměťovou kartu typu microSD. Pokud budete chtít využívat tento paměťový slot, lze s ním pracovat podobně jako v tomto návodu.
Seznam použitých komponent:
http://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
https://dratek.cz/arduino/1216-arduino-1-77-tft-lcd-128-x160px-1458075419.html