
IoT prakticky – snímanie analógových veličín a zobrazovanie na displeji
Veľa aplikácií pre Arduino potrebuje priebežne, alebo v prípade potreby zobrazovať informácie a možnosť zobrazovania sa hodí aj pri ladení aplikácie, napríklad na vypísanie informácií o aktuálnom stave, hodnotách premenných a podobne. Tento diel bude zameraný aj na snímanie hodnôt z analógových vstupov a tam sa možnosť výpisu aktuálnych hodnôt obzvlášť hodí.
Praktické ukážky k téme článku sú na videu
Pri ladení aplikácie môže doska Arduino generovať textový výstup cez sériové rozhranie, konkrétne cez USB, po tom istom kábli pomocou ktorého Arduino programujete. Ukážeme príklad najjednoduchšej sériovej komunikácie. Najskôr vypíšeme statický text.
Komunikáciu môžete monitorovať na vývojárskom počítači. V menu nástroje aktivujte položku Monitor sériového portu a môžete sledovať komunikáciu, prípadne aj posielať znaky. Takto môžete nechať vypísať aktuálne hodnoty z analógových vstupov.
Táto metóda je použiteľná len vo fáze vývoja. Často je však potrebné pomocou textového výpisu niečo oznámiť používateľovi. Na tento účel môžete použiť nejaký typ displeja.
![]() |
![]() |
Rôzne typy displejov vhodné pre Arduino (vľavo). Na jednoduché konštrukcie a ladenie je najvhodnejší dvojriadkový alfanumerický displej v cene okolo 7 eur (vpravo)
V úvodnej časti sme demonštrovali najjednoduchší spôsob dvojstavovej signalizácie rozsvietením a zhasnutím LED diódy a tiež možnosť komunikácie cez sériové rozhranie RS323. S dvojstavovou signalizáciou vystačíte málokedy, monitorovanie sériovej komunikácie je nepraktické, takže ideálny spôsob ako aplikácia niečo oznámi okoliu je zobraziť to na displeji. Pre začiatok je najlepším riešením viacriadkový LDC displej s možnosťou podsvietenia, takže displej je dobre čitateľný cez deň aj v tme. Sedem segmentové LED displeje sú viac efektné, než praktické.
LCD displeje
Rozdeľujú sa na grafické a znakové. Grafický displej umožňuje na kontinuálnej matici bodov zobraziť grafické obrazce a samozrejme aj text rôznym fontom. Znakové displeje sú v podstate tiež maticové, akurát matice pre každý znak sú oddelené. Znakové displeje umožňujú zobraziť rôzne dlhý text v jednom, alebo viacerých riadkoch. Displeje sú k dispozícii v konfigurácii 8x1, čiže 8 znakov v jednom riadku až po 40 x 4, čiže 4 riadky, pričom každý z nich môže mať 40 znakov. Programové ovládanie týchto displejov je pomerne jednoduché. Nastavíte kurzor na miesto kde chcete mať znak, alebo začiatok textu a pošlete znak, alebo text.
Alfanumerické displeje využívajú ako radič obvod Hitachi HD44780 a vývojové prostredie pre Arduino umožňuje prilinkovať knižnicu, ktorá podporuje všetky LCD displeje s týmto radičom. Radič má riadiaci a dátový register. V pamäti ROM má napevno uložené definície 208 znakov v matici 5 × 8 bodov a 32 znakov v matici 5 × 10 bodov. Zlou správou pre našinca je, že tam nie sú znaky so slovenskou diakritikou. Tie môžete v matici 5 × 8 bodov definovať do pamäte typu CGRAM. Obrazová pamäť RAM obsahuje aktuálne zobrazený text.
V príklade využijeme populárny maticový displej LCD 1602. Dešifrovať označenie je jednoduché – displej má dva riadky po 16 znakov. Cena sa pohybuje okolo 5 eur.Displeje s HD44780 majú 16 pinov, číslované sú zľava doprava:
![]() |
![]() |
Schéma zapojenia displeja LCD1602 pomocou ôsmych dátových bitov
Medzi vývody Vss, Vdd a Vo (piny 1, 2 a 3 displeja) sa odporúča zapojiť trimer, alebo potencioimeter na nastavenie kontrastu. Na vývody LED+ a LED- (piny 14 a 15) je potrebné pripojiť napájacie napätie a GND, aby fungovalo podsvietenie displeja.
Displej môžete k Arduinu pripojiť v 8-bitovom, alebo 4-bitovom móde. Pri 8-bitovom móde sú zapojené všetky dátové piny D0 -D8 a prenáša sa naraz všetkých 8 bitov. Nevýhodou je obsadenie viacerých portov na mikrokontrolérovej doske. Štvorbitový mód využíva iba štyri dátové vodiče D4 až D7 a osembitové dáta sa prenášajú na dva krát. Najskôr sa pošlú 4 horné bity a potom 4 dolné bity. Je to nepatrne pomalšie. No vzhľadom na malý objem prenášaných informácií to vo väčšine prípadov nevadí.
![]() |
![]() |
Porovnanie zložitosti pripojenia displeja LCD 1602 pomocou ôsmych dátových bitov a pomocou 4 vodičov cez zbernicu I2C
Dátové a riadiace piny displeja môžete pripojiť na ľubovoľný digitálny dátový vývod Arduina, samozrejme to musíte deklarovať pri inicializácii softvérovej knižnice. Najčastejšie sa displej pripája výstupy na D2 až D12. Populárna knižnica LiQuidCrystal je súčasťou vývojového prostredia. Stačí ju k vášmu kódu prilinkovať príkazom #include
Kód na zobrazenie dvojriadkového textu je veľmi jednoduchý:
Zapojenie pinov pri inicializácii sa pre 8-bitové zapojenie definuje v poradí RS, EN, D0, D1, D2, D3, D4, D5, D6, D7. Pri 4-bitovom zapojení sa piny definujú v poradí: RS, EN, D4, D5, D6, D7.
Metóda lcd.begin(16, 2) objektu lcd inicializuje displej. Parametre udávajú počet znakov na riadok a počet riadkov. V našom jednoduchom príklade, ktorý zobrazuje statický text, je celý kód v metóde Setup. V reálnej aplikácie sa v slučke loop() príkazom lcd.SetCursor() nastavuje pozícia kurzora na displeji. Pozícia 0,0 je v ľavom hornom rohu displeja. Príkaz lcd.print("text") vypíše textový reťazec na pozíciu kurzora.
![]() |
![]() |
Zapojenie fotočlenu na analógový vstup A0. Vpravo je príklad obvodu na testovanie spínača osvetlenia
Príklad kódu na výpis hodnoty načítanej z analógového vstupu A0
Ak je pre konkrétnu konštrukciu veľa aj 6 pinov pri 4-bitovom zapojení, môžete displej pripojiť cez sériovú zbernicu I2C. Nepotrebujete špeciálny displej, k dispozícii sú dosky, ktoré sa nasadia na 16 pinový konektor displeja a pripojiť pomocou dvoch dátových pinov (SDA a SCL) + dvoch pinov na napájanie. Cena takéhoto modulu je 2 eurá.
![]() |
![]() |
Modul k displeju LCD 1602 na pripojenie cez I2C. Niektoré typy displejov majú tento model priamo integrovaný.
Z webu https://www.arduinolibraries.info/libraries/liquid-crystal-i2-c si stiahnete knižnicu LiquidCrystal_I2C a uložíte ju do adresára libraries. Kód na zobrazovanie je aj v tomto zapojení veľmi jednoduchý. Na vstupe A0 je v tomto prípade pripojený fotoodpor.
Je pravdepodobné, že vám tento kód nebude fungovať, pretože každé zariadenie pripojené cez I2C má špecifickú adresu. Tú zadávate do konfiguračného príkazu v treťom riadku LiquidCrystal_I2C lcd(0x3F,16,2); Zistíte ju pomocou kódu, ktorý si môžete skopírovať na stránke http://playground.arduino.cc/Main/I2cScanner. Uvádzame kompletný výpis. V našom prípade mal displej adresu 3F hexadecimálne.
Doplnenie displeja je pre väčšinu amatérskych konštrukcií veľkou pridanou hodnotou. Samozrejme pri napájaní z batérie treba zvážiť energetické hľadisko a vybrať LCD displej, na ktorom sú údaje viditeľné aj bez podsvietenia.
![]() |
![]() |
V budúcom pokračovaní sa budeme venovať možnostiam spínania pomocou digitálnych vstupov. Pre domácu automatizáciu na spínanie výkonnejších spotrebičov, napríklad čerpadiel, či vykurovacích telies budete potrebovať aj stýkače.
Zobrazit Galériu