Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in /home/itstreet/public_html/classes/CMySQL.php on line 22

Warning: mysqli_query() expects at least 2 parameters, 1 given in /home/itstreet/public_html/classes/CMySQL.php on line 24
ITstreet -1602 LCD i Arduino UNO
Preskoči na sadržaj

ITstreet postovi

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/-
Prva dva pina služe za napajanje ekrana sa 5V. V0 se preko potenciometra koristi za kontrast pozadinskog osvetljenja. RS od ploče dobija 0 ili 1. Ukoliko je 0, onda je ekran u Command modu a ako je 1 onda je u Data modu. RW pinovi takođe dobijaju samo 0 i 1, gde ako je 0 onda u procesu čitanja a ukoliko je 1 onda je u procesu pisanja. E pin je uvek na "HIGH" da bi se ostvario proces čitanja/pisanja. Pinovi od D0-D7 se koriste za prenos podataka do ekrana. Pinovi D0-D3 se koriste isključivo za 8-bitni transfer dok se pinovi D4-D7 koristi i za 4-bitni i za 8-bitni transfer. Poslednja dva pina se koriste za pozadinsko osvetljenje ekrana i takođe koriste 5V. Vrlo je važno znati koji pin čemu služi i tako ga povezati da ne bi došlo do oštećenja, kako ekrana, tako i Arduina.



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:


Ž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.

Ostavite poruku

Vaša mejl adresa neće biti objavljena.Označena polja su obavezna*