Lekce 30 - Arduino a TFT dotykový displej - využíváme dotykový panel

25.05.2014 15:20

Translate to English

     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 jedoduchý 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 zmenili 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 samzání displeje, se nepodařilo na displej nic nakreslit. Bylo to z důvodu, že při mazání dipleje - je to vlastně jen překrytí černým obdelní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. 

   Vybě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ě :-)

Zpět

Diskusní téma: Lekce 30 - Arduino a TFT dotykový displej - využíváme dotykový panel

Datum
Vložil
Titulek

dotykový display

Zdravím, chtěl bych k jinak výbornému článku doplnit, že k zapojení dotykového displaye můžeme použít jakékoliv volné digitální piny. Jen je potřeba čísla pinů uvést při zadávání tohoto příkazu myTouch(DCLK,CS,IN,OUT,IRQ).

Datum
Vložil
Titulek

TFT dotykový displej a SD karta

Zdravím, nesetkal se tu někdo náhodou s tím, že po inicializaci SD karty přestane fungovat dotyk? Respektive dotyk vrací pouze hodnoty x 319 a y 239. Jedná se o tento displej 320QVT se slotem pro SD kartu. Samostatně dotyk funguje bez problémů a SD karta také. Obojí dohromady nemůžu rozchodit. Díly moc za pomoc.

Datum
Vložil
Titulek

Re: TFT dotykový displej a SD karta

To je preto, lebo aj jedno aj druhe je pripojene cez SPI. Samostatne funguje ale inicializacia druheho rozhodi/pozmeni parametre nastavene prvym.
Cize ak sa najprv inicializuje DS karta, bude fungovat az do okamihu inicializacie dotyku.
Riesim podobny problem na dvoch inych SPI zariadeniach ale zatial som nevyriesil :(

Datum
Vložil
Titulek

COM 3

Ahoj, mám ARDUINO UNO + Microsoft Windows 8.1 Pro, ale nedaří se mi nahrát program. Problém je v tom, že mám v PC jen COM 1 a ARDUINO využívá COM 3. Jak se dá prosím problém s COM 3 vyřešit? Předem děkuji za odpověď

Datum
Vložil
Titulek

Re: COM 3

Podívej se nejdříve do správce hardwaru zda Window správně nainstaloval Arduino. Pokud ne zkus tento návod:
1. Windows Key + R
2. Enter shutdown.exe /r /o /f /t 00
3. Click the "OK" button
4. System will restart to a "Choose an option" screen
5. Select "Troubleshoot" from "Choose an option" screen
6. Select "Advanced options" from "Troubleshoot" screen
7. Select "Windows Startup Settings" from "Advanced options" screen
8. Click "Restart" button
9. System will restart to "Advanced Boot Options" screen
10. Select "Disable Driver Signature Enforcement"
11. Once the system starts, install the Arduino drivers as you would on Windows 7

Steps to install driver after Driver Signature Enforcement has been disabled:
1. Right click the Unknown Device in Device Manager
2. Select Update Driver Software
3. Select Browse my computer for software
4. Click Browse button
5. Select the Drivers folder under the location of your Arduino software installation. (Do not select the FTDI folder inside the Drivers folder)
6. Click OK
7. Click Next

Update:
If you have a new system that came with Win 8 pre-installed, Secure Boot has probably been enabled in the BIOS.
The steps above, probably will not work unless Secure Boot has been disabled in the BIOS before performing these steps.

Datum
Vložil
Titulek

Re: Re: COM 3

Dobrá otázka i odpověď, škoda jen, že je řazená zde pod lekcí 30 - TFT dotykový displej...

Vyhledávání

arduino8.cz © 2015 Všechna práva vyhrazena.