1

Arduino a TFT dotykový displej

 

V lekci 28 jsme si ukázali jak s Arduinem oživit barevný TFT displej 320QVT a zobrazit si na něm nějaké údaje. Dneska si ukážeme využití dotykového panelu na displeji. Využijeme již předešlého zapojení a připojíme si dalších pět propojovacích vodičů z Arduina k displeji. K přenosu informací z dotykového panelu využíváme rozhraní SPI, která máme na Arduinu (v mém případě MEGA) na pinech 50 MISO, 51 MOSI, 52 SCK, 53 SS. Dále je v manuálu zapojeno i přerušení (na konektoru displeje T_IRQ), ale nevím zda to bude potřeba, neboť já jsem ho zkusil rozpojit a vše dále funguje. Knihovnu jsem moc nestudoval a nevím zda je jeho podpora naprogramována. Nicméně zapojme tedy dotykový panel podle této tabulky.
TFT displej SPI Arduino MEGA Poznámka
T_DIN MISO 50
T_DO MOSI 51
T_CLK SCK 52
T_CS SS 53
T_IRQ 2 není třeba ???

 

Pokud máme zapojeno tak se podíváme na funkce potřebné pro programovaní dotykového panelu. je potřeba stáhnout knihovnu UTouch z internetu. Odkaz na ní je zde.

Funkce z knihovny UTouch:

 

UTouch(SCK, SS, MISO, MOSI, IRQ) vytvoření objektu UTouch      myTouch(52,53,50,51,2);
InitTouch(); inicializace dotykového panelu InitTouch();
setPrecision(); nastavení přesnosti panelu .setPrecision(PREC_MEDIUM);
– PREC_LOW
– PREC_MEDIUM
– PREC_PREC_HI
– PREC_EXTREME
dataAvilable(); vrací true, když jsou data připravena .dataAvilable();
– bez parametru
read(); přečte data .read();
– bez parametru
getX(); přečte pozici na ose X a vrací číslo .getX();
– bez parametru
getY(); přečte pozici na ose Y a vrací číslo .getY();
– bez parametru

 

Tak to jsou funkce se kterými si budeme muset vystačit :-). Program je velmi jednoduchý a my si teď napíše krátký program pro kreslení na displej:

Vše snad bez problémů funguje a mi můžeme na displej zkusit něco nakreslit dotykovém perem nebo nějakým neostrým předmětem co budete chtít. Pozor ovšem kdo by chtěl zkus pero pro kapacitní displeje, to opravdu nemusí fungovat. Můžeme si zkusit, že velký tlak není potřeba a displej vykresluje dráhu našeho pohybu po displeji.  Samozřejmě funguje i samotný prst, ale pro kreslení to není zcela ideální.

Zkusme si teď, protože aby jsme svoji kresbu smazali musíme zresetovat Arduino, vytvořit tlačítko na displeji, které bude displej mazat. Upravíme si proto program takto:

V kódu jsme změnili velikost písma na menší a vytvořili jsme novou funkci ClrScreen(); na konci kódu, která vymaže obrazovku a nakreslí tlačítko se znakem X. Ta se spouští při startu Arduina a také dále potom, zda souřadnice dotyku souhlasí s umístění tlačítka.

Snad nic těžkého, protože nyní si program pro kreslení ještě dále vylepšíme. Kreslit jednou barvou je zajímavé, ale máme barevný displej, tak si uděláme tlačítka další a to pro změnu barvy. Kód už je o něco zase složitější, ale pokud postupujete postupně a ne bezmyšlenkovitě kopírujete program tak by to měla být hračka i z hlediska pochopení.

Kód je zde:

Já při psaní tohoto programu a jeho testování jsem narazil na svoji drobnou chybku, kdy po smazání displeje, se nepodařilo na displej nic nakreslit. Bylo to z důvodu, že při mazání displeje – je to vlastně jen překrytí černým obdélníkem – je použita černá barva. A jak je známo černá na černé není moc vidět. Kreslení započalo až po výběru barvy z menu. Takže v programu ve funkci mazání obrazovky jsem si před vlastním použitím černé barvy uložil naposledy použitou barvu pro kreslení a tuto opět po smazání použil jako barvu pera.

Výběr barev bude zcela na Vás, je to pouze příklad. Já jsem pro nastavené barvy použil pole, kde jsou uloženy hodnoty jako 3 byte pro R G a B. Příkaz pro nastavení barev v této knihovně bere i hodnotu word, kdy mu stačí zadat barvu v číselném formátu v RGB565.

Tak jsme vytvořili “skoro” podobný program jako v prvních Windows (berte jako vtip). Chtěl jsem to ještě doplnit o ukládání obrázku na sd kartu ve formátu bmp a jeho načítání, ale nepodařilo se mi rozjet s Arduinem SD kartu. Tak o tom snad příště :-)

Arduino Uno, Mega, Senzory, Moduly za

VÝHODNOU CENU

ArduinoTeam

Vytvářím návody pro Arduino, skvěle se orientuji v IT a označuji se za geeka. Miluji nové technologie, protože jsou úžasné. Budu rád, když můj malý magazín o Arduinu podpoříte! Děkuji moc, jste skvělí

Jeden komentář

  1. Dobrý den.Hledám někoho kdo by vytvořil časový spínač sdisplejem.

Napsat komentář

Vaše emailová adresa nebude zveřejněna.