Image
1.12.2015 0 Comments

ARDUINO - pripojenie a práca s LCD displejom /10.časť

Späť na úvod >> Späť na programovanie >> Späť na seriál

V predošlej časti sme uviedli, že k Arduinu najjednoduchšie môžeme pripojiť už hotový LCD shield, na ktorom sa okrem displeja nachádza aj šesť tlačidiel. Tí, ktorí tento shield nemajú, ale majú displej, môžu ho pripojiť priamo pomocou vodičov alebo pomocou prepojovacieho poľa. Už vieme, že LCD displej môže komunikovať v 4-bitovom alebo 8-bitovom móde. A povedali sme si, že najčastejšie sa využíva 4-bitový mód. Aj my využijeme tento mód, pretože knižnice dostupné vo vývojovom prostredí spolupracujú s týmto módom.


Obr.č.1

V 4-bitovom móde sa využívajú tieto signály:

- Signál RS (Register Select) - výber registrov - na displeji pin č. 4 (štvrtý zľava)
- Signál EN (Enable) - povolenie zápisu do registrov - na displeji pin č. 6 (šiesty zľava)
- Signál DB4 - dáta, bit 4 - na displeji pin č. 11 (jedenásty zľava)
- Signál DB5 - dáta, bit 5 - na displeji pin č. 12 (dvanásty zľava)
- Signál DB6 - dáta, bit 6 - na displeji pin č. 13 (trinásty zľava)
- Signál DB7 - dáta, bit 7 - na displeji pin č. 14 (štrnásty zľava)

Okrem týchto signálov sa veľmi často používa pripojenie trimmera alebo potenciometra s hodnotou približne 10 kiloohmov medzi vývody Vss, Vdd a Vo (piny 1, 2 a 3 displeja) na nastavenie kontrastu displeja a vývody LED+ a LED- (piny 14 a 15) ako podsvietenie displeja. Zapojenie týchto vodičov nie je povinné, ale veľmi vhodné.

Tieto signály môžeme pripojiť na ľubovoľný digitálny dátový vývod Arduina, najčastejšie sa však pripájajú na D2 až D12. Ukážeme vám dva najčastejšie používané spôsoby.

Pripojenie pomocou prepojovacieho poľa

Tí, ktorí vlastnia iba len LCD displej, ho môžu pripojiť napríklad podľa tejto schémy (obr. č. 1). Keďže si nezabezpečili už hotový LCD shield, očakávam, že sú dostatočne erudovaní a dokážu ho k Arduinu správne pripojiť. Všimnime si, že na uvedenej schéme sú signály prepojené podľa tabuľky č. 1.

Signál LCD

Pin LCD

Signál Arduino

RS

4

D12

EN

6

D11

DB4

11

D5

DB5

12

D4

DB6

13

D3

DB7

14

D2

Zároveň je na schéme uvedené aj pripojenie potenciometra kontrastu a podsvietenie.

Tí, ktorí používajú prepojovacie pole, môžu toto zapojenie realizovať napríklad podľa obrázka č. 2.

A tí, ktorí vlastnia LCD shield, ho jednoducho zasunú do Arduina a môžeme začať pracovať.

Použitie LCD shieldu

Niektoré LCD shieldy majú rôzne pripojené vývody k Arduinu. Preto si treba od výrobcu (alebo predajcu) zistiť schému zapojenia a z nej vyčítať, kde je príslušný pin pripojený. Pre drvivú väčšinu LCD shieldov platí pripojenie podľa tabuľky č. 2.

Signál LCD

Pin LCD

Signál Arduino

RS

4

D8

EN

6

D9

DB4

11

D4

DB5

12

D5

DB6

13

D6

DB7

14

D7

Možno niekto namietne, prečo sme LDC displej pripojili na iné piny, keď sme mohli použiť ten istý spôsob, ako je to v shielde. Je to preto, že sa s tým môžeme stretnúť v budúcnosti, a aby sme dokázali jednoducho v programe upraviť definovanie pripojenia.

Knižnica na prácu s LCD displejom

Na prácu s LCD displejom sa vo vývojom prostredí Arduina najčastejšie používa veľmi známa knižnica LiQuidCrystal. Tá je už súčasťou prostredia a netreba ju doinštalovať. Stačí, ak ju vo svojom programe zavoláme a budeme používať. Knižnica má mnoho príkazov, my sa s nimi postupne oboznámime pomocou vzorových príkladov. Treba poznamenať, že existujú aj iné knižnice na prácu s LCD displejmi, ale tie nie sú také rozšírené. Nebývajú ani súčasťou vývojového prostredia Arduina, a tak ich treba stiahnuť z internetu a do prostredia doinštalovať. Ako sa knižnice do prostredia Arduina pridávajú, to ukážeme inokedy.

Program „Ahoj, Svet!"

Pamätáte sa ešte na jeden z našich prvých programov, kde sme pozdravovali svet pomocou monitora počítača, ku ktorému bolo Arduino pripojené? Aj teraz pozdravíme svet, ale priamo na LCD displeji Arduina.

Na výpise sa nachádza text jednoduchého programu:

#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
void setup()
{
lcd.begin(16, 2);
}
void loop()
{
lcd.setCursor(0,0);
lcd.print("Ahoj, Svet!");
lcd.setCursor(0,1);
lcd.print("Ako sa mas?");
}

Na prvom riadku je pre nás nový zápis #include <LiquidCrystal.h>. Ten značí, že k nášmu programu potrebujeme pripojiť (odborne povedané, prilinkovať) knižnicu, ktorá je definovaná v hlavičkovom súbore s názvom LiquidCrystal. Na čo slúžia hlavičkové súbory (poznáme ich podľa prípony .h), to vám vysvetlíme inokedy. Nateraz nám stačí vedomosť, že týmto príkazom voláme knižnicu s patričným menom. Knižnica obsahuje všetky dostupné funkcie na prácu s LCD displejom, a preto ich už nemusíme zložito vytvárať, stačí ich jednoducho používať.

V definičnej časti kódu programu sa nachádza príkaz LiquidCrystal. Táto funkcia deklaruje určitý objekt (programový objekt) s konkrétnym názvom, pod ktorým ho budeme ďalej volať v našom programe. V tomto prípade deklarujeme objekt s názvom Zároveň v tejto funkcii definujeme, na ktoré vývody (piny) Arduina je LCD displej pripojený.

Vývody sa definujú v tomto poradí: RS, EN, D4, D5, D6, D7. Je teda zrejmé, že táto funkcia používa zapojenie pinov podľa tabuľky č. 2 (v prípade, že sme použili už hotový LCD shield). Ale ako sme už spomenuli, nič nám nebráni použiť iné zapojenie a v tejto funkcii nadefinovať správne piny. Takže ak pripojíme LCD displej podľa schémy na obrázkoch č. 1 a 2, deklarácia objektu bude

LiquidCrystal lcd(12, 11, 5, 4, 3, 2)

V sekcii setup() sa nachádza iba jeden príkaz lcd.begin(16, 2). Metóda begin objektu lcd aktivuje displej a definuje, koľko má stĺpcov (znakov na riadok) a riadkov. V našom prípade máme dvojriadkový displej so 16 znakmi na riadok. (Keby sme mali pripojený iný displej, napríklad 4-riadkový s 20 znakmi na riadok, použili by sme príkaz lcd.begin(20, 4)). Len pre úplnosť, existujú ešte 2-riadkové displeje s 20 znakmi a jednoriadkové so 16 znakmi.

V slučke loop() príkaz lcd.SetCursor nastavuje pozíciu kurzora displeja. Pozícia sa čísluje od ľavého horného rohu displeja, a to tak, že prvý znak má poradové číslo 0 (nula) a prvý riadok takisto číslo 0 (nula). Zápis lcd.setCursor(0,0) teda nastaví kurzor na pozíciu prvého znaku prvého riadka (obdobne príkaz lcd.setCursor(0,1) nastaví kurzor na pozíciu prvého znaku druhého riadka. Príkaz lcd.print("Ahoj, Svet!") je nám povedomý - objekt lcd vypíše text Ahoj Svet! na nastavenom riadku. Ďalším príkazom setCursor presunieme kurzor na druhý riadok a posledným príkazom lcd.print vypíšeme text Ako sa mas?.

Program napíšeme, preložíme a nahráme do Arduina. Ak sme nikde neurobili žiadnu chybu, uvidíme na displeji príslušné texty.

Skúsme v programe zameniť posledný text bez diakritiky za text s diakritikou (napr. Ako sa máš?), skompilovať a nahrať do Arduina. Aké znaky uvidíme na LCD displeji? Znaky á a š sú akési nečitateľné. To preto, že pamäť LCD displeja neobsahuje naše slovenské znaky. Ale nebojte sa, my displej presvedčíme, aby písal pekne s mäkčeňmi a dĺžňami. Ale to až nabudúce.

 

Zobrazit Galériu

Nechajte si posielať prehľad najdôležitejších správ emailom

Mohlo by Vás zaujímať

Ako na to

Tipy a triky: Ako na snímku obrazovky na akomkoľvek počítači s Windows?

02.12.2016 00:13

Ak snímky obrazovky robíte často apotrebujete napríklad funkcie na posun stránok alebo snímanie zobrazenia pri vyššom rozlíšení displeja, zrejme používate nejakú špecializovanú aplikáciu. Väčšina použ ...

Ako na to 1

Tipy a triky: Ako aplikácii prednastaviť spúšťanie s administrátorskými právami?

30.11.2016 00:10

Väčšina aspoň trochu skúsenejších používateľov vie, že aj keď máte na operačnom systéme Windows vytvorený administrátorský účet, aplikácie pre bezpečnosť nefungujú vždy splnými administrátorskými práv ...

Ako na to 2

Tipy a triky: Ako vypnúť uzamykaciu obrazovku vo Windows 10?

29.11.2016 00:10

Rozčuľuje vás, že pred každým prihlásením doúčtu vášho počítača musíte prejsť uzamykacou obrazovkou? Windows 10 na tejto obrazovke ukazuje čas,dátum anejakú zaujímavú fotografiu zrôznych kútov sveta. ...

Žiadne komentáre

Vyhľadávanie

Kyocera - prve-zariadenia-formatu-a4-s-vykonom-a3

Najnovšie videá