A példában 2x16 LCD kijelző szerepel. Háttérvilágítással rendelkezik. ROM-jában 208 karakter képét tárolja el. A Liquid Crystal könyvtárat használva könnyen programozható. Számokat, betűket, szimbólumokat is képes megjeleníteni.
Típusa: RC1602A
Adatlapján látható a lábak kiosztása, arra figyelj hogy nem sorban következnek!
A kijelző csatolófelülete (interface), amihez kapcsolódhatunk egy párhuzamos interfész - a 8 bit-nyi adatot minden órajelre egyszerre kell megadni (D0-D7 lábak). Szerencsére szöveges üzenetekhez 4 bites üzemmódot is választhatunk, ami szabadon hagy 4 Arduino csatornát más célokra. Az RS (register select) láb logikai alacsonyra vagy magasra állításával választhatjuk, meg, hogy az adatvonalak a kijelző mely memóriaterületére írjanak. Az írást az EN (enable) lábbal engedélyezhetjük. Az adaregiszter tárolja az ASCII kódolású bájtokat, amik karakterként kerülnek megjelenítésre, az instrukciós regiszterben pedig utasítások tárolódnak a meghajtó számára. Ezek az utasítások a kijelző törlésére, a kurzor mozgatására és egyéb funkciókra vonatkoznak. A regiszterek állapotát vissza is olvashatjuk - az RW láb állapotának változtatásával megfordítható a D0-D7 adatvonalak iránya. A kijelző kontrasztját analóg módon a tápfeszültség leosztásával Vo lábon tudjuk beállítani (vagy digitális potméterrel). A háttérvilágítást annak típusától függően a kontraszthoz hasonló módon kezelhetjük. Megfelelő illesztéssel LED-es háttérvilágítást az Arduino egy PWM képes kimenetére is köthetjük, így programozhatóvá válik a fényerő állítása is.
Bekötése Arduinoval:
Egy 10 KOhm-os potmétert is kössünk be, ezzel tudjuk majd a háttérvilágítás erejét állítani.
Kössük az LCD RS lábát (ami a 4. számú) az Arduino digitális 12-es csatornájára, az EN lábát pedig a digitális 11-re. Az LCD 4-es, 5-ös, 6-os, 7-es adatvonalait (11, 12, 13, 14 lábak) pedig rendre az Arduino digitális 5,4,3,2 csatornákra. A 10k ohm-os potméterrel készítsünk feszültségosztót az 5V-os tápvezetékről és kössük be a potméter közepét az LCD kontrasztját szabályozó Vo lábra (3. számú). Az LCD 5V-os tápfeszültségről működik (GND, Vcc). RW-t (5. számú) kössük a földre!
/////////
HELLO WORLD
#include <LiquidCrystal.h>
// lcd nevű kijelző példány lábainak megadása RS,EN,D4,D5,D6,D7
////sorrendben
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2); // állítsuk be az oszlopok és sorok számát
lcd.setCursor(0, 1); // első sor (0), első karakterére állítja a kurzort
lcd.print("hello, world!"); // a szöveg kiírása
}
void loop() {}
SZINTAXISOK:
- LiquidCrystal()
Létrehozza a kijelző egy példányát, ami 4 vagy 8 bites módban fog működni, attól függően, hogy a híváskor hány adatvonalat adunk meg.
Szintaxisa:
LiquidCrystal(RS, EN, D4, D5, D6, D7)
LiquidCrystal(RS, RW, EN, D4, D5, D6, D7)
LiquidCrystal(RS, EN, D0, D1, D2, D3, D4, D5, D6, D7)
LiquidCrystal(RS, RW, EN, D0, D1, D2, D3, D4, D5, D6, D7)
Paraméterei:
RS: Annak a digitális csatornának a száma amihez a REGISTER SELECT van kötve.
EN: Annak a digitális csatornának a száma amihez az ENABLE van kötve.
RW: Annak a digitális csatornának a száma amihez a READ/WRITE van kötve.
D0-D7: Azok a digitális csatornák amikhez az adatvonalak kapcsolódnak.
- begin()
A kijelző méreteit, sorok és oszlopok számát határozza meg a könyvtár számára.
Szintaxisa:
lcd.begin(cols, rows)
Paraméterei:
lcd: a LiquidCrystal példány neve
cols: a kijelző oszlopainak száma
rows: a kijelző sorainak száma
- clear()
Üresre törli az megjelenítendő karaktereket tartalmazó adatregisztert és a kijelzőt.
Szintaxisa:
lcd.clear()
Paramétere:
lcd: a LiquidCrystal példány neve
- home()
A kurzort az első sor első karakterére - kijelző bal felső sarkába – mozgatja.
Szintaxisa:
lcd.home()
Paramétere:
lcd: a LiquidCrystal példány neve
- setCursor()
A kurzort a megadott helyre mozgatja.
Szintaxisa:
lcd.setCursor(cols,rows)
Paraméterei:
lcd: a LiquidCrystal példány neve
cols: az oszlop ahová a kurzort mozgajtuk
rows: a sor ahová a kurzort mozgatjuk
- write()
Egy bájtot vagyis karaktert ír ki a kijelzőre.
Szintaxisa:
lcd.write(data)
Paraméterei:
lcd: a LiquidCrystal példány neve
data: a megjelenítendő karakter ASCII kódja
- print()
Szöveget jelenít meg a kijelzőn.
Szintaxisa:
lcd.print(data)
lcd.print(data, BASE)
Paraméterei:
lcd: a LiquidCrystal példány neve
data: char, byte, long, int, string – amit megjelenítünk
BASE: számrendszer alapja (opcionális) BIN, HEX, OCT, DEC
- cursor()
Hívását követően egy alulvonástként megjeleníti a kurzort.
- noCursor()
Hívását követően kikapcsolja a kurzor megjelenítését.
- blink()
Ha a kurzor látható, akkor bekapcsolja a villogtatását.
- noBlink()
Ha a kurzor látható, akkor kikapcsolja a villogtatását.
- noDisplay()
Kikapcsolja a kijelzőt.
- display()
Visszakapcsolja a kijelzőt, ha előtte a noDisplay() hívással ki volt kapcsolva és újra megjeleníti a szöveget ami a kikapcsolás pillanatában volt látható.
SZÖVEG GÖRGETÉSE
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2); // 16 karakter egy sorban
lcd.print("hello, world!"); // 13 karakterből álló szöveg
delay(1000);
}
void loop() {
// “letolja” a szöveget a kijelzőről balra
for (int positionCounter = 0; positionCounter < 13; positionCounter++) {
lcd.scrollDisplayLeft();
delay(150);
}
// 13 + 16 “letolja” a szöveget a kijelzőről jobbra
for (int positionCounter = 0; positionCounter < 29; positionCounter++) {
lcd.scrollDisplayRight();
delay(150);
}delay(1000);
}
- scrollDisplayLeft()
Hívásakor egy karakterrel eltolja a kijelző teljes tartalmát balra.
- scrollDisplayRight()
Hívásakor egy karakterrel eltolja a kijelző teljes tartalmát jobbra.
SZÖVEG AUTOMATIKUS GÖRGETÉSE
#include <LiquidCrystal.h>
// kijelző inicializálása
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// oszlopok és sorok megadása
lcd.begin(16,2);
}
void loop() {
// kurzor a kezdő állapotban (0,0) - home() ugyanezt teszi
lcd.setCursor(0, 0);// kiírja a számokat 0-tól 9-ig
for (int thisChar = 0; thisChar < 10; thisChar++) {
lcd.print(thisChar);
delay(500);
}
// kurzort a második sor végére állítja (16,1)
lcd.setCursor(16,1);
// bekapcsolja az automatikus eltolást
lcd.autoscroll();// újra kinyomtatja a számokat 0-tól 9-ig
for (int thisChar = 0; thisChar < 10; thisChar++) {
lcd.print(thisChar);
delay(500);
}
// kikapcsolja az automatikus eltolást
lcd.noAutoscroll();
// letörli a kijelzőt
lcd.clear();
}
- autoScroll()
Bekapcsolja a karakterek automatikus eltolását. Amikor egy új karaktert jelenítünk meg, a beállított iránynak megfelelően a már meglévő szöveget egy pozícióval elmozgatja.
- noAutoscroll()
Kikapcsolja a karakterek automatikus eltolását.
- leftToRight()
Az automatikus karakter eltolás irányának beállítása, balról jobbra.
- rightToLeft()
Az automatikus karakter eltolás irányának beállítása, jobbról balra.
KARAKTER KIRAJZOLÁSA
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
byte smiley[8] = {
B00000,
B10001,
B00000,
B00000,
B10001,
B01110,
B00000,};
void setup() {
lcd.createChar(1, smiley);
lcd.begin(16, 2);
lcd.write(1);
}
void loop() {}
- createChar()
Segítségével létrehozhatunk olyan karaktereket, amit nem tartalmaz a ROM. Ezeket az 5x8 pontból álló jeleket glyph-nek is szokás nevezni. A vezérlő 8 különféle glyph-et tud eltárolni a létrehozása után.
Szintaxisa:
lcd.createChar(num, data)
Paraméterei:
lcd: a LiquidCrystal példány neve
num: 0-7 a glyph száma, amelyik pozíción tárolni szeretnénk
data: a karakter pixeleit tartalmazó tömb
--------------------------------------------------------------------
--------------------------------------------------------------
Bővebben az LCD kijelzőkről itt: http://www.hobbielektronika.hu/cikkek/az_intelligens_lcd_modulok_hasznalata_-_i_resz.html