Povezivanje LCD 1602 na Arduino: opis, značajke, upute, značajke, problemi i njihova rješenja

Svaki radioamater nakon određenog broja jednostavnih klica postiže cilj izgradnje nečeg grandioznog u korištenju senzora i gumba. Mnogo je zanimljivije prikazati podatke od porta monitora. Ali onda se postavlja pitanje: koji prikaz odabrati? I općenito, kako ga spojiti, što je potrebno za povezivanje? Odgovori na ova pitanja bit će obrađeni u ovom članku.

LCD 1602

Među mnogim mogućnostima među zaslonima, poželjno je istaknuti zaslon LCD1602 na temelju kontrolera HD4478. Tu je ovaj zaslon u dvije boje: bijela slova na plavoj pozadini, crna slova na žutoj pozadini. Spajanje LCD 1602 na Arduino također neće uzrokovati nikakve probleme, budući da postoji ugrađena knjižnica i nije potrebno dodatno preuzimanje. Prikazuje se ne samo u cijeni nego iu veličini. Najčešće koriste radioamateri 16 x 2 tj. 2 retka od 16 znakova. No tu je i 20 x 4 gdje se nalaze 4 retka od 20 znakova. Dimenzije i boja ne igraju nikakvu ulogu u povezivanju LCD zaslona 1602 na Arduno, povezuju se na isti način. Kut gledanja je 35 stupnjeva, vrijeme odziva zaslona je 250 ms. Može raditi na temperaturama od -20 do 70 stupnjeva Celzija. Prilikom rada koristi 4 mA za zaslon i 120 mA za pozadinsko osvjetljenje.


Gdje se koristi? Ovaj prikaz ima svoju popularnost ne samo u radioamaterima, već iu velikim proizvođačima. Na primjer, pisači, aparati za kavu također upotrebljavaju LCD1602. To je zbog njegove niske razinecijena vrijedi ovaj prikaz na kineskim dvorištima 200-300 rubalja. Kupnja je upravo tu, kao u našim trgovinama, oznake na ovom zaslonu su vrlo visoke.

Povezivanje s Arduinom

Spajanje LCD 1602 na Arduino Nano i Uno ne razlikuje se. Zaslon može raditi u dva načina: 4 bita i 8. Kada radite s 8-bitnim i mlađim i starijim bitovima, te s 4-bitnim samo juniorom. Nema posebnog smisla za rad s 8-bitnim, jer će se dodati još 4 kontakta, što nije prikladno, jer brzina neće biti veća, ograničenje nadogradnje zaslona - 10 puta u sekundi. Općenito, mnogi se kabeli koriste za spajanje lcd 1602 na Arduino, što donosi neke neugodnosti, ali postoje i posebne šilde, ali o tome kasnije. Slika prikazuje vezu prikaza na Arduino Uno:


Primjer programskog koda:

# uključi //Dodaj potrebnu knjižnicu
LiquidCrystal lcd (765 432); //(RS, E, DB4 DB5 DB6 DB7)

void setup () {
lcd. Počinje (16 2); //Postavite veličinu zaslona

lcd.setCursor (0 0); //Postavite pokazivač na početak prvog retka
lcd.print ("Hello, world!"); //Izlazni tekst
lcd.setCursor (0 1); //Instalirajte kursor na početak retka 2
lcd.print ("fb.ru"); //Izlazni tekst
}

void loop () {
}

Što čini kod? Prvi zadatak je povezivanje knjižnice za rad s zaslonom. Kao što je već spomenuto, ova knjižnica je već dio Arduino IDE-a i više je ne morate preuzimati i instalirati. Odredite kontakte koji su spojeni na sljedeće: RS, E, DB4 DB5 DB6 DB7. Nakon toga se određuje veličina zaslona. Budući da radimo na verziji sa 16 znakova i 2 retka, pišemo takovrijednost. Postavili smo pokazivač na početak prvog retka i zaključili prvi tekst Hello World. Zatim postavite pokazivač na drugi redak i prikažite naziv stranice. To je sve! Razmotrena je povezanost lcd 1602 s Arduinom Unoom.


& lt; script type = "text /javascript" & gt;
može blockSettings2 = {blockId: "R-A-271049-5", renderTo: "yandex_rtb_R-A-70350-39", async: 0};
if (document.cookie.indexOf ("abmatch =") & gt; = 0) blockSettings2.statId = 70350;
Funkcija (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (funkcija () {Ya.Context.AdvManager.render (blockSettings2)}), e = b.getElementsByTagName ("script") , d = b.createElement ("script"), d.type = "text /javascript", d.src = "//an.yandex .ru /system /context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (ovaj, ovaj.dokument," yandexContextAsyncCallbacks ");

Što je I2C i zašto je potrebno?

Kao što je već spomenuto, veza na zaslonu ima mnogo kontakata. Na primjer, kada radite s višestrukim senzorima i LCD zaslonima 1602 kontakti jednostavno ne mogu biti dovoljni. Često radioamateri koriste verzije Uno ili Nano, gdje nema mnogo kontakata. Tada su ljudi došli s posebnom šildom. Na primjer, I2C. Omogućuje vam povezivanje zaslona sa samo 4 kontakta. To je dva puta manje. I2C modul se prodaje zasebno, gdje je potrebno lemiti ga, i već zalemljen na LCD zaslon 1602.

Povezivanje preko I2C modula

Spajanje LCD 1602 na Arduino Nano s I2C zauzima malo prostora, samo 4 kontakta: uzemljenje, napajanje i 2 izlaza za prijenos podataka. Snaga i masa su spojeni na 5V i GND na Arduino. Preostala su dva kontakta: SCL i SDA povezani su s bilo kojim analognim pinovima. Na slici možete vidjeti primjer spajanja lcd 1602 na arduino s I2C modulom:

Programski kod

Ako radi s zaslonom bez modulabilo je potrebno koristiti samo jednu knjižnicu, a za rad s modulom potrebne su dvije knjižnice. Jedan od njih je već u Arduino IDE-Wire. Druga knjižnica, LiquidCrystal I2C, mora se zasebno preuzeti i instalirati. Za instaliranje Arduino knjižnice, sadržaj preuzete arhive mora se preuzeti u korijenski direktorij knjižnica. Primjer koda pomoću I2C:


& lt; script type = "text /javascript" & gt;
može blockSettings3 = {blockId: "R-A-271049-6", renderTo: "yandex_rtb_R-A-70350-44", async: 0};
if (document.cookie.indexOf ("abmatch =") & gt; = 0) blockSettings3.statId = 70350;
Funkcija (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (funkcija () {Ya.Context.AdvManager.render (blockSettings3)}), e = b.getElementsByTagName ("script") , d = b.createElement ("script"), d.type = "text /javascript", d.src = "//an.yandex .ru /system /context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (ovaj, ovaj.dokument," yandexContextAsyncCallbacks ");
# uključiti
# uključiti
LiquidCrystal_I2C lcd (0x27162); //Instalirajte prikaz
void setup ()
{
lcd.init ();
lcd.backlight (); //Uključivanje pozadinskog osvjetljenja zaslona
lcd.print ("FB.ru");
lcd.setCursor (8 1);
lcd.print ("LCD 1602");
}
void loop ()
{
//Postavite kursor na drugi redak i nulti znak.
lcd.setCursor (0 1);
//Prikazujemo broj sekundi od početka arudui
lcd.print (millis () /1000);
}

Kao što možete vidjeti, kod je gotovo isti.

Kako dodati svoj lik?

Problem s ovim zaslonima je u tome što nema podrške za ćirilične znakove i simbole. Na primjer, potreban vam je znak za preuzimanje zaslona tako da ga možete prikazati. Za to vam zaslon omogućuje stvaranje do 7 znakova. Zamislite tablicu:

0 0 0 1
0 0 0 0 1
1 1 0 0

Ako 0 - nema ničega, ako je 1 oslikano područje. U gornjem primjeru možete vidjeti stvaranje osmijeha osmijeha. Na primjer, Arduino program će izgledati ovako:

#include
#include //Potrebna nam je knjižnica
//Bitmap maska ​​osmijeh
bajt osmjeh
=
{
B00010
B00001
B11001
B00001
B11001
B00001
B00010
};
LiquidCrystal lcd (765 432); //(RS, E, DB4 DB5 DB6 DB7)

void setup () {
lgd.počinje (16 2); //Postavite veličinu zaslona

lcd.createChar (1 osmijeh); //Kreirajte znak na broju 1

lcd.setCursor (0 0); //Postavimo kursor na početak retka 1
lcd.print ("1"); //Uklanjanje smajlija (simbol na broj 1) - "1"
}

void loop () {
}

Kao što možete vidjeti, bit maska ​​je stvorena isto kao i stol. Jednom kreiran, može se prikazati kao varijabla na zaslonu. Zapamtite da u memoriju može biti pohranjeno samo 7 znakova. U načelu, to je dovoljno. Primjerice, ako želite prikazati znak u stupnjevima.

& lt; skripta async = "//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">

& lt; skripta & gt; (adsbygoogle = window.adsbygoogle || []). push ({});

Problemi s kojima zaslon možda neće raditi

Postoje slučajevi kada zaslon ne radi. Na primjer, uključuje se, ali ne prikazuje znakove. Ili uopće neuključeno. Najprije provjerite jeste li ispravno povezali kontakte. Ako ste koristili lcd 1202 vezu s Arduinom bez I2C, vrlo je lako zaplesti se u žice, što može uzrokovati nepravilan rad zaslona. Također, provjerite je li kontrast zaslona povećan, jer čak i uz minimalan kontrast nije vidljivo je li LCD 1602 uključen ili ne. Ako to ne pomogne, možda je problem u lemljenju kontakata, to je kod korištenja I2C modula. Isto tako, čest razlog zbog kojeg zaslon možda neće raditi je to što je I2C adresa pogrešno postavljena. Činjenica je da mnogi proizvođači, i oni mogu staviti drugu adresu, moraju biti popravljeni ovdje:


& lt;
može blockSettings = {blockId: "R-A-70350-45", renderTo: "yandex_rtb_R-A-70350-45", async: 0};
if (document.cookie.indexOf ("abmatch =") & gt; = 0) blockSettings.statId = 70350;
Funkcija (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (funkcija () {Ya.Context.AdvManager.render (blockSettings}), e = b.getElementsByTagName ("script") , d = b.createElement ("script"), d.type = "text /javascript", d.src = "//an.yandex .ru /system /context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (ovaj, ovaj.dokument," yandexContextAsyncCallbacks ");
LiquidCrystal_I2C lcd (0x27162);

U zagradama možete vidjeti dvije vrijednosti, 0x27 i 162 (16 2 je veličina zaslona, ​​a 0x27 ista kao I2C adresa). Umjesto tih vrijednosti možete pokušati staviti 0x37 ili 0x3F. Pa, drugi razlog je jednostavno neispravan LCD 1602. S obzirom da se gotovo sve za Arduino proizvodi u Kini, ne možete biti sigurni 100% da kupljeni artikl nije brak.

Za i protiv LCD 1602

Razmotrite prednosti i nedostatke LCD zaslona 1602. Pros
  • Cijena. Ovaj se modul može kupiti po vrlo pristupačnoj cijeni u kineskim trgovinama. Cijena je200-300 rubalja. Ponekad se prodaje čak is I2C modulom.
  • Jednostavno povezivanje. Vjerojatno nitko sada ne povezuje LCD 1602 bez I2C. A s ovim modulom, veza traje samo 4 kontakta, nema "pauka" iz žica neće biti.
  • Programiranje. Zahvaljujući gotovim knjižnicama lako je raditi s ovim modulom, sve su funkcije već registrirane. A ako trebate dodati svoj simbol, potrebno je samo nekoliko minuta.
  • Cons
  • Tijekom korištenja tisuća radioamatera nisu otkriveni nikakvi veći nedostaci, ali postoje slučajevi kupnje braka, budući da se koriste uglavnom kineske varijante prikaza.
  • U ovom se članku raspravlja o priključku LCD 1602 na Arduino, kao i na primjere programa za rad sa zaslonom. On je doista jedan od najboljih u svojoj kategoriji, ne samo zato što ga tisuće radioamatera biraju za svoje projekte!

    Povezane publikacije