1602 LCD i Arduino UNO
Nekako mi je u startu najzanimljiviji bio rad sa displejom. Senzori i
moduli su ok, ali na kraju opet dolazimo do toga da dobijene vrednosti
treba negde da prikažemo. U pomenutom starter kitu u prethodnom članku
sam rekao da se dobija i 1602 LCD pa ću reći koju reč o njemu.
LCD
koji se dobija je jedan od najzastupljenijih u Arduino svetu. Iz naziva
vidimo da ekran ima 16 kolona u 2 reda. Postoje i ekrani 8x1, 8x2,
10x2, 16x1 i meni najzanimljiviji 20x4 o kome će biti reči nekom drugom
prilikom. Ovaj ekran koristi Hitačijev HD44780 kontroler a kompletan
datasheet možete pročitati ovde.
Ekran
je dakle sposoban da ispiše dva puta po šesnaest karaktera, što će reći
32 karaktera. Svaki karakter se ispisuje u polju od 5x8 piksela.
Množenjem 32 grupe od po 40 piksela dobijamo 1280 piksela, kojim se, uz
malo dublje programiranje može napisati i/ili izcrtati mnogo toga. Za
sada ćemo se pozabaviti osnovnim povezivanjem sa Arduinom i ispisivanjem
običnog teksta.
Ekran
može doći u više varijanti: bez zalemljenih pinova, sa zalemljenim
pinovima i sa zalemljenim IIC/I2C serijskim interfejsom. Ovaj treći se
povezuje drugačije i o njemu će isto biti reči neki drugi put. Prva dva
su ona o kojima ću pisati. Bez obzira da li došao sa zalemljenim
pinovima ili ne, postupak povezivanja je isti. Jedino što u prvom
slučaju treba da radi lemilica. A kad smo kod pinova, da kažemo čemu
koji služi:
- VSS - ground/-
- VDD - source/+
- V0 - kontrast osvetljenja
- RS - Register Select
- RW - Read/Write
- E - enable
- D0
- D1
- D2
- D3
- D4
- D5
- D6
- D7
- A - source/+
- K - ground/-
Za početak ćemo ispisati običan tekst na ekranu, a da bi to uradili potrebne su nam komponente, potrebno je da ih ispravno povežemo i na kraju potrebno je da napišemo neophodan skeč. Za ovaj "recept" nam trebaju:
- Arduino UNO (može i neki drugi)
- LCD 1602
- Breadboard
- muško/muške Dupont žice
- 1 otpornik od 220 oma
- 1 potenciometar 10 kilooma
- Arduino IDE softver
Žice povezujemo prema Fritzing skici a boje naravno nisu bitne. U mom slučaju povezivanje je sledeće:
- siva žica ide sa VSS na minus na breadboard ploči
- oranž ide sa VDD na plus
- bela ide sa VEE na srednju nožicu potenciometra
- zelena ide sa RSS na pin broj 12 Arduina
- crvena ide sa RW na minus na breadboard
- plava ide sa E na pin broj 11 Arduina
- pinove od D0-D3 ovaj put ne koristimo
- siva ide od D4 do pina broj 5 Arduina
- crvena ide od D5 do pina broj 4 Arduina
- oranž ide od D6 do pina broj 3 Arduina
- žuta ide od D7 do pina broj 2 Arduina
- plava ide sa A do jednog kraja otpornika od 220 oma gde se drugi kraj otpornika ubada u plus na breadboard ploči
- braon ide sa K na minus breadboard ploče
- žuta ide sa leve nožice potenciometra na minus
- zelena ide sa desne nožice na plus
- siva ide sa minus linije breadborda na GND Arduina
- ljubičasta ide sa plus linije na 5V Arduina.
Kao što vidite, povezivanje je školsko. D pinovi ekrana koje koristimo su oni koji podržavaju 4-bitni i 8-bitni prenos podataka iako možemo povezati ih sve i tako zauzeti sve pinove na Arduinu. Otpornik je tu da ograniči napon ka LED pozadinskom osvetljenju. Recimo ako koristimo 9V bateriju kao izvor napajanja, bez otpornika ćemo je mnogo brže potrošiti, a da ne pominjemo eventualno oštećenje pozadinskog osvetljenja. Potenciometar je tu da bi se podesio neophodan kontrast. U principu se može i bez njega uz neophodna merenja otpornosti i kalkulacije potrebnog otpornika, što gubi smisao.
Dalje je na redu skeč. Preko Arduino IDE softvera programiramo skeč koji prebacujemo na UNO.
--------------------------------------------------------
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// put your setup code here, to run once:
lcd.begin(16, 2);
lcd.print ("ITstreet");
lcd.setCursor (0, 1);
lcd.print ("www.itstreet.org");
}
void loop() {
// put your main code here, to run repeatedly:
}
-------------------------------------------------------
Prvo "inkludujemo" biblioteku neophodnu da bi UNO imao pojma šta da radi sa ekranom. Zatim govorimo koje pinove sa Arduina će ekran koristiti za prenos podataka. Mi smo upotrebili pinove 12, 11, 5, 4, 3 i 2. U void setup funkciji dodajemo sledeće linije:
-prva je odakle će ekran početi da ispisuje tekst
-druga je šta ispisuje
-treća spusta kursor na red ispod
-i četvrta ispisuje drugi deo teksta
Void loop funkcija nam za sada nije neophodna. Ona se može upotrebiti i u ovom slučaju, ali u principu se koristi za programiranje radnje koja se ponavlja. Recimo ako smo hteli da nam tekst blinka ili da se skroluje.
Na redu je upload skeča na UNO. Podrazumeva se da su UNO i ekran propisno povezani i da je UNO povezan sa računarom. Ukoliko je UNO CH340G potrebno je instalirati drajvere. Zatim biramo ploču. Idemo na tools->board->Arduino/Genuino Uno. Dalje biramo PORT: tools->PORT->i tu biramo port. Ako ne znamo koji je port zauzeo UNO, idemo na device manager i tu možemo videti koji je port u pitanju. Na redu je opcja verfy gde će IDE proveriti kod i ukazati nam na eventualne greške i na kraju upload. Ukoliko je sve povezano kako treba i skeč ispravno napisan i uploadovan na UNO, tebalo bi da nakon par terptaja LED na njemu ekran ispiše tekst. Ako ne, onda "double check" sve.
Uz dodavanje par linija koda možemo menjati ispis na ekranu, postaviti da nam tekst blinka, da skroluje, dodeliti zadršku u milisekundama... Za sada toliko, do sledećeg skeča.