Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Sigurnost
  • Arduino i karakterni LCD displej. Povezivanje LCD ekrana na Arduino

Arduino i karakterni LCD displej. Povezivanje LCD ekrana na Arduino

Displej sa tečnim kristalima (LCD), skraćeno LCD, zasnovan je na tehnologiji tečnih kristala. Kada dizajniramo elektronske uređaje, potreban nam je jeftin uređaj za prikaz informacija, a drugi jednako važan faktor je dostupnost gotovih biblioteka za Arduino. Od svih dostupnih LCD ekrana na tržištu, najčešće se koristi LCD 1602A, koji može prikazati ASCII znakove u 2 reda (16 znakova u 1 redu) svaki znak u matrici 5x7 piksela. U ovom članku ćemo pogledati osnove povezivanja displeja na Arduino.

Tehničke specifikacije

Napon napajanja: 5V
Veličina ekrana: 2,6 inča
Vrsta prikaza: 2 reda x 16 znakova
Boja pozadinskog osvjetljenja: plava
Boja karaktera: bijela
Dimenzije: 80mm x 35mm x 11mm

Prikaz Opis

LCD 1602A je elektronski modul baziran na HD44780 drajveru kompanije Hitachi. LCD1602 ima 16 pinova i može raditi u 4-bitnom načinu (koristeći samo 4 podatkovne linije) ili 8-bitnom načinu (koristeći svih 8 podatkovnih linija), ili se može koristiti I2C interfejs. U ovom članku ću govoriti o povezivanju u 4-bitnom načinu.

Zadatak kontakta:
VSS: “-” napajanje modula
VDD: “+” napajanje modula
VO: Pin za kontrolu kontrasta
RS: Register Select
RW: Odaberite način pisanja ili čitanja (kada je spojen na uzemljenje, postavite na način pisanja)
E: Pada kapija
DB0-DB3: Bitovi sučelja
DB4-DB7: Bitovi sučelja
O: “+” snaga pozadinskog osvetljenja
K: "-" snaga pozadinskog osvjetljenja

Na prednjoj strani modula nalazi se LCD displej i grupa kontakata.

Na poleđini modula nalaze se dva čipa u "kapljičnom" dizajnu (ST7066U i ST7065S) i električno ožičenje, ne vidim smisao u crtanju dijagrama, samo ću vam reći o otporniku R8 (100 Ohm), koji služi kao ograničavajući otpornik za LED pozadinsko osvjetljenje, tako da možete spojiti 5V direktno na pin A. Malo kasnije ću napisati članak u kojem ću vam reći kako možete promijeniti pozadinsko osvjetljenje LCD ekrana pomoću PWB i tranzistor.

Povezivanje LCD 1602A na Arduino (4-bitni način rada)

Potrebni dijelovi:
Arduino UNO R3 x 1 kom.
LCD displej 1602A (2×16, 5V, plavi) x 1 kom.
DuPont žica, 2,54 mm, 20 cm, F-F (ženski - ženski) x 1 kom.
Potenciometar 10 kOhm x 1 kom.
PLS-16 konektor x 1 kom.
Razvojna ploča MB-102 x 1 kom.
USB 2.0 A-B kabl x 1 kom.

Veza:
Za povezivanje ćemo koristiti razvojnu ploču; dijagram i tabela za povezivanje LCD1602a na Arduino u 4-bitnom modu mogu se vidjeti na donjoj slici.

Povezivanje displeja sa matičnom pločom će se obaviti preko PLS-16 pinova (treba ih zalemiti za ekran). Instalirajte modul displeja u matičnu ploču i povežite napajanje VDD (2. pin) na 5V (Arduino) i VSS (1. pin) na GND (Arduino), zatim povežite RS (4. pin) na digitalni pin 8 (Arduino). Uzemljite RW (5. pin) tako što ćete ga povezati na GND (Arduino), zatim spojiti pin E na pin 8 (Arduino). Za 4-bitnu vezu potrebna su četiri pina (DB4 do DB7). Povežite pinove DB4 (11. pin), DB5 (12. pin), DB6 (13. pin) i DB7 (14. pin) na Arduino digitalne pinove 4, 5, 6 i 7. 10K potenciometar se koristi za podešavanje kontrasta prikaza, dijagram povezivanja za 1602a LCD ekran je prikazan ispod

Biblioteka je već uključena u Arduino IDE i nema potrebe da je instalirate. Kopirajte i zalijepite ovaj primjer koda u prozor programa Arduino IDE i učitajte ga u kontroler.

/* Testiranje je obavljeno na Arduino IDE 1.6.11 Datum testiranja 20.09.2016. */ #include LiquidCrystal lcd(8, 9, 4, 5, 6, 7); void setup() ( lcd.begin(16, 2); // Inicijalizira LCD 16x2 ) void loop() ( lcd.setCursor(0,0); // Postavite kursor na prvi red lcd.print("Zdravo, world" ); // Ispiši tekst lcd.setCursor(0,1); // Postavi kursor na drugi red lcd.print("www.robotchip.ru"); // Ispiši tekst )

Testiranje je obavljeno na Arduino IDE 1.6.11

Datum testiranja: 20.09.2016

#include

LiquidCrystal LCD (8, 9, 4, 5, 6, 7);

void setup()

lcd. početi(16, 2); // Inicijalizira LCD 16x2

void loop()

lcd. print ("Zdravo, svijet" ) ; // Ispis teksta

lcd. print ("www.robotchip.ru"); // Ispis teksta

Preuzmite program

Malo o programu.
Da bi se olakšala komunikacija između Arduina i LCD ekrana, koristi se ugrađena biblioteka u Arduino IDE " LiquidCrystal.h « - koji je napisan za korištenje LCD displeja HD44780 (Hitachi) čipset (ili kompatibilni čipovi). Ova biblioteka može upravljati i 4-bitnim i 8-bitnim načinom LCD konekcije.

Displej sa tečnim kristalima (LCD) mod. 1602 (tabela sa podacima) je odličan izbor za vaše projekte.

Prva stvar koja nas raduje je niska cijena. Drugi je dostupnost gotovih biblioteka za Arduino. Treće, postoji nekoliko modifikacija, koje takođe dolaze sa različitim pozadinskim osvetljenjem (plavo, zeleno). U ovom članku ćemo pogledati osnove povezivanja ovog displeja na Arduino i dati primjer malog projekta za prikaz razine svjetla na displeju pomoću fotootpornika.

Kontakti i dijagram povezivanja LCD 1602 na Arduino

Pinovi na ovom displeju su numerisani od 1 do 16. Nalaze se na poleđini ploče. Kako se tačno povezuju na Arduino prikazano je u tabeli ispod.

Table 1. Povezivanje LCD 1620 pinova na Arduino

Povezivanje 1602 na Arduino Ako se 1602 displej napaja iz Arduina preko 5-voltnog USB kabla i odgovarajućeg pina, vrijednost od 2 kOma se može koristiti za kontrastni pin ekrana (3. konektor - Kontrast). Za Back LED+ kontakt, možete koristiti otpornik od 100 Ohma. Možete koristiti i promjenjivi otpornik - potenciometar za ručno podešavanje kontrasta.

Na osnovu tabele 1 i dijagrama ispod, povežite vaš LCD ekran na Arduino. Za spajanje trebat će vam set provodnika. Preporučljivo je koristiti žice različitih boja kako biste izbjegli zabunu.

Table 2. Preferirane boje provodnika

Dijagram povezivanja LCD ekrana 1602 na Arduino:


Osnovni primjer programa za rad LCD 1602 sa Arduinom

Primer koristi Arduino pinove 0, 1, 2, 3, 4 i 5 za povezivanje odgovarajućih pinova 4, 6, 11, 12, 13 i 14 sa 1602 ekrana (pogledajte tabelu 1). Nakon toga, u Arduino kodu, inicijaliziramo lcd() na sljedeći način:

LiquidCrystal lcd(0, 1, 2, 3, 4, 5);

Ovaj dio koda objašnjava Arduinu tačno kako je LCD zaslon povezan.

Cijeli izvorni fajl projekta meteorološke stanice, koji koristi LCD 1602 displej, može se preuzeti sa ovog linka.

LCD 1602A, Arduino i svjetlosni senzor (fotootpornik)

U primjeru ćemo pogledati povezivanje modifikacije zaslona - 1602A i fotootpornika. Kao rezultat ovog projekta, moći ćemo prikazati numeričke vrijednosti proporcionalne intenzitetu svjetlosti na displeju.


Ovaj primjer će biti dobar početak za početnike da razumiju Arduino. Vrijedi napomenuti da ekran 1602 ima različite modifikacije. Shodno tome, lokacija kontakata na njima može se malo razlikovati.

Neophodni materijali

  • 1 Arduino UNO;
  • 1 matična ploča (63 šine);
  • 1 svjetlosni senzor (fotootpornik);
  • 1 potenciometar 50 kOhm;
  • 1 LCD displej 1602A;
  • 1 otpornik 10 kOhm;
  • 1 šina konektora (16 pinova);
  • 1 USB kabl.

LCD ekran 1602A

Displeji se obično prodaju bez zalemljenih konektora. Odnosno, morat ćete držati lemilicu u rukama. Trebaće vam 16 iglica. Zalemite sa strane kratke noge, ostavite duge noge za dalje povezivanje na ploču ili druge periferne uređaje.

Nakon odlemljenja, možete instalirati ekran na matičnu ploču. Po mogućnosti na najnižoj stazi, tako da i dalje imate mogućnost da povežete ekran preko dodatnih konektora na ploču.

Povezivanje 1602A displeja na Arduino

Prva stvar koju treba da uradite je napajanje ekrana. Povežite dva kabla od +5 volti i uzemljenja na odgovarajuće plus/minus redove na matičnoj ploči.

Povežite: pin od 5 volti (5V) iz Arduina na jednu od staza na matičnoj ploči.

Povežite: Arduino uzemljenje (GND) pin na drugu stazu (masterboard).

Nakon toga povezujemo napajanje ekrana i njegovo pozadinsko osvjetljenje na staze na matičnoj ploči, na kojima dobivamo 5 volti i minus.

Povežite: GND (minus) stazu na matičnoj ploči na pin 1 na LCD ekranu (označen VSS).

Povežite: 5 volti (plus) stazu na matičnoj ploči na pin 2 na LCD ekranu (označen VDD).

Povežite: 5 volti (plus) stazu na matičnoj ploči na pin 15 na LCD ekranu (označen A).

Povežite: GND (minus) stazu na matičnoj ploči na pin 16 na LCD ekranu (označen K).

Povezujemo naš Arduino sa personalnim računarom preko USB kabla i voila! Ekran bi se trebao uključiti.

Sljedeći korak je povezivanje potenciometra za podešavanje kontrasta zaslona. Većina vodiča koristi potenciometar od 10 k oma, ali će i 50 k oma raditi. Zbog većeg raspona vrijednosti otpora na izlazu potenciometra, preciznije podešavanje postaje teže, ali za nas u ovom slučaju to nije kritično. Postavite potenciometar na matičnu ploču i povežite njegova tri pina.

Spojite: prvi pin potenciometra na negativ na matičnoj ploči.

Spojite: srednji pin potenciometra na pin 3 na displeju (označen V0).

Spojite: treći pin potenciometra na plus na matičnoj ploči.

Nakon što se ploča napaja putem USB kabla, prvi red displeja treba popuniti pravougaonicima. Ako ih ne vidite, lagano okrenite potenciometar s lijeva na desno kako biste podesili kontrast. Kasnije, kada prikažemo numeričke vrijednosti na ekranu, moći ćete preciznije podesiti kontrast. Ako vaš ekran izgleda otprilike ovako, radite kako treba:

Hajde da nastavimo. Sada moramo komunicirati između Arduina i 1602A LCD-a da prikažemo znakove.

Da biste to učinili, spojite 4 pina displeja (RS) na 7 pinova Arduina (žuti konektor). Displej pin 5 (RW) – na red pinova za uzemljenje na matičnoj ploči (crni kabl).

Display pin 6 (E) – na Arduino pin 8 (PWM).

Display pin 11 (D4) – na Arduino pin 9 (PWM).

Display pin 12 (D5) – na Arduino pin 10 (PWM).

Display pin 13 (D6) – na Arduino pin 11 (PWM).

Display pin 14 (D7) – na Arduino pin 12 (PWM).

Program za Arduino IDE - prikaz teksta na displeju 1602A

Komad koda predstavljen u nastavku samo treba da se kopira i zalijepi u Arduino IDE i učita na ploču:

#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

lcd.begin(16, 2);

lcd.setCursor(0,1);

lcd.write("SVJETLOST: ");

Nakon učitavanja programa na ploču, u drugom redu displeja će se pojaviti sljedeća poruka:

Neka vrsta "zdravo svijete!" lansiran na LCD 1602A. Čestitam ti.

Povezujemo fotootpornik i učitavamo cijeli program na Arduino

Sada spojimo fotootpornik. Povežite tri žice na slobodne šine na matičnoj ploči (nazovimo ih 1, 2, 3). Ostavite malo prostora u šinama za sam senzor svjetlosti i otpornik.

Povezujemo GND šinu sa matične ploče na šinu 1. A0 (analogni ulaz) sa Arduina - na šinu 2. 5 volti sa matične ploče - na šinu 3.

Zatim povezujemo naš senzor i otpornik na pripremljene šine. Koje noge idu na tlo, a koje na napajanje nije bitno za naš svjetlosni senzor i otpornik (za razliku od npr. LED-a koji ima katodu i anodu). Dakle, ovdje nema zabune.

Priključujemo svjetlosni senzor na šinu 1 i šinu 2. Otpornik je spojen na šinu 2 i šinu 3.

Sada se vratimo na naš program i dodamo nekoliko redaka u trenutno prazno tijelo funkcije loop():

int senzorValue = analogRead(A0);

lcd.setCursor(7,1);

lcd.print(sensorValue);

Nakon upload-ovanja konačne verzije našeg programa na Arduino, displej će prikazati trenutne vrijednosti nivoa svjetlosti.

Postoji veliki broj varijanti teksta, ili kako ih još nazivaju, ekrani od tečnih kristala koji sintetizuju karaktere. Najčešći displeji su bazirani na HD44780 čipovima kompanije Hitachi, KS0066 iz Samsunga ili kompatibilni sa njima. Za rad sa takvim ekranima postoji standardna Arduino biblioteka Liquid Crystal.

Takvi prikazi uključuju, posebno, tekstualne ekrane kompanije Melt. Ovaj članak detaljno opisuje dijagram povezivanja za ovaj ekran, ali je pogodan i za mnoge druge tekstualne prikaze.

Članak opisuje opća načela. Možete ići na detaljan opis vašeg displeja:

Potrebne komponente

Veza

Pričvrstite ekran na matičnu ploču i povežite +5 V napajanje i uzemljenje od Arduina na šine napajanja matične ploče.

Snaga i zemlja će vam trebati više puta, pa ih je zgodnije baciti na šine.

Uključite pozadinsko osvetljenje

Pozadinsko osvjetljenje displeja je zasebno kolo, nije povezano sa ostalima. Možete ga uključiti tako što ćete primijeniti +5 V na 15. pin displeja i spojiti 16. pin na masu. Povezivanjem ova dva pina na odgovarajuće šine, možete uključiti Arduino i vidjeti kako zaslon svijetli.

Imajte na umu da na nekim modelima numeriranje kontakata nije samo s desna na lijevo od prvog do šesnaestog, već je nešto lukavije. Tako, na primjer, na ekranu 16×2 od Melt-a, prvi kontakt se fizički nalazi na 14. poziciji, drugi na 13. i tako s desna na lijevo do 14. na prvoj poziciji, a 15. i 16. nalaze se desno. Numerisanje u blizini kontakata na ekranu će vam pomoći da izbegnete zabunu.

Uključivanje napajanja sintisajzera karaktera

    Prvi je zemljište. Spojite ga na šinu za uzemljenje.

    Druga je ishrana. Spojite ga na +5V šinu.

    Treći je kontrast. Za maksimalni kontrast, spojite ga na šinu za uzemljenje. Na ovaj kontakt možete primijeniti proizvoljan napon od 0 do 5 V; što je veći, to će slika biti prigušena, ali će se u isto vrijeme smanjiti potrošnja energije. Da biste mogli glatko podesiti kontrast, možete primijeniti izlazni signal potenciometra na ovaj kontakt.

Nakon povezivanja, ako uključite Arduino, možete vidjeti pravokutne poznate prostore. Ovisno o kombinaciji boja teksta i pozadinskog osvjetljenja, one mogu biti svijetle i jasno vidljive ili jedva primjetne. To je normalno: u svakom slučaju, tekst će izgledati sjajno.

Veza sa sabirnicom podataka

Za komunikaciju između Arduina i ekrana potrebno je koristiti nekoliko komunikacijskih linija:

    2 ili 3 za prikaz komande

    4 ili 8 za prijenos podataka (kodovi znakova i komande)

Tako će od 6 do 11 kontakata sa oba uređaja biti zauzeto. Ako ti ne treba čitaj sa ekrana, koji odgovara većini scenarija upotrebe, komande će zahtijevati 2 reda.

Ako brzina ažuriranja podataka također nije problem, 4 reda su dovoljne za prijenos podataka.

Dakle, za povezivanje displeja dovoljno je koristiti 6 linija, 6 pinova na Arduinu. Hajde da razmotrimo ovaj konkretni scenario.

Kao što je pomenuto, nemamo šta da čitamo sa ekrana, samo ćemo pisati na njega. Stoga povezujemo 5. pin displeja, koji je odgovoran za odabir čitanja/pisanja, na uzemljenje. To znači "uvijek piši".

Zatim povezujemo Arduino i ekran sa naših 6 komunikacijskih linija. Nije bitno koji će kontakti biti odabrani na Arduinu: navest ćemo ih u programu, ali za primjer smo odabrali sljedeću konfiguraciju:

    Displej pin 6 je Arduino pin 5. Ovo je linija dozvole za pristup podacima. Poznato kao E ili Enable. Kada ovaj red postane jedan, ekran izvršava naredbu ili izlazi znak iz linije podataka.

    11., 12., 13., 14. pin ekrana su 10., 11., 12., 13. Arduino pin. Ovo su linije podataka. Poznat kao DB4, DB5, DB6, DB7.

Ekran je povezan i spreman za primanje podataka. Ostaje samo napisati program za Arduino.

Programiranje

Za izlaz teksta iz Arduina, najpogodnije je koristiti ugrađenu biblioteku Liquid Crystal. Za prikaz pozdrava i tajmera koristite kod poput ovog:

Hello.pde #include lcd.begin(16, 2); // ispisuje prvi red lcd.print("Zdravo svijete!"); // postavite kursor u kolonu 0, red 1. To jest, on // ovo je zapravo drugi red, jer numerisanje počinje od nule lcd.setCursor(0, 1); // ispisuje drugi red lcd.print ("foo bar baz"); ) void loop() ( )

Sve je prilično jednostavno i trebalo bi da bude jasno iz komentara.

Ćirilica

Informacije u ovom odeljku odnose se posebno na displeje kompanije Melt. Kineske i evropske kolege verovatno neće imati ćirilicu u svom skupu znakova; pogledajte dokumentaciju za ekran da biste saznali više o tome.

Štampanje ruskih slova nije sasvim trivijalno: ne možete samo napisati lcd.print("Vasya") . Ovo je povezano sa konceptom kodiranja. Znate da svaki znak ima odgovarajući kod i pri kompajliranju programa, ako string sadrži ćirilicu, on će se konvertovati u kodove pomoću utf-8, cp-1251 ili neke druge tabele, u zavisnosti od podešavanja kompajlera. Ekran, zauzvrat, očekuje da vidi podatke u svom sopstvenom kodiranju.

Na primjer, slovo “I” odgovara kodu B1 u heksadecimalnom sistemu. Da biste prenijeli niz "Yandex" na ekran, morate eksplicitno ugraditi kod karaktera u niz koristeći sekvencu \x##:

LCD.print(" \xB1 indeks") ;

Možete miješati regularne znakove i eksplicitne kodove u jednom redu kako želite. Jedino upozorenje je da nakon što kompajler vidi sekvencu \x u redu, on čita sve znakove iza njega koji mogu biti cifre heksadecimalnog sistema, čak i ako ih ima više od dva. Zbog toga, ne možete jednostavno koristiti znakove u rasponu 0-9, a-f nakon kojih slijedi dvocifreni kod: to će uzrokovati grešku pri kompilaciji. Da biste zaobišli ovu tačku, možete koristiti činjenicu da su dva reda napisana jedan pored drugog zalijepljena. Dakle, ako želite napisati "Yeee":

LCD.print(" \xB1 eee") ; // greška lcd.print(" \xB1""eee" ); // Desno

Na primjer, za pisanje “Pozdrav iz Amperke” korišten je kod:

cyrillic.pde #include LiquidCrystal lcd(4, 5, 10, 11, 12, 13); void setup() ( lcd.begin(16, 2) ; lcd.print(" \xA8 p\xB8 \xB3 ""e \xBF") ; lcd.setCursor(0, 1); lcd.print(" o \xBF A\xBC \xBE ""ep \xBA\xB8") ; ) void loop() ( )

Prebacivanje stranica generatora znakova

Modul displeja pohranjuje dvije stranice generatora znakova u memoriju. Zadana vrijednost je nula stranica. Za promjenu stranice koristite metodu command(0x101010) i obrnuto - command(0x101000).

Displej ne može istovremeno prikazati znakove sa različitih stranica.

Pogledajmo primjer u kojem će se isti red mijenjati ovisno o odabranoj stranici.

change_page.ino // Uključuje standardnu ​​biblioteku LiquidCrystal#include // Inicijalizirati ekranski objekt, prenijeti korišteni // za povezivanje pinova na Arduinu su u redu:// RS, E, DB4, DB5, DB6, DB7 LiquidCrystal lcd(4, 5, 10, 11, 12, 13) ; void setup() ( // postavlja veličinu (broj kolona i redova) ekrana lcd.begin(16, 2); ) void loop() ( // postavite stranicu generatora znakova na 0 (ovo je zadano) lcd.command(0b101000); // ispisuje prvi red lcd.print(" \x9b \x9c \x9d \x9e \x9f ") ; // čekati 1 sekundu delay(1000) ; // instalirati stranicu generatora 1 karaktera lcd.command(0b101010); // čekati 1 sekundu delay(1000) ; // brisanje ekrana lcd.clear(); )

Svaki radio-amater nakon određenog broja jednostavnih domaćih projekata dolazi do cilja da pomoću senzora i tipki konstruira nešto grandiozno. Na kraju krajeva, mnogo je zanimljivije prikazati podatke na displeju, a ne na monitoru porta. Ali onda se postavlja pitanje: koji ekran odabrati? I općenito, kako ga povezati, šta je potrebno za povezivanje? Odgovori na ova pitanja bit će razmatrani u ovom članku.

LCD 1602

Među brojnim opcijama prikaza, posebno bih izdvojio LCD1602 displej baziran na HD4478 kontroleru. Ovaj ekran je dostupan u dvije boje: bijela slova na plavoj pozadini, crna slova na žutoj pozadini. Povezivanje LCD 1602 na Arduino također neće uzrokovati probleme, jer postoji ugrađena biblioteka i nema potrebe za preuzimanjem bilo čega dodatnog. Displeji se razlikuju ne samo po cijeni, već i po veličini. Radio amateri često koriste 16 x 2, odnosno 2 reda od 16 znakova. Ali postoji i 20 x 4, gdje postoje 4 reda od 20 znakova. Dimenzije i boja ne igraju nikakvu ulogu u povezivanju lcd 1602 displeja na Arduno, oni su povezani na isti način. Ugao gledanja je 35 stepeni, vreme odziva ekrana je 250 ms. Može raditi na temperaturama od -20 do 70 stepeni Celzijusa. Tokom rada koristi 4 mA za ekran i 120 mA za pozadinsko osvetljenje.

Gdje se koristi?

Ovaj zaslon je popularan ne samo među radio amaterima, već i među velikim proizvođačima. Na primjer, štampači i aparati za kafu također koriste LCD1602. To je zbog niske cijene; ​​ovaj ekran košta 200-300 rubalja na kineskim stranicama. Vrijedi ga kupiti tamo, jer su u našim trgovinama cijene za ovaj displej vrlo visoke.

Povezivanje na Arduino

Povezivanje LCD 1602 na Arduino Nano i Uno se ne razlikuje. Sa ekranom možete raditi u dva načina: 4 bita i 8. Kod rada sa 8-bitnim koriste se i bitovi nižeg i visokog reda, a sa 4-bitnim samo oni nižeg reda. Nema posebne svrhe raditi sa 8-bitnim, jer će dodati još 4 kontakta za povezivanje, što nije preporučljivo, jer brzina neće biti veća, ograničenje za ažuriranje ekrana je 10 puta u sekundi. Općenito, za povezivanje LCD 1602 s Arduinom koristi se puno žica, što uzrokuje neke neugodnosti, ali postoje posebni štitovi, ali o tome kasnije. Fotografija prikazuje povezivanje displeja sa Arduino Uno:

Primjer koda:

#include // Dodajte potrebnu LiquidCrystal biblioteku lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup())( lcd.begin(16, 2); // Postavi veličinu ekrana lcd.setCursor(0, 0); // Postavi kursor na početak 1 reda lcd.print("Zdravo, svijet!"); // Iznesite tekst lcd.setCursor(0, 1); // Postavite kursor na početak reda 2 lcd.print("site") ; // Izlaz teksta ) void loop ()( )

Šta radi kod? Prvi korak je povezivanje biblioteke za rad sa ekranom. Kao što je gore spomenuto, ova biblioteka je već uključena u Arduino IDE i ne mora se dodatno preuzimati i instalirati. Zatim se određuju kontakti koji su spojeni na pinove: RS, E, DB4, DB5, DB6, DB7, redom. Zatim je podešena veličina ekrana. Pošto radimo sa verzijom sa 16 znakova i 2 reda, pišemo sljedeće vrijednosti. Postavljamo kursor na početak prvog reda i prikazujemo naš prvi tekst Hello World. Zatim postavite kursor na drugi red i prikažite naziv stranice. To je sve! Razmatrano je povezivanje LCD 1602 na Arduino Uno.

Šta je I2C i zašto je potreban?

Kao što je gore spomenuto, povezivanje ekrana zauzima puno kontakata. Na primjer, kada radite s više senzora i LCD zaslonom, 1602 pina jednostavno neće biti dovoljne. Radio amateri često koriste Uno ili Nano verzije, koje nemaju mnogo kontakata. Tada su ljudi smislili posebne štitove. Na primjer, I2C. Omogućava vam da povežete ekran sa samo 4 pina. Ovo je duplo više. I2C modul se prodaje odvojeno, gdje ga trebate sami zalemiti, i već je zalemljen na LCD 1602 displej.

Povezivanje pomoću I2C modula

Povezivanje LCD 1602 sa Arduino Nano sa I2C zauzima malo prostora, samo 4 pina: uzemljenje, napajanje i 2 izlaza podataka. Povezujemo napajanje i uzemljenje na 5V i GND na Arduinu, respektivno. Preostala dva kontakta: SCL i SDA povezujemo na bilo koje analogne pinove. Na fotografiji možete vidjeti primjer povezivanja lcd 1602 na arduino sa I2C modulom:

Programski kod

Ako je za rad sa ekranom bez modula bilo potrebno koristiti samo jednu biblioteku, onda su za rad sa modulom potrebne dvije biblioteke. Jedan od njih je već uključen u Arduino IDE - Wire. Druga biblioteka, LiquidCrystal I2C, mora se posebno preuzeti i instalirati. Da biste instalirali biblioteku u Arduino, sadržaj preuzete arhive mora biti učitan u korijenski direktorij Libraries. Primjer programskog koda koji koristi I2C:

#include #include LiquidCrystal_I2C lcd(0x27,16,2); // Postavite void setup() ( lcd.init(); lcd.backlight(); // Uključite pozadinsko osvjetljenje ekrana lcd..setCursor(8, 1); lcd.print("LCD 1602"); ) void loop( ) ( // Postavite kursor na drugi red i nulti znak. lcd.setCursor(0, 1); // Prikazuje broj sekundi od pokretanja Arduina lcd.print(millis()/1000); )

Kao što vidite, kod je skoro isti.

Kako dodati vlastiti simbol?

Problem kod ovih displeja je što ne postoji podrška za ćirilično pismo i simbole. Na primjer, trebate učitati neki simbol u ekran tako da ga može odražavati. Da biste to učinili, zaslon vam omogućava da kreirate do 7 vlastitih simbola. Zamislite sto:

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

Ako je 0 - tu nema ničega, ako je 1 - ovo je obojeno područje. U gornjem primjeru možete vidjeti kreiranje simbola "nasmiješenog smajlija". Koristeći primjer programa u Arduinu to bi izgledalo ovako:

#include #include // Dodajte potrebnu biblioteku // Bit maska ​​bajta simbola osmijeha smile = ( B00010, B00001, B11001, B00001, B11001, B00001, B00010, ); LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup())( lcd.begin(16, 2); // Postavi veličinu ekrana lcd.createChar(1, osmijeh); // Kreiraj broj karaktera 1 lcd.setCursor(0, 0); // Postavite kursor na početak reda 1 lcd.print("\1"); // Prikaži smajli (znak broj 1) - "\1" ) praznina petlja ())( )

Kao što vidite, bitmask je kreiran isto kao i tabela. Jednom kreiran, može se prikazati kao varijabla na ekranu. Zapamtite da u memoriju možete pohraniti samo 7 znakova. U principu, ovo je dovoljno. Na primjer, ako trebate prikazati simbol stepena.

Problemi u kojima ekran možda neće raditi

Postoje slučajevi kada ekran ne radi. Na primjer, uključuje se, ali ne prikazuje znakove. Ili se uopšte ne uključuje. Prvo provjerite da li ste ispravno spojili pinove. Ako ste koristili LCD 1202 vezu s Arduinom bez I2C, vrlo je lako zapetljati se u žice, što može uzrokovati da zaslon ne radi ispravno. Takođe treba da vodite računa o povećanju kontrasta ekrana, jer se sa minimalnim kontrastom ne vidi ni da li je LCD 1602 uključen ili ne. Ako to ne pomogne, onda možda problem leži u lemljenju kontakata, to je kada se koristi I2C modul. Još jedan uobičajeni razlog zašto ekran možda ne radi je netačna postavka I2C adrese. Činjenica je da postoji mnogo proizvođača, i oni mogu staviti drugu adresu, morate to ispraviti ovdje:

LiquidCrystal_I2C lcd(0x27,16,2);

U zagradama možete vidjeti dvije vrijednosti, 0x27 i 16.2 (16.2 je veličina ekrana, a 0x27 je I2C adresa). Umjesto ovih vrijednosti, možete pokušati postaviti 0x37 ili 0x3F. Pa, drugi razlog je jednostavno neispravan LCD 1602. S obzirom da je gotovo sve za Arduino proizvedeno u Kini, ne možete biti 100% sigurni da kupljeni proizvod nije neispravan.

Prednosti i mane LCD 1602

Pogledajmo prednosti i nedostatke LCD 1602 ekrana.

  • Cijena. Ovaj modul se može kupiti po vrlo pristupačnoj cijeni u kineskim trgovinama. Cijena je 200-300 rubalja. Ponekad se čak prodaje zajedno sa I2C modulom.
  • Jednostavan za povezivanje. Vjerovatno ovih dana niko ne povezuje LCD 1602 bez I2C. A sa ovim modulom, veza traje samo 4 kontakta, neće biti "mreža" žica.
  • Programiranje. Zahvaljujući gotovim bibliotekama, rad sa ovim modulom je lak, sve funkcije su već napisane. A ako trebate dodati vlastiti simbol, potrebno je samo nekoliko minuta.
  • Tokom njegove upotrebe od strane hiljada radio-amatera, nisu uočeni veći nedostaci, samo postoje slučajevi neispravne kupovine, jer se uglavnom koriste kineske verzije displeja.

Ovaj članak se bavio povezivanjem 1602 sa Arduinom, a takođe je dao primere programa za rad sa ovim ekranom. Zaista je jedan od najboljih u svojoj kategoriji; nije slučajno da ga hiljade radio amatera biraju za svoje projekte!

Arduino LCD ekran vam omogućava da vizuelno prikažete podatke senzora. Reći ćemo vam kako pravilno povezati LCD monitor na Arduino preko I2C i pogledati osnovne naredbe za inicijalizaciju i kontrolu LCD 1602. Također ćemo pogledati različite funkcije u C++ programskom jeziku za prikaz tekstualnih informacija na displeju , koji je često potreban za korištenje u Arduino projektima.

Video. Arduino LCD ekran I2C 1602

LCD 1602 I2C veza sa Arduinom

I2C je serijska dvožična magistrala za komunikaciju integrisanih kola unutar elektronskih uređaja, poznata kao I²C ili IIC (Inter-Integrated Circuit). I²C je Philips razvio ranih 1980-ih kao jednostavnu 8-bitnu magistralu za internu komunikaciju između kola u kontrolnoj elektronici (npr. matične ploče računara, mobilni telefoni, itd.).

U jednostavnom I²C sistemu može postojati nekoliko slave uređaja i jedan glavni uređaj koji inicira prenos podataka i sinhronizuje signal. Više slave uređaja može se povezati na SDA (linija podataka) i SCL (voda sata) linije. Često je glavni uređaj Arduino kontroler, a slave uređaji su sat realnog vremena ili LCD ekran.

Kako spojiti LCD 1602 na Arduino preko I2C

1602 LCD ekran sa I2C modulom povezan je na Arduino ploču sa samo 4 žice - 2 žice za podatke i 2 žice za napajanje. 1602 priključak displeja se izvodi kao standard za I2C sabirnicu: pin S.D.A. spaja na port A4, izlaz SCL– na port A5. LCD ekran se napaja iz +5V porta na Arduinu. Pogledajte dijagram povezivanja 1602 LCD monitora na slici ispod za više detalja.

Za ovu lekciju trebat će nam sljedeći detalji:

  • Arduino Uno / Arduino Nano / Arduino Mega ploča;
  • LCD monitor 1602;
  • 4 muško-ženske žice.

Nakon povezivanja LCD monitora na Arduino preko I2C, morat ćete instalirati biblioteku LiquidCrystal_I2C.h za rad sa LCD displejom preko I2C interfejsa i biblioteke Wire.h(dostupno u standardnom Arduino IDE programu). Radnu biblioteku LiquidCrystal_I2C.h za LCD 1602 sa I2C modulom možete preuzeti na stranici Arduino biblioteke na našoj web stranici putem direktne veze sa Google diska.

Skica za 1602 displej sa I2C

#include // biblioteka za upravljanje uređajima preko I2C#include // povezivanje biblioteke za LCD 1602 LiquidCrystal_I2C lcd(0x27,20,2); // dodijeli ime LCD-u za 20x2 displej void setup () // postavljanje procedure ( lcd.init (); // inicijalizira LCD zaslon lcd.backlight(); // omogući pozadinsko osvjetljenje ekrana lcd.setCursor(0,0); // postavite kursor na 1 znak prvog reda lcd.print("VOLIM"); // ispis poruke u prvom redu lcd.setCursor(0,1); // postavite kursor na 1 znak drugog reda lcd.print("ARDUINO"); // ispis poruke u drugom redu) void loop () // petlja procedure ( /* ovo je višelinijski komentar // u početku se procedura void loop() ne koristi u skici lcd.noDisplay(); // isključiti kašnjenje pozadinskog osvjetljenja LCD ekrana (500); // pauza lcd.display(); // uključiti kašnjenje pozadinskog osvjetljenja LCD ekrana (500); // pauza */ }

Objašnjenja za kod:

  1. biblioteka LiquidCrystal_I2C.h sadrži mnoge komande za kontrolu LCD ekrana preko I²C magistrale i omogućava vam da značajno pojednostavite skicu;
  2. Skica sadrži višeredni komentar /* ... */, koji vam omogućava da komentarišete nekoliko redova u programu odjednom.
  3. Prije prikaza informacija na displeju, morate postaviti poziciju kursora naredbom setCursor(0,1) , gdje je 0 broj karaktera u retku, 1 je broj reda.

Najbolji članci na ovu temu