Lekce 14 - Raspberry Pi - Dotykový displej
V předchozí lekci, Pestrý šatník Raspberry Pi - Přehled HAT modulů, jsme si trochu neobvykle povídali o všech zajímavých kloboucích (HAT) pro naše Raspberry Pi.
Dnes si k našemu Raspberry Pi připojíme dotykový displej. Něco málo si o displejích řekneme, nakalibrujeme si ten náš a vytvoříme program, který vypíše pozici určující kde jsme se na displeji dotknuli.
Potřebné součástky
K úspěšnému zapojení budeme potřebovat:
- Raspberry Pi
- dotykový displej
- klávesnice a myš
LCD Display vs OLED Display
Zobrazovacím zařízením nyní dominují technologie OLED a LCD.
Co je LCD?
LCD je zobrazovací technologie , která funguje na principu tekutých krystalů. Tekutý krystal je látka, která dokáže být jak v kapalném tak pevném skupenství. Tekutý krystal svou strukturu mění podle míry elektrického náboje, který je krystalu dodáván. Tyto krystaly jsou vloženy mezi průhledné elektrody a polarizační filtry. Elektrickým nábojem je řízeno natočení těchto krystalů, a díky tomu dochází k řízení průchodu světla.
Zobrazovaná jednotka obrazu, jeden bod, má název pixel. Ten se skládá ze subpixelů, které jsou v každém pixelu 3. A to známé RGB (červený, zelený, modrý). Kombinací rozsvěcování těchto subpixelů lze dosáhnout vykreslení všech barev spektra.
Co je OLED?
OLED funguje na principu LED diod. Máme organickou látku umístěnou mezi dvěma elektrodami z nichž jedna musí být průhledná. Mezi průhlednou anodou a kovovou katodou je několik vrstev organické látky. V momentě když je přivedeno napětí, jsou vyvolány kladné a záporné náboje, které se spojují ve vyzařovací vrstvě, a tím produkují světelné záření.
Spotřeba
Velmi důležitým bodem je spotřeba. OLED má ve spotřebě výhodu. Každá dioda generuje své vlastní světlo a barvu uvnitř OLED panelu. Aby byly barvy jasné, nepotřebuje OLED panel žádné podsvícení protože si vytváří světlo sám. Proto je OLED výrazně úspornější.
Zobrazení
Budeme-li porovnávat zobrazení, LCD displej vydává realističtější barvy, naopak OLED vydává spíše barvy živější. OLED Displej je pak také například špatně viditelný pod světlem nebo dokonce i při použití venku za denního světla. To je způsobeno tím že všechno jeho světlo je tvoře pouze diodami bez podsvícení. Dále vytváří tmavší černou než LCD a má lepší pozorovací úhly. Lepší pozorovací úhel OLED displeje vychází ze skutečnosti, že jeho jednotlivé organické pixely vytvářejí světlo i barvu. U LCD Světlo pochází z podsvícení, ale barvy jsou vytvářeny jednotlivými pixely. Nakonec ještě zmíním že LCD je pomalejší než OLED, pokud jde o obnovovací frekvenci.
Dělení displejů k Raspberry Pi
Představme si základní dělení displejů k Raspberry Pi.
Podle velikosti
Raspberry Pi displeje se často dělí podle velikosti. Nejčastější velikosti jsou 7" nebo 3,5". Nejmenší displeje velikosti kolem 1,5" jsou stejné jako například u Arduina. Tyto displeje se nepoužívají místo monitoru, ale pouze pro zobrazení času nebo jiných základních dat.
Podle možnosti připojení
Většina displejů se k Raspberry Pi připojuje pomocí FFC/FPC kabelu. Existují také displeje se zapojení typu HAT nebo klasické HDMI. Jednoduší displeje se dají stejně jako u Arduina připojit pomocí pinů. Velmi častá je také kombinace FFC/FPC kabelu a pinů.
Zapojení displeje
Display se stejně jako například kamera Raspberry Pi dá připojit pomocí FFC/FPC kabelu. Proto se stačí pouze do zdířky naproti USB portům strčit druhý konec kabelu a zajistit pojistkou.
Naše zapojení displeje vypadá takto:
Kalibrace displeje
K nastavení displeje bude potřeba zapojení klávesnice a myši. Displej by po připojení k Raspberry Pi měl zobrazovat vše jako běžný monitor.
Funkci dotyku pak můžeme zkalibrovat pomocí programu xinput-calibration. Ukažme si, jak na to.
Instalace programu xinput-calibration
Otevřeme si terminál. První zkontrolujeme, zda již existuje složka pro
displej LCD-show/
. Pokud ano, odstraníme ji:
sudo rm -rf LCD-show
Příkaz rm
může v linuxovém terminálu vymazat soubor, ale
ne složku. Složku lze vymazat pomocí příkazu rm -rf
.
Stáhneme si z githubu soubory k instalaci kalibračního software:
git clone https://github.com/goodtft/LCD-show.git
Nastavíme si nejvyšší práva ke složce LCD-show/
:
chmod 777 LCD-show
- Příkaz
chmod
v linuxu nastavuje vlastníkovi složky, skupinám a všem ostatním uživatelům přístupová práva ke složce. - Pomocí čísla
777
získávají všichni právo na čtení, zápis a provádění změn.
Pomocí příkazu cd
se přesuneme do složky
LCD-show/
a nainstalujeme si instalační soubor aplikace:
sudo dpkg -i -B xinput-calibrator_0.7.5-1_armhf.deb
Balíček dpkg
neboli debian package je speciální
balíček na instalaci souborů (např. s koncovkou deb). Je velmi podobný
například balíčkovacímu nástroji apt-get
.
Spuštění kalibrace displeje
Když máme program nainstalovaný, přejdeme do složky
LCD-show/
a do terminálu napíšeme:
DISPLAY=:0.0 xinput_calibration
Tento příkaz začne kalibrovat display od pozice y=0 , x = 0.
Instalace klávesnice na obrazovce
Abychom nepotřebovali externí klávesnici, můžeme si nainstalovat speciální program, který nám zobrazí na displej klávesnici stejně jako například na mobilu:
sudo apt-get install onboard
Mně osobně se nejvíce líbí onboard
klávesnice:
Raspberry Pi však nabízí více druhů virtuálních klávesnic,
například florence
nebo matchbox-keyboard
.
Program "Ukaž pozici"
Náš program bude tentokrát velmi jednoduchý. Bude nám ukazovat pozici,
kde jsme se na displeji dotknuli. Použijeme k tomu knihovnu
pyautogui
. Tato knihovna nám pomáhá pracovat s gui prostředím
našeho systému. Můžeme s ní nastavit třeba právě automatické klikání
na jedno místo na obrazovce.
Knihovnu si nainstalujeme příkazem:
sudo pip install pyautogui
Pak už jsi jen vytvoříme Python soubor, do kterého zapíšeme náš kód:
import pyautogui while True: print(pyautogui.position())
První řádek kódu je klasický import knihovny pyautogui
.
Druhý řádek je poté vytvoření nekonečné smyčky while
.
Nakonec to nejdůležitější: pomocí print
si vypíšeme pozici
určující, kde jsme se dotkli.
Použití knihovny pyautogui
je trochu podvod, protože tato
knihovna nesleduje, kde jsme se dotkli, ale kde se nachází kurzor myši, a
vypisuje právě pozici tohoto kurzoru. Proto když ovládáme kurzor myši
pomocí dotykové obrazovky, knihovna nám vypisuje pozici dotyku. Hlavní
důvod vybrání právě této knihovny jsou však její velmi rozsáhlé
možnosti uplatnění.
Nekonečnou smyčku bychom tvořit nikdy
neměli! Vždy bychom měli napsat podmínku, při které nastává
hodnota false
a program ze smyčky vyskočí!
Shrnutí programu
Nekonečná smyčka bude neustále dokola vypisovat pozici našeho kurzoru,
která je zjišťována pomocí importované knihovny
pyautogui
.
Věřím, že se vám připojení a nakódování programu pro displej podařilo. Své dojmy a případné dotazy můžete zanechat v diskusi pod článkem 🙂
V další lekci, Raspberry Pi - Vodní čerpadlo, si k Raspberry Pi připojíme vodní čerpadlo.