LCD 2×16 cu Arduino

Desi au devenit accesibile ca pret dispozitive mult mai performante de afisare, afisajele cu cristale lichide raman destul de interesante si utile pentru electronistii amatori.

In randurile urmatoare voi prezenta pas cu pas modul de conectare a unui LCD 2×16 la Arduino, avand ca scop folosirea librariei LiquidCrystal (care vine cu Arduino IDE) fara nicio modificare sau configurare software.

Avem nevoie de:

  • Arduino – eu folosesc aici o varianta produsa de DFRobot, cu ATmega328
  • un rezistor semireglabil de 10K
  • un mini-breadboard
  • un LCD 2×16 (compatibil HD44780)
  • mai multe fire electrice cu pini (“jumper wires”)

Arduino LCD - Componente
De la stanga la dreapta privind spre display, pinii sunt urmatorii:
Afisaj LCD HD44780 Pinout
Schema de conectare este urmatoarea:
Schema Arduino LCD

(sursa: http://arduino.cc/en/uploads/Tutorial/lcd_schem.png)

Pentru inceput, fixam rezistorul semireglabil undeva pe breadboard:
Arduino LCD 2x16 - Semireglabil
Conectam pinul 5V si GND de la Arduino la breadboard (firul rosu este 5V, iar cel negru de pe exterior masa) si apoi conectam +5V la pinul 15 al LCD-ului (firul alb) si GND la pinul 16 (firul negru). Atentie! La unele ecrane pinii Bklt+ si Bklt- (backlight) sunt inversati, verificati documentatia sau marcajele. In acest moment, daca Arduino este alimentat, LCD-ul ar trebui sa se aprinda.
Arduino LCD - Alimentare VCC, GND
In continuare realizam urmatoarele conexiuni:

  1. GND la pinul 1 al LCD-ului
  2. +5V la pinul 2 al LCD-ului
  3. GND la unul dintre pinii exteriori ai rezistorului semireglabil (nu are importanta care)
  4. +5V la celalalt pin exterior al rezistorului
  5. pinul central al rezistorului la pinul 3 al LCD-ului (firul albastru)

Acum ar trebui sa devina vizibil primul rand de caractere al LCD-ului.
Atmega LCD - Contrast
Din semireglabil se poate ajusta contrastul.
Arduino LCD - Test
Ar trebui ca primul rand de caractere sa fie bine definit. Daca nu obtineti ceva similar, nu mergeti mai departe. Verificati din nou toate conexiunile si ajustati din semireglabil.
Arduino LCD - Test
Pinul RS “spune” afisajului daca informatia primita pe pinii de date (D0-D7) trebuie afisata sau daca este vorba de o comanda (de exemplu mutarea cursorului). Vom conecta pinul RS (4) al LCD-ului la pinul D12 de pe Arduino.
Arduino LCD - RS
Pinul RW (5) spune display-ului daca microcontrolerul vrea sa scrie in LCD (de exemplu sa afiseze date sau sa dea comenzi de mutare a cusorului) sau sa citeasca date din LCD (situatie mai putin comuna). Libraria LiquidCrystal nu citeste date din LCD ci numai transmite date catre acesta, prin urmare acest pin poate fi legat la masa, ca in imaginea urmatoare (firul negru).
Arduino LCD - RW
Pinul E (enable) informeaza LCD-ul ca datele transmise de microcontroler sunt gata pentru a fi citite si va fi legat la pinul D11 de pe Arduino (firul alb):
Arduino LCD - Enable Pin
Pentru a transmite date afisajelor de tip HD44780 se pot folosi 8 pini (D0-D7) sau numai 4 pini (D4-D7). Libraria LiquidCrystal foloseste al doilea mod de comunicatie, cu numai 4 pini, prin urmare vom conecta pinii D4-D7 ai LCD-ului la pinii D5-D2 de pe Arduino, ceilalti fiind lasati neconectati, astfel (firele verzi):

  • LCD D4 (11) — Arduino D5
  • LCD D5 (12) — Arduino D4
  • LCD D6 (13) — Arduino D3
  • LCD D7 (14) — Arduino D2

Arduino LCD - Hello World
Cu aceasta am incheiat conectarea. Deschideti IDE-ul Arduino, mergeti la Examples -> LiquidCrystal -> HelloWorld si uploadati sketch-ul respectiv. Daca totul a mers bine, veti obtine ceva similar cu imaginea de mai sus. Succes!

Aveti mai jos si un clip care prezinta aproape toate exemplele care vin cu libraria LiquidCrystal (Autoscroll, Blink, Cursor, Display, HelloWorld, Scroll, SetCursor, SetDirection).

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>