Îţi voi prezenta în cele ce urmează câteva exemple de folosire a unui LCD pe 3 fire. Pe parcursul acestui tutorial vei învăţa cum să afişezi informaţii pe un LCD alfa numeric, cum să îţi creezi propriul caracter, şi deasemenea cum să instalezi o librărie.
Conectare
Pentru acest tutorial voi folosi o plăcuţă de dezvoltare Arduino Uno .
Conectarea Kitului LCD la placa de dezvoltare se face astfel:
-firul ROŞU(+):5v
-firul NEGRU(-):GND
-firul PORTOCALIU (pin 1 – CLOCK): Pinul 9 (iesire digitala) de pe placa Arduino
-firul ALBASTRU(pin 2 – DATA): Pinul 8 (ieşire digitală) de pe placa Arduino
-firul VERDE(pin 3 – STROBE): Pinul 7 (ieşire digitală) de pe placa Arduino
Instalare librărie
Pentru a instala librăria necesară folosirii acestui kit va trebuii să urmezi instrucţiunile de mai jos:
1. Descarcă fişierele necesare de pe https://github.com/marcmerlin/NewLiquidCrystal . Atenţie: pentru a descarca toate fişierele, în stânga sus există o iconiţă în care scrie ZIP. Apasă acea iconiţă.
2. În directorul de instalare Arduino se află un alt director numit „libraries”. Dezarhivează fişierul în acest director.
3.Redenumeşte directorul dezarhivat, din „marcmerlin-NewLiquidCrystal-59310ed” in „NewLiquidCrystal”
4.Dacă totul arată conform cu imaginea de mai jos eşti pregătit pentru programare. Reporneşte programul Arduino.
Îţi voi prezenta două programe, unul simplu, care doar tipăreşte un text şi unul puţin mai complicat, care va creea un caracter special.
1.Un mesaj de bunvenit:
//Se incarca libraria NewCrystalLCD #include <LiquidCrystal_SR_LCD3.h> //Se definesc pini de comunicare const int PIN_LCD_STROBE = 9;//pinul 9 de pe placa Arduino const int PIN_LCD_DATA = 8;//pinul 8 de pe placa Arduino const int PIN_LCD_CLOCK = 7;//pinul 7 de pe placa Arduino //Initializare librarie LiquidCrystal_SR_LCD3 lcd(PIN_LCD_DATA, PIN_LCD_CLOCK, PIN_LCD_STROBE); void setup(){ lcd.begin(16, 2);//Definim tipul de display folosit //in cazul nostru 16X2 lcd.print(F("Bine ati venit")); //Tiparim textul lcd.setCursor (0, 1);//sarim pe linia urmatoare lcd.print(F("pe www.roroid.ro"));//tiparim textul } void loop(){ }
2.Conceperea unui caracter:
Pentru conceperea unui caracter te sfătuiesc să iei o foaie de hartie cu pătrăţele. Marchează pe această foaie un chenar care să conţină 8 pătrăţele în înălţime şi 5 pătrăţele în lungime. 8×5 reprezintă numarul de pixeli disponibili pentru un caracter pe LCD-ul nostru. Iar acum gata cu vorbaria şi hai să desenăm.
Am desenat un roboţel sau omuleţ. Depinde de imaginaţia fiecăruia. În partea dreaptă se poate observa conversia în binar a desenului nostru. Pentru un pătrat gol avem 0 iar pentru unul plin avem 1.
Desenul tradus în limbaj de programare arată aşa:
byte robo[8] = { 0b01110, 0b01010, 0b01110, 0b00100, 0b11111, 0b00100, 0b01010, 0b10001 };
iar programul complet ar fi urmatorul:
//Se incarca libraria NewCrystalLCD #include <LiquidCrystal_SR_LCD3.h> //Se definesc pini de comunicare const int PIN_LCD_STROBE = 9;//pinul 9 de pe placa Arduino const int PIN_LCD_DATA = 8;//pinul 8 de pe placa Arduino const int PIN_LCD_CLOCK = 7;//pinul 7 de pe placa Arduino byte robo[8] = { 0b01110, 0b01010, 0b01110, 0b00100, 0b11111, 0b00100, 0b01010, 0b10001 };//Definim imaginea ce dorim sa o reprezentam in binar //Initializare librarie LiquidCrystal_SR_LCD3 lcd(PIN_LCD_DATA, PIN_LCD_CLOCK, PIN_LCD_STROBE); void setup(){ lcd.begin(16, 2);//Definim tipul de display folosit //in cazul nostru 16X2 lcd.createChar(0, robo);//Se creeaza caracterul nostru lcd.home (); // reinitializeaza lcd lcd.setCursor (0, 0);//sarim pe linia urmatoare lcd.print(F("Am desenat un")); //Tiparim textul lcd.setCursor (0, 1);//sarim pe linia urmatoare lcd.print(F("robotel: "));//tiparim textul lcd.print(char(0));//tiparim caracterul nou creat } void loop(){ }
Două poze cu rezultatul programelor.
P.S. Ideea originala a unui display LCD pe 3 fire se găseşte aici http://arduino.cc/playground/Code/LCD3wires.
Spor la treaba!
Trebuie neaparat LCD-ul sa fie conectat pe pinii 7,8 si 9 sau se poate conecta pe oricare alti 3 pini digitali?are nevoie si de un PWM?
Poti folosi ce pini vrei. Nu este nevoie de PWM.
Comunicarea i2c a fost realizata de voi ? Sau a venit lcd-ul cu modulul respectiv ?
Salut,
Acest model nu este I2C. Foloseste un registru de deplasare pentru comanda. Ambele display-uri au fost realizate intern.