14. diel - Raspberry Pi - Dotykový displej
V predchádzajúcej lekcii, Pestrý šatník Raspberry Pi - Prehľad HAT modulov , sme sa trochu neobvykle rozprávali o všetkých zaujímavých klobúkoch (HAT) pre naše Raspberry Pi.
Dnes si k nášmu Raspberry Pi pripojíme dotykový displej. Niečo málo si o displejoch povieme, nakalibrujeme si ten náš a vytvoríme program, ktorý vypíše pozíciu určujúcu kde sme sa na displeji dotkli.
Potrebné súčiastky
Na úspešné zapojenie budeme potrebovať:
- Raspberry Pi
- dotykový displej
- klávesnica a myš
Zobrazovacím zariadeniam teraz dominujú technológie OLED a LCD.
Čo je LCD?
LCD je zobrazovacia technológia, ktorá funguje na princípe tekutých kryštálov. Tekutý kryštál je látka, ktorá dokáže byť ako v kvapalnom tak pevnom skupenstve. Tekutý kryštál svoju štruktúru mení podľa miery elektrického náboja, ktorý je kryštálu dodávaný. Tieto kryštály sú vložené medzi priehľadné elektródy a polarizačné filtre. Elektrickým nábojom je riadené natočenie týchto kryštálov, a vďaka tomu dochádza k riadeniu priechodu svetla.
Zobrazovaná jednotka obrazu, jeden bod, má názov pixel. Ten sa skladá zo subpixelov, ktoré sú v každom pixele 3. A to známe RGB (červený, zelený, modrý). Kombináciou rozsvecovania týchto subpixelov je možné dosiahnuť vykreslenie všetkých farieb spektra.
Čo je OLED?
OLED funguje na princípe LED diód. Máme organickú látku umiestnenú medzi dvoma elektródami z ktorých jedna musí byť priehľadná. Medzi priehľadnou anódou a kovovou katódou je niekoľko vrstiev organickej látky. V momente keď je privedené napätie, sú vyvolané kladné a záporné náboje, ktoré sa spájajú vo vyžarovacej vrstve, a tým produkujú svetelné žiarenie.
Spotreba
Veľmi dôležitým bodom je spotreba. OLED má v spotrebe výhodu. Každá dióda generuje svoje vlastné svetlo a farbu vo vnútri OLED panelu. Aby boli farby jasné, nepotrebuje OLED panel žiadne podsvietenie, pretože si vytvára svetlo sám. Preto je OLED výrazne úspornejší.
Zobrazenie
Ak budeme porovnávať zobrazenie, LCD displej vydáva realistickejšie farby, naopak OLED vydáva skôr farby živšie. OLED Displej je potom tiež napríklad zle viditeľný pod svetlom alebo dokonca aj pri použití vonku za denného svetla. To je spôsobené tým, že všetko jeho svetlo je tvorené iba diódami bez podsvietenia. Ďalej vytvára tmavšiu čiernu ako LCD a má lepšie pozorovacie uhly. Lepší pozorovací uhol OLED displeja vychádza zo skutočnosti, že jeho jednotlivé organické pixely vytvárajú svetlo aj farbu. U LCD Svetlo pochádza z podsvietenia, ale farby sú vytvárané jednotlivými pixelmi. Nakoniec ešte spomeniem že LCD je pomalší ako OLED, pokiaľ ide o obnovovaciu frekvenciu.
Delenie displejov k Raspberry Pi
Predstavme si základné delenie displejov k Raspberry Pi.
Podľa veľkosti
Raspberry Pi displeja sa často delia podľa veľkosti. Najčastejšie veľkosti sú 7" alebo 3,5". Najmenšie displeje veľkosti okolo 1,5" sú rovnaké ako napríklad u Arduina. Tieto displeje sa nepoužívajú namiesto monitora, ale iba pre zobrazenie času alebo iných základných dát.
Podľa možnosti pripojenia
Väčšina displejov sa k Raspberry Pi pripája pomocou FFC/FPC kábla. Existujú aj displeje so zapojení typu HAT alebo klasické HDMI. Jednoduchšie displeje sa dajú rovnako ako u Arduina pripojiť pomocou pinov. Veľmi častá je aj kombinácia FFC/FPC kábla a pinov.
Zapojenie displeja
Display sa rovnako ako napríklad kamera Raspberry Pi dá pripojiť pomocou FFC/FPC kábla. Preto sa stačí iba do zdierky oproti USB portom strčiť druhý koniec kábla a zaistiť poistkou.
Naše zapojenie displeja vyzerá takto:
Kalibrácia displeja
Na nastavenie displeja bude potrebné zapojenie klávesnice a myši. Displej by po pripojení k Raspberry Pi mal zobrazovať všetko ako bežný monitor.
Funkciu dotyku potom môžeme skalibrovať pomocou programu xinput-calibration. Ukážme si, ako na to.
Inštalácia programu xinput-calibration
Otvoríme si terminál. Prvé skontrolujeme, či už existuje zložka pre
displej LCD-show/
. Ak áno, odstránime ju:
sudo rm -rf LCD-show
Príkaz rm
môže v linuxovom termináli vymazať súbor, ale
nie priečinok. Zložku je možné vymazať pomocou príkazu
rm -rf
.
Stiahneme si z githubu súbory na inštaláciu kalibračného softvéru:
git clone https://github.com/goodtft/LCD-show.git
Nastavíme si najvyššie práva k zložke LCD-show/
:
chmod 777 LCD-show
- Príkaz
chmod
v linuxe nastavuje vlastníkovi zložky, skupinám a všetkým ostatným užívateľom prístupové práva k zložke. - Pomocou položky
777
získavajú všetci právo na čítanie, zápis a vykonávanie zmien.
cd
sa presunieme do zložky
LCD-show/
a nainštalujeme si inštalačný súbor aplikácie:
sudo dpkg -i -B xinput-calibrator_0.7.5-1_armhf.deb
Balíček dpkg
alebo debian package je špeciálny
balíček na inštaláciu súborov (napr. s koncovkou deb). Je veľmi podobný
napríklad balíčkovaciemu nástroju apt-get
.
Spustenie kalibrácie displeja
Keď máme program nainštalovaný, prejdeme do zložky
LCD-show/
a do terminálu napíšeme:
DISPLAY=:0.0 xinput_calibration
Tento príkaz začne kalibrovať display od pozície y=0 , x = 0.
Inštalácia klávesnice na obrazovke
Aby sme nepotrebovali externú klávesnicu, môžeme si nainštalovať špeciálny program, ktorý nám zobrazí na displej klávesnicu rovnako ako napríklad na mobile:
sudo apt-get install onboard
Mne osobne sa najviac páči onboard
klávesnica:
Raspberry Pi však ponúka viac druhov virtuálnych klávesníc, napríklad
florence
alebo matchbox-keyboard
.
Program "Ukáž pozíciu"
Náš program bude tentokrát veľmi jednoduchý. Bude nám ukazovať
pozíciu, kde sme sa na displeji dotkli. Použijeme k tomu knižnicu
pyautogui
. Táto knižnica nám pomáha pracovať s gui prostredím
nášho systému. Môžeme s ňou nastaviť napríklad práve automatické
klikanie na jedno miesto na obrazovke.
Knižnicu si nainštalujeme príkazom:
sudo pip install pyautogui
Potom si už len vytvoríme Python súbor, do ktorého zapíšeme náš kód:
import pyautogui while True: print(pyautogui.position())
Prvý riadok kódu je klasický import knižnice pyautogui
.
Druhý riadok je potom vytvorenie nekonečnej slučky while
.
Nakoniec to najdôležitejšie: pomocou print
si vypíšeme
pozíciu určujúcu, kde sme sa dotkli.
Použitie knižnice pyautogui
je trochu podvod, pretože táto
knižnica nesleduje, kde sme sa dotkli, ale kde sa nachádza kurzor myši, a
vypisuje práve pozíciu tohto kurzora. Preto keď ovládame kurzor myši
pomocou dotykovej obrazovky, knižnica nám vypisuje pozíciu dotyku. Hlavný
dôvod vybrania práve tejto knižnice sú však jej veľmi rozsiahle možnosti
uplatnenia.
Nekonečnú slučku by sme tvoriť nikdy
nemali! Vždy by sme mali napísať podmienku, pri ktorej nastáva
hodnota false
a program zo slučky vyskočí!
Zhrnutie programu
Nekonečná slučka bude neustále dookola vypisovať pozíciu nášho
kurzora, ktorá je zisťovaná pomocou importovanej knižnice
pyautogui
.
Verím, že sa vám pripojenie a nakódovanie programu pre displej podarilo. Svoje dojmy a prípadné otázky môžete zanechať v diskusii pod článkom 🙂
V ďalšej lekcii, Raspberry Pi - Vodné čerpadlo , si k Raspberry Pi pripojíme vodné čerpadlo.