Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

6. diel - Arduino - LCD Display

V dnešnom tutoriále o Arduino sa zameriame na LCD displej. Viem, že som v minulom diele sľuboval meranie vzdialenosti, ale chcel som jej pritom zobrazovať lepšie ako posielaním na sériovú linku, takže si teraz preberieme LCD a vzdialenosť bude (snáď) v budúcom diele.

LCD display, čiže display z tekutých kryštálov, je zobrazovacie zariadenie s nízkou spotrebou a preto sa hodí do zariadenia na batérie alebo k Arduino. Takže si nejaký zoženieme, len budeme dbať na to, aby mal radič HD44780 alebo aspoň kompatibilné, pretože inak nám to fungovať nebude. Piny sú u väčšiny displayov rovnaké, je ale lepšie sa pre istotu pozrieť do datasheete k danému modelu. Vo väčšine prípadov sú však už piny opísané, takže sa zaobídeme bez neho, a v prípade iného poradí na to budeme dbať.

Display má celkom 16 pinov, nám ale bude teraz stačiť len 12. Displaye sa často predávajú bez "nožičiek" a budeme ich musieť prirobiť. Mne bohato postačili kúsky nastrihaného drôtiku, ktoré bude potrebné do dierok připájet. Takže na chvíľu vezmeme do ruky spájku a ideme spájkovať, alebo si zoženieme nejaký, ktorý už nožičky má, ale to bude ťažšie.

Zapojenie pinov

Zapojenie pinov je pomerne jednoduché:

  • 1 VSS - Pripojíme jednoducho na zem
  • 2 VDD - Vstup 5V
  • 3 V0 - Kontrast. Niekedy lepšie na zem, niekedy 5V. U mňa bolo oboje zlé, takže som pripojil potenciometer a nastavil si kontrast aký chcem.
  • 4 RS - Pripojíme k Arduino a v kóde potom zvolíme pin
  • 5 RW - Zem
  • 6 E (Enable) - Arduino
  • 7-10 - D0-D3 - Dátové piny, ktoré používať nebudeme
  • 11-14 - D4-D7 - Ďalšie dátové piny, ktoré pripojíme k Arduino
  • 15 - A - Anóda podsvietenie, + 5V
  • 16 - K - Katóda podsvietenie, zem

To by boli piny. Aby sme mali čo zobrazovať, tak si pripojíme nám už známe DHT11 zo 4. dielu.

Schéma pre zapojenie display a snímače DHT11 - Arduino

Nejako to zostavíme dohromady podľa schémy a presunieme sa rovno k písania kódu.

#include <dht11.h>
#include <LiquidCrystal.h>


int rs_pin = 2;
int e_pin = 3;
int d4_pin = 4;
int d5_pin = 5;
int d6_pin = 6;
int d7_pin = 7;



LiquidCrystal LCD(rs_pin, e_pin, d4_pin, d5_pin, d6_pin, d7_pin);


dht11 cidlo;
int dht11pin = 12;

void setup()
{
  LCD.begin(16,2);
  LCD.setCursor(0,0);
  LCD.print("itnetwork.cz");
  LCD.setCursor(0,1);
  LCD.print("teplota: ");
}

void loop()
{
  cidlo.read(dht11pin);
  LCD.setCursor(9,1);
  LCD.print("    ");
  LCD.setCursor(9,1);
  LCD.print(cidlo.temperature);
  LCD.setCursor(13,1);
  LCD.print((char)223);
  LCD.print("C");
  delay(500);
}

A teraz k vysvetľovanie:

#include <dht11.h>
#include <LiquidCrystal.h>

Importujete si knižnice k dht11 a LCD. LiquidCrystal.h by malo byť už v základoch, takže nebude potrebné nič sťahovať.

int rs_pin = 2;
int e_pin = 3;
int d4_pin = 4;
int d5_pin = 5;
int d6_pin = 6;
int d7_pin = 7;

Pre pripojené LCD použijeme piny RS, E, D4-D7. Ostatné pôjdu na zem / napájanie (poprípade potenciometer). Okrem dátových pinov D4-D7 sa tu logicky nachádza aj D0-D3, ktoré ale potrebovať nebudeme.

LiquidCrystal LCD(rs_pin, e_pin, d4_pin, d5_pin, d6_pin, d7_pin);

Funkcia LiquidCrystal vytvorí objekt LCD display, v našom prípade s názvom LCD. Ako parametre berie oných 6 pinov. Nemusíme ich dávať do týchto premenných, stačí len napísať čísla, ale je dôležité dodržiavať poradie RS, E, D4, D5, D6, D7.

dht11 cidlo;
int dht11pin = 12;

Túto časť snáď ani vysvetľovať nemusím, pretože pripojiť DHT11 vieme už zo 4. dielu.

LCD.begin(16,2);

Spustí display s 16 znakmi a 2 riadky. Ak máte iný, upravte podľa seba. Tento begin je trochu iný. Display sa na začiatku spustenie musí inicializovať. Schválne skúste po vypísaní texte odpojiť všetku zem a vstupných 5V do displaya a potom opätovne zapojte. Výsledkom bude buď akýsi patvary znakov alebo len samé obdĺžničky. Potom na Arduino stlačte reset a display bude zas fungovať normálne. Ak budete mať projekt, v ktorom sa display počas behu programu môže odpojiť nejakým prerušením kontaktu, odporúčam pridať begin na začiatok Loop. Majte však na pamäti, že tým dôjde k zmazaniu celého textu na display, takže v našom prípade by sa nám zobrazovalo len 22 ° C bez nápisov itnetwork.cz a teplota, ktoré máme v setupu.

LCD.setCursor(0,0);

Nastaví kurzor na prvý znak, prvý riadok - začína sa od nuly. Tento riadok je úplne zbytočný, pretože na túto pozíciu sa kurzor nastaví ihneď po spustení displaya.

LCD.print("itnetwork.cz");
LCD.setCursor(0,1);
LCD.print("teplota: ");

Funkcia print napíše na display text. Potom si posunieme kurzor na druhý riadok a napíšeme ďalší text.

cidlo.read(dht11pin);

Prečítame hodnotu z DHT11.

LCD.setCursor(9,1);

Nastavíme kurzor za nápis teplota

LCD.print("    ");

Pre istotu smažemr predchádzajúce hodnotu, keby náhodou ubudlo jedno číslo, tak to posledné zostane za aktuálnym a neprepíše sa. Je síce veľmi nepravdepodobné, že dostaneme 3-miestnu teplotu, ale ak budeme napr. Čítať hodnotu z analógového pinu, tak je toto nutné.

LCD.setCursor(9,1);

Vráti kurzor za nápis teplota.

LCD.print(cidlo.temperature);

Vypíše teplotu z čidla. Ako vidíte, možno tiež vypisovať rovno hodnoty, ktoré nám vracajú funkcie bez nutnosti ukladania do meziproměnných.

LCD.setCursor(13,1);
LCD.print((char)223);
LCD.print("C");

Teraz nastavíme kurzor za nápis a napíšeme najskôr znak stupňov. Napísať ho len tak do úvodzoviek nemusí fungovať, preto napíšeme (char) 223, čo vyústi k vypísanie znaku s ASCI hodnotou 223, čo je práve značka stupňov. Potom len napíšeme C a je hotovo. Táto časť textu sa nemení, teda by sme jej mohli napísať rovno v setupu, ale nie je to nutnosť.

delay(500);

A nakoniec chvíľu počkáme.

Kód nahráme a v prvom rade sa pozrieme, ako sme na tom s kontrastom. Ak je display nečitateľný, skúste prepojiť z 5V na GND (alebo naopak), prípadne pripojte potenciometer a pohrajte sa s ním, pokiaľ nebude text krásne čitateľný. Tiež nezabudnite na podsvietenie, bez neho nebude nič vidieť. Keď niečo nebude fungovať, skontrolujte či máte správne napojené piny. Na stiahnutie je k dispozícii okomentovaný zdrojový kód.

Arduino s LCD displayom - Arduino

Takto to bude vyzerať

To by bolo pre dnešné diel všetko, nabudúce už snáď bude ono sľubované meranie vzdialenosti, takže si začnite zháňať Ultrasonický modul HC-SR04 :)


 

Predchádzajúci článok
Arduino - Klávesnica
Všetky články v sekcii
Arduino
Preskočiť článok
(neodporúčame)
Arduino - Vzdialenosť s ultrasonickým modulom HC-SR04
Článok pre vás napísal Adam Ježek
Avatar
Užívateľské hodnotenie:
3 hlasov
Autor se převážně věnuje Arduinu a psaní tutoriálů z této oblasti, občas napíše příležitostně nějakou tu zprávičku. Většinu svého volného času momentálně věnuje Linuxu a/nebo Raspberry Pi. Také umí C#, HTML, CSS, PHP a Python.
Aktivity