Raspberry Pi 16) Dvouřádkový displej
Protože signalizace stavů pomocí několika LED diod na GPIO portech není dostatečná, přikoupil jsem k RasPi ještě dvouřádkový alfanumerický LCD displej. Z mnoha dostupných typů displejů jsem si vybral tento: WINSTAR-WH1602a Před nákupem věnujte pozornost i znakové sadě, která
je uložena v ROM paměti displeje. Všechny znaky anglické abecedy a čísla
jsou zobrazitelné na jakémkoliv displeji. Pokud však koupíte displej s
čínskou ROM, nebudete mít k dispozici řecké, některé české a
speciální znaky (stupně, šipky, přehlásky...). Porovnejte si tabulky
na stránkách 13 a 14 v katalogovém
listu řídícího obvodu. Nejdříve jsem zkoušel vymyslet vlastní program pro zobrazování znaků,
ale nakonec jsem narazil na tento návod, pomocí kterého jsem displej
zprovoznil: Jen drobnými změnami parametrů je možné ten program přizpůsobit i pro jiné displeje (16x4 nebo 20x2 znaky) Asi nemá cenu tady ten článek překládat, tak jen v jednoduchosti: 0) pokud ještě nemáte nainstalovaný GPIO driver do Pythonu, tak ho nainstalovat podle
této stránky: Jsou to vlastně jen 2 příkazy do terminálu.
1) propojit podle obrázku na výše uvedených stránkách (...16x2-lcd-module
...)
Postup na výše uvedených stránkách potom jsem ještě trochu poupravil: 1) Signál CONTRAST, který je na LCD vývodu č.3, jsem nepřipojoval přímo na +5V, ale připojil jsem ho přes potenciometr, takže je možné kontrast plynule nastavit. Když byl vývod přímo na +5V, byl displej špatně čitelný (prosvítalo pozadí). Na hodnotě potenciometru moc nezáleží, protože je zapojen jako dělič napětí. Takže řádově kilo ohmy až desítky kilo ohmů by měly být v pořádku. Nižší hodnoty by zbytečně zatěžovaly pětivoltový zdroj v RasPi. 2) Při ukončení programu docházelo k tomu, že se displej zaplnil 32
znaky invertovaného "P". Je to způsobeno tím, že při ukončení
skriptu se GPIO porty nastaví jako vstupní a ovládání zápisu na LCD
displej tak zůstane
v nedefinovaném stavu "ve vzduchu". Problém jsem vyřešil jednoduše
přidáním odporu 150k mezi vývod "+5V" a "E" na displeji. Tím
je zajištěna trvalá logická "1" při odpojení ovládacího pinu,
takže na displeji zůstane zobrazen poslední stav. (Asi by stačil i menší
odpor. Já tam přilepil první kus, který mi přišel pod ruku a
fungovalo to. Ten odpor musí být samozřejmě tak velký, aby při běžné
komunikaci umožnil Raspíčku stáhnout úroveň na tom ovládacím pinu
k "0". Nepočítal jsem to, ale podle zkušeností jsou to řádově
desítky kilo ohmů).
3) Upravil jsem ovládací program tak, aby zobrazoval i "NE ASCII" znaky (třeba znak ° nebo řecké znaky). A také jsem přidal možnost spouštět program se dvěma parametry, které udávají texty na jednotlivých řádcích. Úpravy se týkají těchto částí kódu
Program v tomto stavu není chráněný proti nesmyslným vstupům nebo chybějícím argumentům - ale je to jen takový základ, který ukazuje možnosti zobrazení.
Po úpravách kódu, popsaných výše, je tedy možné posílat zprávy na displej takovýmto způsobem:
V případě, že je třeba zobrazit nějaký speciální znak, provede se to znakem "svislá čárka", která je následovaná dvojmístným hexadecimálním kódem znaku podle tabulky na stránce 14 v tomto katalogovém listu: www.crystalfontz.com/controllers/ST7066U.pdf (Protože je svislá čára použitá jako přepínací znak, není možné jí zobrazit přímo, ale jen pomocí kódu "|7C")
( znak pro stupně má kód |B2 )
A pomocí takovéhoto zápisu lze zobrazit řecké znaky a další speciality:
A třeba aktuální datum a čas se dá zobrazit takto:
Kód, který je mezi zpětnými apostrofy se vykoná a jeho textový výsledek se vsune místo výrazu v těch zpětných apostrofech. Mezi obyčejnými apostrofy jsou jen několikaznakové mezery. První trojice mezer je mezi označením dne a datumem. Druhá čtveřice mezer je před časem. Před tímto druhým blokem mezer je obyčejná mezera, která odděluje dva parametry příkazu (první a druhou řádku). Na závěr ještě upravené schéma:
|
úvodní strana webu AstroMiK.org |
|
poslední úprava stránky 10.2.2013 |