Lekce 28 – Arduino a TFT dotykový displej TFT_320QVT – část I.

Dnes si k Arduinu připojíme dotykový TFT displej. Já jsem pro tento účel vybral cenově přijatelný modul s displejem s obchodním označením TFT_320QVT. Na modulu se nachází z druhé strany slot na SD kartu, ale tomu věnovat dnes nebudeme. Někdo se může zaleknout 40 pinového konektoru, ketrý na modulu je, ale zapojení není bůhvíjak složité. 5 pinů z toho je nezapojených a označených NC (not connected), 4 piny pro SD slot a zbytek tedy bude pro TFT displej (když nebudete chtít využít dotykové funkce, ale pouze displej pro zobrazení tak dalších 5 pinů odpadne). Nicméně pro zapojení vybereme Arduino MEGA, abychom měli dostatek volných pinů i pro nějaké čidlo apod.

Já jsem nejprve pro zapojení přemýšlel o upravě kabelu pro IDE připojení starších HDD nebo optických mechanik. Tak jsem našel nejdříve problém v tom, že tento kabel má (myslím, že všechny) zaslepený jeden pin na konektoru, a to ten, který je zrovna připojen jako datový k displeji. Takže i po provrtání dírky v konektoru jsem v mém případě zjistil, že není vůbec zapojen. Další problém také v tom, že můj typ kabelu má poněkud více žil. Nepočítal jsem to, ale pouze odhadem jich bude 60-70, co by představovalo další problém v hledáním jednotlivých žil a zkoumání, ke kterému pinu jsou připojeny. Tyto pokusy jsem tedy zanechal a toto, jak jsem si myslel, elegantní řešení jsem zavrhnul. Použije nějaké standardní propojovací vodiče, které doma nalezneme.

Pro práci s displejem jsem si na internetu nalezl knihovnu UTFT,k která by měla s displejem spolupracovat. Pro stažení knihovny, klikněte zde a přidejte ji do prostředí Arduino IDE tak jak jsme zvyklí. Po rozbalení archivu, nalezneme soubor UTFT.pdf, který obsahuje kompletní manuál a jsou tam popsané veškeré funkce. My musíme vzít v potaz, že knihovna ač tedy podporuje tento displej, zná ho zřejmě jenom na nějakém shieldu, z tohoto důvodu budeme muset při zapojení dodržovat určitá pravidla. Já si v manuálu našel tabulku jak displej připojit:

Pin na modulu TFT Pin na Arduinu MEGA
DB0 D37
DB1 D36
DB2 D35
DB3 D34
DB4 D33
DB5 D32
DB6 D31
DB7 D30
DB8 D22
DB9 D23
DB10 D24
DB11 D25
DB12 D26
DB13 D27
DB14 D28
DB15 D29
RS je to jedno, můžeme v programu nastavit (D38)
WR je to jedno, můžeme v programu nastavit (D39)
RD +5V
CS je to jedno, můžeme v programu nastavit (D40)
REST je to jedno, můžeme v programu nastavit (D41)

    Seznam podporovaných displejů knihovnou UTFT je ke stažení v pdf zde.

Jako první jsem si zapojil DB0 až DB15. Poté RS, WR, RD, CS a REST. Nakonec napájení 5V a GND, nesmíme zapomenout také na podsvětlení displeje u pinu LED_A na +3,3V (s 5V by hrozilo poškození podsvícení)!!. Zapojeno by jsme měli mí bez problému. K samotné funkci displeje je tedy zapotřebí 23 propojovacích vodičů male – female.

     Teď k samotnému programu. Já jsem program co nejvíce zjednodušil a trošku popsal co která funkce dělá. Více vysvětlení najdete v samotném manuálu. Program je zde:

Komu se po nahrání programu zobrazilo toto, tak Vám gratuluji :-). Za zmínku ještě stojí, že při inicializaci displeje je ve funkci myGLCD(ITDB32S,38,39,40,41); jako první parametr uveden ITDB32S – to je je náš typ displeje, pokud podle návodu vyberete jiný, tak funkčnost nezaručuji.

Ještě si tedy vyzkoušíme, aby se nám na displeji zobrazovalo něco užitečného. K Arduinu jsem tedy připojil na sběrnici I2C (U Arduina MEGA pin 20 a 21) hodinový modul (lekce 11) a také levné čidlo pro teplotu a vlhkost DHT11 na digitální pin 2 (viz lekce 6 s čidlem). Program si trošku upravíme. Graficky to není zdařilé, ale k posouzení funkčnosti to bude stačit. Tak tedy zde je zdrojový kód:

Zde výsledek:

Příště si připojíme a zprovozníme funkci dotykové obrazovky. 🙂

1 Komentář

  1. Kobylka

    Při kompilaci druhého programu lekce 28 dostávám následující chyby kompilace:
    Arduino: 1.6.3 (Windows 7), Vývojová deska: “Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)”

    Užita knihovna UTFT v adresáři: C:\Program Files\Arduino\libraries\UTFT (legacy)

    Užita knihovna Wire v adresáři: C:\Program Files\Arduino\hardware\arduino\avr\libraries\Wire

    Užita knihovna DS1307 v adresáři: C:\Program Files\Arduino\libraries\DS1307 (legacy)

    Užita knihovna DHT11 v adresáři: C:\Program Files\Arduino\libraries\DHT11 (legacy)

    C:\Program Files\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10603 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -IC:\Program Files\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files\Arduino\hardware\arduino\avr\variants\mega -IC:\Program Files\Arduino\libraries\UTFT -IC:\Program Files\Arduino\hardware\arduino\avr\libraries\Wire -IC:\Program Files\Arduino\libraries\DS1307 -IC:\Program Files\Arduino\libraries\DHT11 C:\Users\a\AppData\Local\Temp\build5538275383593334488.tmp\LCD_graf.cpp -o C:\Users\a\AppData\Local\Temp\build5538275383593334488.tmp\LCD_graf.cpp.o

    C:\Program Files\Arduino\hardware\tools\avr/bin/avr-gcc -c -g -Os -w -ffunction-sections -fdata-sections -MMD -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10603 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -IC:\Program Files\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files\Arduino\hardware\arduino\avr\variants\mega -IC:\Program Files\Arduino\libraries\UTFT -IC:\Program Files\Arduino\hardware\arduino\avr\libraries\Wire -IC:\Program Files\Arduino\libraries\DS1307 -IC:\Program Files\Arduino\libraries\DHT11 -IC:\Program Files\Arduino\libraries\UTFT\utility C:\Program Files\Arduino\libraries\UTFT\DefaultFonts.c -o C:\Users\a\AppData\Local\Temp\build5538275383593334488.tmp\UTFT\DefaultFonts.c.o

    C:\Program Files\Arduino\libraries\UTFT\DefaultFonts.c:21:14: error: variable ‘SmallFont’ must be const in order to be put into read-only section by means of ‘__attribute__((progmem))’

    fontdatatype SmallFont[1144] PROGMEM={

    ^

    C:\Program Files\Arduino\libraries\UTFT\DefaultFonts.c:125:14: error: variable ‘BigFont’ must be const in order to be put into read-only section by means of ‘__attribute__((progmem))’

    fontdatatype BigFont[3044] PROGMEM={

    ^

    C:\Program Files\Arduino\libraries\UTFT\DefaultFonts.c:234:14: error: variable ‘SevenSegNumFont’ must be const in order to be put into read-only section by means of ‘__attribute__((progmem))’

    fontdatatype SevenSegNumFont[2004] PROGMEM={

    ^

    Chyba kompilace.

Napsat komentář

Translate »