SlideShare a Scribd company logo
1 of 15
Download to read offline
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Textul si imaginile din acest document sunt licentiate
Attribution-NonCommercial-NoDerivs
CC BY-NC-ND
Codul sursa din acest document este licentiat
Public-Domain
Esti liber sa distribui acest document prin orice mijloace consideri (email, publicare pe website /
blog, printare, sau orice alt mijloc), atat timp cat nu aduci nici un fel de modificari acestuia. Codul
sursa din acest document poate fi utilizat in orice fel de scop, de natura comerciala sau nu, fara
nici un fel de limitari.
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
LCD 16 X 2, LCD 16 X 4, LCD 20 X 4
Toate aceste LCD-uri se interfateaza cu Arduino exact la fel. Singura
diferenta este dimensiunea lor. Astfel, LCD-ul 16 X 2 permite 16 coloane si
doua linii de caractere (adica in total 32 de caractere), LCD-ul 16X4 permite 4
linii (64 de caractere in total), iar cel de 20X4 permite 80 de caractere afisate.
Ca sa-l folosesti cu Arduino, ai nevoie de fire de conectare si de un
potentiometru de 10K pentru reglarea contrastului (nu merge fara el). Schema
de conectare este cea de mai jos (nu este simpla).
Daca esti la primele tale teste cu Arduino, din pacate s-ar putea sa
gasesti conectarea LCD-ului o experienta frustranta. Sunt destul de multe fire
de conectat, si daca gresesti unul singur nu-ti va functiona. Iti recomand sa faci
montajul incet si sa verifici de cateva ori fiecare conexiune. Daca ai ajuns la
final, vei avea atat de multe fire incat iti va fi dificil sa vezi care fir duce unde.
Verifica cu atentie pe parcurs ca sa fii sigur ca fiecare fir duce acolo unde
trebuie.
Daca totusi nu ti-a iesit si vrei sa incerci ceva mai simplu, iti recomand
shield-ul cu LCD 2X16 (http://www.robofun.ro/bricks/shield-lcd-16x2) care nu
face altceva decat sa-ti ascunda conexiunile complicate.
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Arduino 5 V Pin1 Potentiometru
Arduino GND Pin3 Potentiometru
Pin2 Potentiometru VO (PIN3) LCD
Arduino GND GND (PIN1) LCD
Arduino GND RW (PIN5) LCD
Arduino 5 V VCC (PIN2) LCD
Arduino Digital 12 RS (PIN4) LCD
Arduino Digital 11 E (PIN6) LCD
Arduino Digital 5 D4 (PIN11) LCD
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Arduino Digital 4 D5 (PIN12) LCD
Arduino Digital 3 D6 (PIN13) LCD
Arduino Digital 2 D7 (PIN14) LCD
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
lcd.print("hello, world!");
}
void loop() {
lcd.setCursor(0, 1);
lcd.print(millis()/1000);
}
Codul sursa de mai sus utilizeaza libraria LiquidCrystal (inclusa in mod
standard in mediul de dezvoltare Arduino). Singura modificare pe care va trebui
sa o faci cand folosesti un alt tip de LCD este sa schimbi parametrii din rutina
de initializare. Astfel, pentru un LCD 20X4, linia 3 se schimba la "lcd.begin(20,
4)".
Alte rutine interesante ale librariei LiquidCrystal sunt mai jos :
• clear() - curata ecranul complet. Se apeleaza fara parametri – "lcd.clear()"
• home() - muta cursorul in partea din stanga, sus. Se apeleaza fara parametri
– "lcd.home()"
• setCursor() - muta cursorul la pozitia specificata. Textul care urmeaza a fi
scris este scris la pozitia specificata de aceasta metoda. Astfel, pentru a scrie
text pe linia 2, coloana 4, vom apela "lcd.setCursor(1,3); lcd.print("TEXT");"
• noDisplay() - opreste LCD-ul, fara a pierde textul afisat. Se apeleaza fara
parametri – "lcd.noDisplay()"
• display() - porneste LCD-ul dupa ce a fost oprit folosind "noDisplay". Se
apeleaza fara parametri – "lcd.display()"
• scrollDisplayLeft() - deplaseaza textul afisat pe LCD cu un caracter spre
stanga. Se apeleaza fara parametri – "lcd.scrollDisplayLeft()"
• scrollDisplayRight() - deplaseaza textul afisat pe LCD cu un caracter spre
dreapta. Se apeleaza fara parametri – "lcd.scrollDisplayRight()"
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
LCD 16 X 2 pe I2C, LCD 20 X 4 pe I2C
Ambele LCD-uri sunt LCD-urile obisnuite despre care am discutat mai sus,
carora li s-a atasat o placa suplimentara care comunica pe I2C cu Arduino si
seteaza cei 8 pini pentru controlul LCD-ului la valorile care trebuie astfel incat
pe LCD sa fie afisat text-ul care trebuie. In acest fel, intre Arduino si LCD sunt
necesare doar doua fire (SDA si SCL), in afara firului de GND si alimentare.
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Conexiunile la Arduino sunt ca in cele doua imagini de mai jos. Ultimii doi
pini din mufa lipita pe placa LCD-ului nu se folosesc. In rest, de la stanga la
dreapta, avem SDA (se conecteaza la pinul analogic 4 pe Arduino UNO sau la
pinul SDA pe Arduino Leonardo), SCL (se conecteaza la pinul analogic 5 pe
Arduino UNO sau la pinul SCL pe Arduino Leonardo), 5V (se conecteaza la pinul
5V pe Arduino, si pinul GND (se conecteaza la pinul GND).
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Arduino UNO
Arduino 5 V LCD 5V
Arduino GND LCD GND
Arduino Analog 4 LCD SDA
Arduino Analog 5 LCD SCL
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Arduino Leonardo
Arduino 5 V LCD 5V
Arduino GND LCD GND
Arduino SDA LCD SDA
Arduino SCL LCD SCL
Urmatorul pas este actualizarea librariei LCD, astfel incat sa suporte si
comunicarea I2C.
Mergi la adresa http://www.robofun.ro/lcd_20x4_i2c_negru_verde si
descarca libraria din acea pagina. Este bine sa o incerci prima data pe cea de
pe GITHUB, care este intotdeauna la zi. Dupa ce ai descarcat-o, inchide mediul
Arduino si deschide folder-ul "libraries" din folder-ul in care este instalat mediul
Arduino. Folder-ul "libraries" ar trebui sa arate similar cu imaginea de mai jos.
Deschide si folder-ul "LiquidCrystal" ca sa vezi ce fisiere sunt in interior.
Ar trebui sa vezi ceva similar cu ce este mai jos.
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Sterge apoi tot ceea ce este in acest folder si inlocuieste cu fisierele
descarcate anterior. Ar trebui sa fie similar cu imaginea de mai jos.
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Porneste acum mediul de dezvoltare Arduino si incearca programul de
mai jos.
#include "Wire.h"
#include "LiquidCrystal.h"
LiquidCrystal lcd(0);
void setup() {
lcd.begin(20, 4);
lcd.setBacklight(HIGH);
lcd.print("hello, world 0 !");
lcd.setCursor(0, 1);
lcd.print("hello, world 1 !");
lcd.setCursor(0, 2);
lcd.print("hello, world 2 !");
lcd.setCursor(0, 3);
lcd.print("hello, world 3 !");
}
void loop() {
}
Daca LCD-ul tau nu arata ca mai sus, pe spatele placutei rosii vei gasi un
potentiometru de culoare albastra. Acest potentiometru stabileste contrastul
LCD-ului, si probabil ca s-a miscat in timpul transportului. Folosind o surubelnita
mica, un varf de cutit ascutit, foarfeca sau pila de unghii, roteste-l usor si
urmareste in acelasi timp textul pe LCD pana cand devine foarte clar.
Si partea frumoasa abia acum vine ! Cu acest tip de LCD, poti conecta
simultan pana la opt LCD-uri la acelasi Arduino, folosind aceeasi doi pini I2C.
Pentru aceasta, intoarce LCD-ul pe spate, si observa cei 3 jumperi pentru
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
setarea adresei I2C. In mod obisnuit, nici unul dintre acesti jumperi nu este
lipit, asa ca adresa shield-ului este zero (lucru pe care il vezi in cod la linia
LiquidCrystal lcd(0)). Fiecare LCD va trebuie sa aiba o adresa I2C diferita, asa
ca ceea ce ai de facut este sa folosesti un letcon si putin fludor pentru a
conecta unul sau mai multi jumperi impreuna. Adresele sunt in cod binar, astfel
ca folosind cei trei jumperi poti obtine exact opt adrese. Pentru a conecta un
jumper, incalzeste ambele pad-uri, apoi adauga fludor si intinde fludorul astfel
incat sa faca contact intre ambele pad-uri, ca mai jos.
Pentru a conecta mai multe LCD-uri la acelasi Arduino, tot ce ai de facut
este conectezi toti pinii de SDA impreuna de la toate LCD-urile, toti pinii SCL
impreuna, si la fel si GND si 5V. In prealabil, ai grija sa setezi adrese I2C diferite
lipind cei trei jumperi de adresa in configuratii diferite. Apoi, in cod definesti
mai multe obiecte de tip LCD, ca mai jos.
#include "Wire.h"
#include "LiquidCrystal.h"
LiquidCrystal lcd1(0);
LiquidCrystalc lcd2(1);
LiquidCrystal lcd3(2);
void setup() {
lcd1.begin(20, 4);
lcd2.begin(20, 4);
lcd.3begin(20, 4);
lcd1.setBacklight(HIGH);
lcd1.print("LCD1, hello, world 0 !");
lcd1.setCursor(0, 1);
lcd1.print("LCD1, hello, world 1 !");
lcd1.setCursor(0, 2);
lcd1.print("LCD1, hello, world 2 !");
lcd1.setCursor(0, 3);
lcd1.print("LCD1, hello, world 3 !");
lcd2.setBacklight(HIGH);
lcd2.print("LCD2, hello, world 0 !");
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
lcd2.setCursor(0, 1);
lcd2.print("LCD2, hello, world 1 !");
lcd2.setCursor(0, 2);
lcd2.print("LCD2, hello, world 2 !");
lcd2.setCursor(0, 3);
lcd2.print("LCD2, hello, world 3 !");
lcd3.setBacklight(HIGH);
lcd3.print("LCD3, hello, world 0 !");
lcd3.setCursor(0, 1);
lcd3.print("LCD3, hello, world 1 !");
lcd3.setCursor(0, 2);
lcd3.print("LCD3, hello, world 2 !");
lcd3.setCursor(0, 3);
lcd3.print("LCD3, hello, world 3 !");
}
void loop() {
}
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Aceasta a fost lectia 10. In final, as vrea sa te rog sa ne oferi feedback
asupra acestei lectii, pentru a ne permite sa le facem mai bune pe
urmatoarele.
Este vorba despre un sondaj cu 4 intrebari (oricare este optionala), pe
care il poti accesa dand click aici.
Sau ne poti contacta direct prin email la contact@robofun.ro .
Iti multumim,
Echipa Robofun.RO
http://www.robofun.ro/forum

More Related Content

What's hot

Curs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosfericiCurs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosfericiIulius Bors
 
Curs gratuitarduino lectia6-senzoriforta
Curs gratuitarduino lectia6-senzorifortaCurs gratuitarduino lectia6-senzoriforta
Curs gratuitarduino lectia6-senzorifortaIulius Bors
 
Motoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriverMotoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriverIulius Bors
 
Curs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistantaCurs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistantaIulius Bors
 
Arduino comparatorul intern
Arduino comparatorul internArduino comparatorul intern
Arduino comparatorul internIulius Bors
 
Arduino comunicatie i2c
Arduino comunicatie i2cArduino comunicatie i2c
Arduino comunicatie i2cIulius Bors
 
Conector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pcConector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pcIulius Bors
 
Arduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecretArduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecretIulius Bors
 
Curs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastaturaCurs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastaturaIulius Bors
 
Arduino uno rfidid-12
Arduino uno rfidid-12Arduino uno rfidid-12
Arduino uno rfidid-12Iulius Bors
 
Arduino multiplexarea le-durilor
Arduino multiplexarea le-durilorArduino multiplexarea le-durilor
Arduino multiplexarea le-durilorIulius Bors
 
Arduino releemodio2
Arduino releemodio2Arduino releemodio2
Arduino releemodio2Iulius Bors
 
Arduino toraspberrypi firmata
Arduino toraspberrypi firmataArduino toraspberrypi firmata
Arduino toraspberrypi firmataIulius Bors
 
Arduino matriceled8x8
Arduino matriceled8x8Arduino matriceled8x8
Arduino matriceled8x8Iulius Bors
 
Set prizecomandatedinarduino
Set prizecomandatedinarduinoSet prizecomandatedinarduino
Set prizecomandatedinarduinoIulius Bors
 
Arduino protocolul 1 wire
Arduino   protocolul 1 wireArduino   protocolul 1 wire
Arduino protocolul 1 wireIulius Bors
 
Arduino gsmgprs-shield-partea-a-2-a
Arduino gsmgprs-shield-partea-a-2-aArduino gsmgprs-shield-partea-a-2-a
Arduino gsmgprs-shield-partea-a-2-aIulius Bors
 

What's hot (20)

Curs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosfericiCurs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosferici
 
Curs gratuitarduino lectia6-senzoriforta
Curs gratuitarduino lectia6-senzorifortaCurs gratuitarduino lectia6-senzoriforta
Curs gratuitarduino lectia6-senzoriforta
 
Motoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriverMotoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriver
 
Curs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistantaCurs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistanta
 
Arduino comparatorul intern
Arduino comparatorul internArduino comparatorul intern
Arduino comparatorul intern
 
Arduino comunicatie i2c
Arduino comunicatie i2cArduino comunicatie i2c
Arduino comunicatie i2c
 
Aiesec University 2012-arduino
Aiesec University 2012-arduinoAiesec University 2012-arduino
Aiesec University 2012-arduino
 
Conector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pcConector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pc
 
Arduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecretArduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecret
 
Curs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastaturaCurs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastatura
 
Arduino uno rfidid-12
Arduino uno rfidid-12Arduino uno rfidid-12
Arduino uno rfidid-12
 
Arduino multiplexarea le-durilor
Arduino multiplexarea le-durilorArduino multiplexarea le-durilor
Arduino multiplexarea le-durilor
 
Arduino releemodio2
Arduino releemodio2Arduino releemodio2
Arduino releemodio2
 
Arduino toraspberrypi firmata
Arduino toraspberrypi firmataArduino toraspberrypi firmata
Arduino toraspberrypi firmata
 
Arduino matriceled8x8
Arduino matriceled8x8Arduino matriceled8x8
Arduino matriceled8x8
 
Arduino eeprom
Arduino   eepromArduino   eeprom
Arduino eeprom
 
Set prizecomandatedinarduino
Set prizecomandatedinarduinoSet prizecomandatedinarduino
Set prizecomandatedinarduino
 
Arduino rtc
Arduino rtcArduino rtc
Arduino rtc
 
Arduino protocolul 1 wire
Arduino   protocolul 1 wireArduino   protocolul 1 wire
Arduino protocolul 1 wire
 
Arduino gsmgprs-shield-partea-a-2-a
Arduino gsmgprs-shield-partea-a-2-aArduino gsmgprs-shield-partea-a-2-a
Arduino gsmgprs-shield-partea-a-2-a
 

Viewers also liked

LED TV T-con board Lecture
LED TV T-con board LectureLED TV T-con board Lecture
LED TV T-con board LectureVikas Deoarshi
 
LED LCD COF/TAB stock list
LED LCD COF/TAB stock listLED LCD COF/TAB stock list
LED LCD COF/TAB stock listVikas Deoarshi
 
Lcd Process & Backlight Training
Lcd Process & Backlight TrainingLcd Process & Backlight Training
Lcd Process & Backlight Traininghuangch
 
cara service laptop
cara service laptopcara service laptop
cara service laptopkbtiforum
 
Laptop Chip level repairing(CPU section)
Laptop Chip level repairing(CPU section)Laptop Chip level repairing(CPU section)
Laptop Chip level repairing(CPU section)chiptroniks
 

Viewers also liked (7)

LED TV T-con board Lecture
LED TV T-con board LectureLED TV T-con board Lecture
LED TV T-con board Lecture
 
LED LCD COF/TAB stock list
LED LCD COF/TAB stock listLED LCD COF/TAB stock list
LED LCD COF/TAB stock list
 
Lcd Process & Backlight Training
Lcd Process & Backlight TrainingLcd Process & Backlight Training
Lcd Process & Backlight Training
 
Lcd
LcdLcd
Lcd
 
Harddisk pcb repairing
Harddisk pcb repairingHarddisk pcb repairing
Harddisk pcb repairing
 
cara service laptop
cara service laptopcara service laptop
cara service laptop
 
Laptop Chip level repairing(CPU section)
Laptop Chip level repairing(CPU section)Laptop Chip level repairing(CPU section)
Laptop Chip level repairing(CPU section)
 

Similar to Curs gratuitarduino lectia10-lcd-uri

Arduino alcoolmetru
Arduino alcoolmetruArduino alcoolmetru
Arduino alcoolmetruIulius Bors
 
Adxl345 raspberry pi
Adxl345 raspberry piAdxl345 raspberry pi
Adxl345 raspberry piIulius Bors
 
Raspberry pi bmp085blueedition
Raspberry pi bmp085blueeditionRaspberry pi bmp085blueedition
Raspberry pi bmp085blueeditionIulius Bors
 
Arduino indicatoare cp-usiram
Arduino indicatoare cp-usiramArduino indicatoare cp-usiram
Arduino indicatoare cp-usiramIulius Bors
 
Raspberry pi firmata - arduino
Raspberry pi   firmata - arduinoRaspberry pi   firmata - arduino
Raspberry pi firmata - arduinoIulius Bors
 
Arduino wifi shield-drivermotoarel298
Arduino wifi shield-drivermotoarel298Arduino wifi shield-drivermotoarel298
Arduino wifi shield-drivermotoarel298Iulius Bors
 
Arduino gsm gprs shield
Arduino   gsm gprs shieldArduino   gsm gprs shield
Arduino gsm gprs shieldIulius Bors
 

Similar to Curs gratuitarduino lectia10-lcd-uri (12)

Arduino alcoolmetru
Arduino alcoolmetruArduino alcoolmetru
Arduino alcoolmetru
 
Adxl345 raspberry pi
Adxl345 raspberry piAdxl345 raspberry pi
Adxl345 raspberry pi
 
Raspberry pi bmp085blueedition
Raspberry pi bmp085blueeditionRaspberry pi bmp085blueedition
Raspberry pi bmp085blueedition
 
Arduino indicatoare cp-usiram
Arduino indicatoare cp-usiramArduino indicatoare cp-usiram
Arduino indicatoare cp-usiram
 
Arduino mod-gps
Arduino mod-gpsArduino mod-gps
Arduino mod-gps
 
Proiect PP
Proiect PPProiect PP
Proiect PP
 
Raspberry pi firmata - arduino
Raspberry pi   firmata - arduinoRaspberry pi   firmata - arduino
Raspberry pi firmata - arduino
 
Arduino tv out
Arduino tv outArduino tv out
Arduino tv out
 
Arduino wifi shield-drivermotoarel298
Arduino wifi shield-drivermotoarel298Arduino wifi shield-drivermotoarel298
Arduino wifi shield-drivermotoarel298
 
Arduino gsm gprs shield
Arduino   gsm gprs shieldArduino   gsm gprs shield
Arduino gsm gprs shield
 
Mc cap 1
Mc cap 1Mc cap 1
Mc cap 1
 
Arduino sht11
Arduino sht11Arduino sht11
Arduino sht11
 

More from Iulius Bors

Raspberry pi wirelesshotspot
Raspberry pi wirelesshotspotRaspberry pi wirelesshotspot
Raspberry pi wirelesshotspotIulius Bors
 
Raspberry piuln2803
Raspberry piuln2803Raspberry piuln2803
Raspberry piuln2803Iulius Bors
 
Raspberry pi timelapse
Raspberry pi timelapseRaspberry pi timelapse
Raspberry pi timelapseIulius Bors
 
Raspberry pi lcd-shield20x4
Raspberry pi lcd-shield20x4Raspberry pi lcd-shield20x4
Raspberry pi lcd-shield20x4Iulius Bors
 
Programare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificialaProgramare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificialaIulius Bors
 
Curs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcelCurs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcelIulius Bors
 
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...Iulius Bors
 
Cum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypiCum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypiIulius Bors
 
Asamblare statie meteo
Asamblare statie meteoAsamblare statie meteo
Asamblare statie meteoIulius Bors
 
Arduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linuxArduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linuxIulius Bors
 

More from Iulius Bors (10)

Raspberry pi wirelesshotspot
Raspberry pi wirelesshotspotRaspberry pi wirelesshotspot
Raspberry pi wirelesshotspot
 
Raspberry piuln2803
Raspberry piuln2803Raspberry piuln2803
Raspberry piuln2803
 
Raspberry pi timelapse
Raspberry pi timelapseRaspberry pi timelapse
Raspberry pi timelapse
 
Raspberry pi lcd-shield20x4
Raspberry pi lcd-shield20x4Raspberry pi lcd-shield20x4
Raspberry pi lcd-shield20x4
 
Programare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificialaProgramare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificiala
 
Curs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcelCurs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcel
 
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
 
Cum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypiCum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypi
 
Asamblare statie meteo
Asamblare statie meteoAsamblare statie meteo
Asamblare statie meteo
 
Arduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linuxArduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linux
 

Curs gratuitarduino lectia10-lcd-uri

  • 1.
  • 2. http://www.robofun.ro Curs Gratuit Arduino si Robotica Textul si imaginile din acest document sunt licentiate Attribution-NonCommercial-NoDerivs CC BY-NC-ND Codul sursa din acest document este licentiat Public-Domain Esti liber sa distribui acest document prin orice mijloace consideri (email, publicare pe website / blog, printare, sau orice alt mijloc), atat timp cat nu aduci nici un fel de modificari acestuia. Codul sursa din acest document poate fi utilizat in orice fel de scop, de natura comerciala sau nu, fara nici un fel de limitari. http://www.robofun.ro/forum
  • 3. http://www.robofun.ro Curs Gratuit Arduino si Robotica LCD 16 X 2, LCD 16 X 4, LCD 20 X 4 Toate aceste LCD-uri se interfateaza cu Arduino exact la fel. Singura diferenta este dimensiunea lor. Astfel, LCD-ul 16 X 2 permite 16 coloane si doua linii de caractere (adica in total 32 de caractere), LCD-ul 16X4 permite 4 linii (64 de caractere in total), iar cel de 20X4 permite 80 de caractere afisate. Ca sa-l folosesti cu Arduino, ai nevoie de fire de conectare si de un potentiometru de 10K pentru reglarea contrastului (nu merge fara el). Schema de conectare este cea de mai jos (nu este simpla). Daca esti la primele tale teste cu Arduino, din pacate s-ar putea sa gasesti conectarea LCD-ului o experienta frustranta. Sunt destul de multe fire de conectat, si daca gresesti unul singur nu-ti va functiona. Iti recomand sa faci montajul incet si sa verifici de cateva ori fiecare conexiune. Daca ai ajuns la final, vei avea atat de multe fire incat iti va fi dificil sa vezi care fir duce unde. Verifica cu atentie pe parcurs ca sa fii sigur ca fiecare fir duce acolo unde trebuie. Daca totusi nu ti-a iesit si vrei sa incerci ceva mai simplu, iti recomand shield-ul cu LCD 2X16 (http://www.robofun.ro/bricks/shield-lcd-16x2) care nu face altceva decat sa-ti ascunda conexiunile complicate. http://www.robofun.ro/forum
  • 4. http://www.robofun.ro Curs Gratuit Arduino si Robotica Arduino 5 V Pin1 Potentiometru Arduino GND Pin3 Potentiometru Pin2 Potentiometru VO (PIN3) LCD Arduino GND GND (PIN1) LCD Arduino GND RW (PIN5) LCD Arduino 5 V VCC (PIN2) LCD Arduino Digital 12 RS (PIN4) LCD Arduino Digital 11 E (PIN6) LCD Arduino Digital 5 D4 (PIN11) LCD http://www.robofun.ro/forum
  • 5. http://www.robofun.ro Curs Gratuit Arduino si Robotica Arduino Digital 4 D5 (PIN12) LCD Arduino Digital 3 D6 (PIN13) LCD Arduino Digital 2 D7 (PIN14) LCD #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16, 2); lcd.print("hello, world!"); } void loop() { lcd.setCursor(0, 1); lcd.print(millis()/1000); } Codul sursa de mai sus utilizeaza libraria LiquidCrystal (inclusa in mod standard in mediul de dezvoltare Arduino). Singura modificare pe care va trebui sa o faci cand folosesti un alt tip de LCD este sa schimbi parametrii din rutina de initializare. Astfel, pentru un LCD 20X4, linia 3 se schimba la "lcd.begin(20, 4)". Alte rutine interesante ale librariei LiquidCrystal sunt mai jos : • clear() - curata ecranul complet. Se apeleaza fara parametri – "lcd.clear()" • home() - muta cursorul in partea din stanga, sus. Se apeleaza fara parametri – "lcd.home()" • setCursor() - muta cursorul la pozitia specificata. Textul care urmeaza a fi scris este scris la pozitia specificata de aceasta metoda. Astfel, pentru a scrie text pe linia 2, coloana 4, vom apela "lcd.setCursor(1,3); lcd.print("TEXT");" • noDisplay() - opreste LCD-ul, fara a pierde textul afisat. Se apeleaza fara parametri – "lcd.noDisplay()" • display() - porneste LCD-ul dupa ce a fost oprit folosind "noDisplay". Se apeleaza fara parametri – "lcd.display()" • scrollDisplayLeft() - deplaseaza textul afisat pe LCD cu un caracter spre stanga. Se apeleaza fara parametri – "lcd.scrollDisplayLeft()" • scrollDisplayRight() - deplaseaza textul afisat pe LCD cu un caracter spre dreapta. Se apeleaza fara parametri – "lcd.scrollDisplayRight()" http://www.robofun.ro/forum
  • 6. http://www.robofun.ro Curs Gratuit Arduino si Robotica LCD 16 X 2 pe I2C, LCD 20 X 4 pe I2C Ambele LCD-uri sunt LCD-urile obisnuite despre care am discutat mai sus, carora li s-a atasat o placa suplimentara care comunica pe I2C cu Arduino si seteaza cei 8 pini pentru controlul LCD-ului la valorile care trebuie astfel incat pe LCD sa fie afisat text-ul care trebuie. In acest fel, intre Arduino si LCD sunt necesare doar doua fire (SDA si SCL), in afara firului de GND si alimentare. http://www.robofun.ro/forum
  • 7. http://www.robofun.ro Curs Gratuit Arduino si Robotica Conexiunile la Arduino sunt ca in cele doua imagini de mai jos. Ultimii doi pini din mufa lipita pe placa LCD-ului nu se folosesc. In rest, de la stanga la dreapta, avem SDA (se conecteaza la pinul analogic 4 pe Arduino UNO sau la pinul SDA pe Arduino Leonardo), SCL (se conecteaza la pinul analogic 5 pe Arduino UNO sau la pinul SCL pe Arduino Leonardo), 5V (se conecteaza la pinul 5V pe Arduino, si pinul GND (se conecteaza la pinul GND). http://www.robofun.ro/forum
  • 8. http://www.robofun.ro Curs Gratuit Arduino si Robotica Arduino UNO Arduino 5 V LCD 5V Arduino GND LCD GND Arduino Analog 4 LCD SDA Arduino Analog 5 LCD SCL http://www.robofun.ro/forum
  • 9. http://www.robofun.ro Curs Gratuit Arduino si Robotica Arduino Leonardo Arduino 5 V LCD 5V Arduino GND LCD GND Arduino SDA LCD SDA Arduino SCL LCD SCL Urmatorul pas este actualizarea librariei LCD, astfel incat sa suporte si comunicarea I2C. Mergi la adresa http://www.robofun.ro/lcd_20x4_i2c_negru_verde si descarca libraria din acea pagina. Este bine sa o incerci prima data pe cea de pe GITHUB, care este intotdeauna la zi. Dupa ce ai descarcat-o, inchide mediul Arduino si deschide folder-ul "libraries" din folder-ul in care este instalat mediul Arduino. Folder-ul "libraries" ar trebui sa arate similar cu imaginea de mai jos. Deschide si folder-ul "LiquidCrystal" ca sa vezi ce fisiere sunt in interior. Ar trebui sa vezi ceva similar cu ce este mai jos. http://www.robofun.ro/forum
  • 10. http://www.robofun.ro Curs Gratuit Arduino si Robotica http://www.robofun.ro/forum
  • 11. http://www.robofun.ro Curs Gratuit Arduino si Robotica Sterge apoi tot ceea ce este in acest folder si inlocuieste cu fisierele descarcate anterior. Ar trebui sa fie similar cu imaginea de mai jos. http://www.robofun.ro/forum
  • 12. http://www.robofun.ro Curs Gratuit Arduino si Robotica Porneste acum mediul de dezvoltare Arduino si incearca programul de mai jos. #include "Wire.h" #include "LiquidCrystal.h" LiquidCrystal lcd(0); void setup() { lcd.begin(20, 4); lcd.setBacklight(HIGH); lcd.print("hello, world 0 !"); lcd.setCursor(0, 1); lcd.print("hello, world 1 !"); lcd.setCursor(0, 2); lcd.print("hello, world 2 !"); lcd.setCursor(0, 3); lcd.print("hello, world 3 !"); } void loop() { } Daca LCD-ul tau nu arata ca mai sus, pe spatele placutei rosii vei gasi un potentiometru de culoare albastra. Acest potentiometru stabileste contrastul LCD-ului, si probabil ca s-a miscat in timpul transportului. Folosind o surubelnita mica, un varf de cutit ascutit, foarfeca sau pila de unghii, roteste-l usor si urmareste in acelasi timp textul pe LCD pana cand devine foarte clar. Si partea frumoasa abia acum vine ! Cu acest tip de LCD, poti conecta simultan pana la opt LCD-uri la acelasi Arduino, folosind aceeasi doi pini I2C. Pentru aceasta, intoarce LCD-ul pe spate, si observa cei 3 jumperi pentru http://www.robofun.ro/forum
  • 13. http://www.robofun.ro Curs Gratuit Arduino si Robotica setarea adresei I2C. In mod obisnuit, nici unul dintre acesti jumperi nu este lipit, asa ca adresa shield-ului este zero (lucru pe care il vezi in cod la linia LiquidCrystal lcd(0)). Fiecare LCD va trebuie sa aiba o adresa I2C diferita, asa ca ceea ce ai de facut este sa folosesti un letcon si putin fludor pentru a conecta unul sau mai multi jumperi impreuna. Adresele sunt in cod binar, astfel ca folosind cei trei jumperi poti obtine exact opt adrese. Pentru a conecta un jumper, incalzeste ambele pad-uri, apoi adauga fludor si intinde fludorul astfel incat sa faca contact intre ambele pad-uri, ca mai jos. Pentru a conecta mai multe LCD-uri la acelasi Arduino, tot ce ai de facut este conectezi toti pinii de SDA impreuna de la toate LCD-urile, toti pinii SCL impreuna, si la fel si GND si 5V. In prealabil, ai grija sa setezi adrese I2C diferite lipind cei trei jumperi de adresa in configuratii diferite. Apoi, in cod definesti mai multe obiecte de tip LCD, ca mai jos. #include "Wire.h" #include "LiquidCrystal.h" LiquidCrystal lcd1(0); LiquidCrystalc lcd2(1); LiquidCrystal lcd3(2); void setup() { lcd1.begin(20, 4); lcd2.begin(20, 4); lcd.3begin(20, 4); lcd1.setBacklight(HIGH); lcd1.print("LCD1, hello, world 0 !"); lcd1.setCursor(0, 1); lcd1.print("LCD1, hello, world 1 !"); lcd1.setCursor(0, 2); lcd1.print("LCD1, hello, world 2 !"); lcd1.setCursor(0, 3); lcd1.print("LCD1, hello, world 3 !"); lcd2.setBacklight(HIGH); lcd2.print("LCD2, hello, world 0 !"); http://www.robofun.ro/forum
  • 14. http://www.robofun.ro Curs Gratuit Arduino si Robotica lcd2.setCursor(0, 1); lcd2.print("LCD2, hello, world 1 !"); lcd2.setCursor(0, 2); lcd2.print("LCD2, hello, world 2 !"); lcd2.setCursor(0, 3); lcd2.print("LCD2, hello, world 3 !"); lcd3.setBacklight(HIGH); lcd3.print("LCD3, hello, world 0 !"); lcd3.setCursor(0, 1); lcd3.print("LCD3, hello, world 1 !"); lcd3.setCursor(0, 2); lcd3.print("LCD3, hello, world 2 !"); lcd3.setCursor(0, 3); lcd3.print("LCD3, hello, world 3 !"); } void loop() { } http://www.robofun.ro/forum
  • 15. http://www.robofun.ro Curs Gratuit Arduino si Robotica Aceasta a fost lectia 10. In final, as vrea sa te rog sa ne oferi feedback asupra acestei lectii, pentru a ne permite sa le facem mai bune pe urmatoarele. Este vorba despre un sondaj cu 4 intrebari (oricare este optionala), pe care il poti accesa dand click aici. Sau ne poti contacta direct prin email la contact@robofun.ro . Iti multumim, Echipa Robofun.RO http://www.robofun.ro/forum