V minulých lekcích jsme si hráli se součástkou zvanou LED Matrix. Nová skupina součástek, kterou se budeme zabývat je z principu něco podobného. Budeme se zabývat LCD displeji. LCD displeje se používají pro podobný účel, jako LED Matrix, ale servis, který nám přinášejí je oproti matrixu výrazným krokem vpřed.
LCD displejů je ve světě arduina více druhů, liší se zobrazovací kapacitou i způsobem přenosu dat. Nabídka tohoto typu součástek se navíc vyvíjí a dnes je k dispozici mnohem více a kvalitnějších typů, než bylo dříve. Budu se snažit popsat to s čím se na kroužku budeme setkávat.
LCD displej – princip
Pro tvorbu lcd displejů je využito materiálu, kterému se říká tekuté krystaly (př. cholesteryl, jodid stříbrný). Tento materiál má spoustu zajímavých vlastností. Kapalné krystaly mají vlastnosti jak pevné látky, tak tekutiny. Při určité teplotě tvoří krystaly, které jsou ovšem v mřížce materiálu volně uspořádány a je možné toto uspořádání pomocí vnějších podnětů měnit.
Běžně jsou tekuté krystaly vnitřně volně uspořádanou strukturou podlouhlých krystalků, které jsou díky vnějším okolnostem (zejména působením vnějšího elektrického pole vůči sobě různě pootočeny – jsou v neuspořádaném tvaru). Výsledkem tohoto uspořádání je mimo jiné i to, že je daná látka v této podobě průhledná (viz. obr. – stav A).
Lcd displej je zkonstruován tak, aby vrstvička tekutých krystalů byla umístěna mezi dvěma elektrodami. Pokud na obě elektrody přivedeme odpovídající napětí vznikne mezi nimi elektrické pole, které ovlivní polohu krystalů ve vrstvě tekutých krystalů, ty budou vlivem pole natočené tak, že materiál bude v místě působení elektrického pole neprůhledný (viz. obr. stav B).
Konstrukce bývá ještě doplněna polarizačními filtry (v případě barevných lcd i několikavrstvých), případně ještě podsvícením displeje, které vylepšuje kontrast znaků pro lidský zrak.
LCD displej – základní typy
Nejzákladnější skupinou LCD displejů, se kterou se vždy začíná je znakový displej. Proto se tato základní lekce bude týkat hlavně použití těchto typů displejů. Aby to bylo trošku složitější, v posledních letech jsou kromě lcd displejů s klasickým způsobem přenosu dat ještě k dispozici lcd displeje s přenosem dat po sběrnici I2C. Oba displeje se zas tak moc neliší, ale bude zapotřebí popsat oba typy, protože nějaké rozdíly tam samozřejmě jsou.
Znakové displeje zobrazují znakové matice/skupiny bodů (podle toho název této skupiny lcd displejů). Uživatel tak může na tomto displeji zobrazovat drobné texty, nebo číselné znaky zobrazující například hodnoty naměřené na čidlech. V nabídce jsou z hlediska podsvícení dva typy displejů – s modrým a žlutým podsvícením. V případě modrého podsvícení jsou zobrazované znaky bílé, v případě žlutého podsvícení jsou znaky černé (způsob zapojení i programování se v tomto případě neliší).
Z hlediska počtu zobrazovaných znaků jsou k dispozici dva základní typy. Typ umožňujíc zobrazovat na dvou řádcích 16 znaků a typ, který umí zobrazit dvacet znaků na čtyřech řádcích. Zapojení je v tomto případě stejné. V programu ovšem je třeba v inicializační fázi uvést s kterým typem tohoto displeje arduino bude pracovat.
Na doprovodné grafice jsou dva displeje lcd 16×2 lišící se přenosem dat. Základní „displejová“ část je v obou případech stejná. Displej na pravé straně má navíc modul umožňující komunikaci na sběrnici I2C. Rozdíly jsou v programování i v zapojení a popíši je v další části lekce. Obecně je výhoda zejména při počtu vodičů nutných pro zapojení na straně verze s I2C – stačí pouze čtyři vodiče oproti klasické verzi (12 vodičů).
Kromě znakových displejů jsou zajímavé i grafické displeje umožňující zobrazení grafiky monochromatického typu. Těmto typům displejů pak věnujeme celou následující lekci.
LCD displej – klasický typ – zapojení + program
Základní zapojení klasického lcd 16×2 je stejné jako zapojení verze 4×20. Lcd jsou obvykle dodávány bez naletovaných pinů, což umožňuje různé varianty letovaných kontaktů. Pro výuku se obvykle používá verze řádky pinů naletovaných napevno, které lze vsadit do kontaktního pole.
Součástí zapojení i 10k potenciometr. Všechny lcd této řady jsou citlivé na teplotu okolního prostředí a díky tomu se kontrast zobrazovaného textu v závislosti na teplotě mění, otáčením potenciometru lze regulovat jas a kontrast displeje a přizpůsobit tak viditelnost displeje momentální situaci.
Jednoduchý kód pro zobrazení textu „navstivte ondranauci.cz“ na dvou řádkách naleznete v tabulce za tímto odstavcem. Program zahajujeme importem knihovny LiquidCrystal.h. Tuto knihovnu byste měli již mít v editoru arduino IDE již implementovánu, tudíž ji nebude třeba do programu přidávat. Přidáme objekt lcd, kterým knihovně sdělíma na kterých pinech máme displej připojen (samozřejmě by mělo odpovídat realitě a lze to měnit podle potřeby). V setupu v příkazu begin sdělíme arduinu, která verze displeje je připojena (aktuálně je zvolena verze 16×2). Nechte, nebo zrušte zakomentování dle zvolené součástky. Ve voidu loop pak zobrazujeme text od místa, které volíme příkazem setCursor a zobrazujeme příkazem print.
// importování knihovny #include <LiquidCrystal.h> // definice pinů pro objekt lcd LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { // vyberte verzi displeje //verze 16×2 lcd.begin(16, 2); //verze 20×4 //lcd.begin(20, 4); } void loop() { //nekonečná smyčka zobrazuje text – text je vždy uvedený v uvozovkách lcd.setCursor(3,0); //nastavení kurzoru – místa odkud se začíná zobrazovat text lcd.print(„navstivte“); //zobrazovaný text na prvém řádku lcd.setCursor(1,1); //nastavení kurzoru – místa odkud se začíná zobrazovat text lcd.print(„ondranauci.cz“); //zobrazovaný text na druhém řádku } |
LCD displej – typ I2C – zapojení + program
Dalším typem lcd displeje, který se stále více vyskytuje v nabídce prodejců je verze s I2C převodníkem. Oproti předchozí klasické verzi je k tomuto displeji napevno připojen I2C převodník, který umožňuje komunikaci displeje s arduinem po I2C sběrnici. Díky tomuto způsobu komunikace je možné snížit počet vodičů nutných k propojení arduina k displeji na čtyři.
Pro správné fungování programu je třeba doinstalovat knihovnu LiquidCrystal_I2C.h do editoru arduina. Knihovnu naleznete v editoru arduina v menu Projekt > Přidat knihovnu > Spravovat knihovny. Objeví se vám menu pro správu knihoven, kde vyhledejte knihovnu pod názvem „LiquidCrystal I2C“ od Marco Schwartze. Tuto knihovnu doinstalujte a můžete vložitr do destičky arduina následující program. Výsledné chování programu by mělo být stejné, jako v předešlé kapitole.
// importování knihoven # include <Wire.h> # include <LiquidCrystal_I2C.h> //Inicializace objektu lcd LiquidCrystal_I2C lcd(0x27,16,2); // nastavení LCD adresy na 0x27 na 16 x 2 void setup() { } void loop() { lcd.init(); // inicializace lcd lcd.backlight(); // aktivace podsvícení displeje lcd.setCursor(4,0); //nastavení kurzoru – místa odkud se začíná zobrazovat text lcd.print(„navstiv“); //zobrazovaný text na prvém řádku lcd.setCursor(1,1); //nastavení kurzoru – místa odkud se začíná zobrazovat text lcd.print(„ondranauci.cz“); //zobrazovaný text na druhém řádku } |
Programy z článku ke stažení
Program lcd-hello-1 pro klasický displej popisovaný v tomto článku
Program lcd-hello-2 pro displej s I2C převodníkem popisovaný v tomto článku
Pingback: LCD displej – grafický displej 128×64 – jak na texty – ondranauci.cz