Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Siguranță
  • Arduino și afișaj LCD cu caractere. Conectarea ecranului LCD la Arduino

Arduino și afișaj LCD cu caractere. Conectarea ecranului LCD la Arduino

Display cu cristale lichide (LCD), abreviat LCD, se bazează pe tehnologia cu cristale lichide. Când proiectăm dispozitive electronice, avem nevoie de un dispozitiv ieftin pentru a afișa informații, iar al doilea factor la fel de important este disponibilitatea bibliotecilor gata făcute pentru Arduino. Dintre toate afișajele LCD disponibile pe piață, cel mai des folosit este LCD 1602A, care poate afișa caractere ASCII pe 2 linii (16 caractere pe 1 linie) fiecare caracter într-o matrice de 5x7 pixeli. În acest articol ne vom uita la elementele de bază ale conectării unui display la Arduino.

Specificatii tehnice

Tensiune de alimentare: 5 V
Dimensiunea ecranului: 2,6 inchi
Tip de afișare: 2 rânduri x 16 caractere
Culoare iluminare de fundal: albastru
Culoarea caracterului: alb
Dimensiuni: 80mm x 35mm x 11mm

Afișează Descriere

LCD 1602A este un modul electronic bazat pe driverul HD44780 de la Hitachi. LCD1602 are 16 pini și poate funcționa în modul de 4 biți (folosind doar 4 linii de date) sau modul de 8 biți (folosind toate cele 8 linii de date), sau poate fi utilizată o interfață I2C. În acest articol voi vorbi despre conectarea în modul pe 4 biți.

Misiunea de contact:
VSS: modul de alimentare cu „-”.
VDD: alimentare modul „+”.
VO: Pin de control al contrastului
RS: Înregistrare Selectare
RW: Selectați modul de scriere sau citire (când este conectat la masă, setați modul de scriere)
E: Poarta de toamna
DB0-DB3: Biți de interfață
DB4-DB7: Biți de interfață
A: Putere de iluminare de fundal „+”.
K: "-" putere de iluminare de fundal

Pe partea frontală a modulului există un afișaj LCD și un grup de contacte.

Pe spatele modulului sunt două cipuri cu design „picături” (ST7066U și ST7065S) și cablaje electrice, nu văd rostul să desenăm o diagramă de circuit, o să vă spun doar despre rezistența R8 (100 Ohm), care servește drept rezistor limitator pentru iluminarea de fundal cu LED, astfel încât să puteți conecta 5V direct la pinul A. Puțin mai târziu voi scrie un articol în care vă voi spune cum puteți schimba iluminarea de fundal a unui afișaj LCD folosind un PWB și un tranzistor.

Conectarea LCD 1602A la Arduino (mod 4 biți)

Piese necesare:
Arduino UNO R3 x 1 buc.
Display LCD 1602A (2×16, 5V, Albastru) x 1 buc.
Sârmă DuPont, 2,54 mm, 20 cm, F-F (femă - feminin) x 1 buc.
Potențiometru 10 kOhm x 1 buc.
Conector PLS-16 x 1 buc.
Placă de dezvoltare MB-102 x 1 buc.
Cablu USB 2.0 A-B x 1 buc.

Conexiune:
Pentru conectare vom folosi o placă de dezvoltare; diagrama și tabelul pentru conectarea LCD1602a la Arduino în modul 4 biți pot fi văzute în figura de mai jos.

Conectarea afișajului la placa de breadboard se va face prin intermediul pinii PLS-16 (trebuie să fie lipiți pe afișaj). Instalați modulul de afișare în placa de breadboard și conectați VDD de alimentare (al doilea pin) la 5V (Arduino) și VSS (primul pin) la GND (Arduino), apoi conectați RS (al patrulea pin) la pinul digital 8 (Arduino). Împământați RW (al 5-lea pin) conectându-l la GND (Arduino), apoi conectați pinul E la pinul 8 (Arduino). Pentru o conexiune pe 4 biți, sunt necesari patru pini (DB4 la DB7). Conectați pinii DB4 (al 11-lea pin), DB5 (al 12-lea pin), DB6 (al 13-lea pin) și DB7 (al 14-lea pin) la pinii digitali Arduino 4, 5, 6 și 7. Potențiometrul 10K este utilizat pentru reglarea contrastului afișajului, schema de conectare pentru ecranul LCD 1602a este prezentat mai jos

Biblioteca este deja inclusă în Arduino IDE și nu este nevoie să o instalați. Copiați și inserați acest exemplu de cod în fereastra programului Arduino IDE și încărcați-l în controler.

/* Testarea a fost efectuată pe Arduino IDE 1.6.11 Data testului 20/09/2016. */ #include LiquidCrystal lcd (8, 9, 4, 5, 6, 7); void setup() ( lcd.begin(16, 2); // Inițializează LCD 16x2 ) void loop() ( lcd.setCursor(0,0); // Setează cursorul pe prima linie lcd.print("Bună ziua, world"); // Imprimați textul lcd.setCursor(0,1); // Setați cursorul pe a doua linie lcd.print ("www.robotchip.ru"); // Imprimați textul )

Testarea a fost efectuată pe Arduino IDE 1.6.11

Data testului: 20.09.2016

#include

LCD cristal lichid (8, 9, 4, 5, 6, 7);

void setup()

lcd. începe (16, 2); // Inițializează LCD 16x2

buclă goală ()

lcd. print ("Bună, lume"); // Imprimă text

lcd. print ("www.robotchip.ru"); // Imprimă text

Descărcați programul

Un pic despre program.
Pentru a facilita comunicarea dintre Arduino și afișajul LCD, se folosește biblioteca încorporată în Arduino IDE " LiquidCrystal.h « - care este scris pentru ecrane LCD folosind HD44780 (Hitachi) chipset (sau cipuri compatibile). Această bibliotecă poate gestiona atât conexiunea LCD în modul 4 biți, cât și în modul 8 biți.

Display cu cristale lichide (LCD) mod. 1602 (fișa de date) este o alegere excelentă pentru proiectele dumneavoastră.

Primul lucru care ne mulțumește este prețul mic. Al doilea este disponibilitatea bibliotecilor gata făcute pentru Arduino. În al treilea rând, există mai multe modificări, care vin și cu diferite lumini de fundal (albastru, verde). În acest articol ne vom uita la elementele de bază ale conectării acestui afișaj la Arduino și vom oferi un exemplu de proiect mic pentru a afișa nivelul de lumină pe un afișaj folosind un fotorezistor.

Contacte și schema de conectare a LCD 1602 la Arduino

Știfturile de pe acest afișaj sunt numerotate de la 1 la 16. Sunt amplasate pe spatele plăcii. Cum se conectează exact la Arduino este prezentat în tabelul de mai jos.

Masa 1. Conectarea LCD 1620 pini la Arduino

Conectarea 1602 la Arduino Dacă afișajul 1602 este alimentat de la Arduino printr-un cablu USB de 5 volți și pinul corespunzător, o valoare de 2 kOhm poate fi utilizată pentru pinul de contrast al afișajului (al treilea conector - Contrast). Pentru contactul Back LED+, puteți utiliza un rezistor de 100 Ohm. De asemenea, puteți utiliza un rezistor variabil - potențiometru pentru a regla manual contrastul.

Pe baza tabelului 1 și a diagramei de mai jos, conectați afișajul LCD la Arduino. Pentru a vă conecta veți avea nevoie de un set de conductori. Este recomandabil să folosiți fire de culori diferite pentru a evita confuzia.

Masa 2. Culori preferate ale conductorilor

Schema de conectare pentru afișajul LCD 1602 la Arduino:


Exemplu de program de bază pentru lucrul LCD 1602 cu Arduino

Exemplul folosește pinii Arduino 0, 1, 2, 3, 4 și 5 pentru a conecta pinii corespunzători 4, 6, 11, 12, 13 și 14 de pe afișajul 1602 (vezi Tabelul 1). După aceea, în codul Arduino, inițializam lcd() după cum urmează:

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

Această bucată de cod explică Arduino exact cum este conectat afișajul LCD.

Întregul fișier sursă al proiectului stației meteo, care utilizează afișajul LCD 1602, poate fi descărcat de pe acest link.

LCD 1602A, Arduino și senzor de lumină (fotorezistor)

În exemplu, ne vom uita la conectarea unei modificări de afișare - 1602A și a unui fotorezistor. Ca urmare a acestui proiect, vom putea afișa valori numerice proporționale cu intensitatea luminii de pe afișaj.


Acest exemplu va fi un bun început pentru începătorii să înțeleagă Arduino. Este de remarcat faptul că afișajul 1602 are diverse modificări. În consecință, locația contactelor de pe ele poate diferi ușor.

Materiale necesare

  • 1 Arduino UNO;
  • 1 panou (63 șine);
  • 1 senzor de lumină (fotorezistor);
  • 1 potențiometru 50 kOhm;
  • 1 display LCD 1602A;
  • 1 rezistor 10 kOhm;
  • 1 șină de conectori (16 pini);
  • 1 cablu USB.

Display LCD 1602A

Display-urile sunt de obicei vândute fără conectori lipiți. Adică va trebui să ții fierul de lipit în mâini. Veți avea nevoie de 16 ace. Lipiți pe partea laterală a picioarelor scurte, lăsați picioarele lungi pentru o conexiune ulterioară la placă sau alte dispozitive periferice.

După dezlipire, puteți instala afișajul pe placa. De preferință, pe calea cea mai de jos, astfel încât să aveți în continuare posibilitatea de a conecta afișajul prin conectori suplimentari la placă.

Conectarea display-ului 1602A la Arduino

Primul lucru pe care trebuie să-l faceți este să porniți afișajul. Conectați cele două cabluri de la +5 volți și împământare la rândurile corespunzătoare plus/minus de pe placa de laborator.

Conectați: pinul de 5 volți (5V) de la Arduino la una dintre pistele de la placa.

Conectați: pinul de masă al lui Arduino (GND) la o altă pistă (placă).

După aceasta, conectăm puterea ecranului și iluminarea de fundal a acestuia la pistele de pe placa, pe care obținem 5 volți și minus.

Conectați: pista GND (minus) de pe placa de breadboard la pinul 1 de pe ecranul LCD (etichetat VSS).

Conectați: pista de 5 volți (plus) de pe placa de breadboard la pinul 2 de pe ecranul LCD (etichetat VDD).

Conectați: pista de 5 volți (plus) de pe placa de breadboard la pinul 15 de pe ecranul LCD (etichetat A).

Conectați: pista GND (minus) de pe placa de breadboard la pinul 16 de pe ecranul LCD (etichetat K).

Ne conectăm Arduino la un computer personal printr-un cablu USB și voila! Ecranul ar trebui să se aprindă.

Următorul pas este să conectați un potențiometru pentru a regla contrastul afișajului. Majoritatea ghidurilor folosesc un potențiometru de 10k ohmi, dar și 50k ohmi vor funcționa. Datorită gamei mai mari de valori de rezistență la ieșirea potențiometrului, reglarea mai precisă devine mai dificilă, dar pentru noi, în acest caz, acest lucru nu este critic. Montați potențiometrul pe placa și conectați cei trei pini ai acestuia.

Conectați: primul pin de pe potențiometru la negativul de pe placa.

Conectați: pinul din mijloc al potențiometrului la pinul 3 de pe afișaj (etichetat V0).

Conectați: al treilea pin de pe potențiometru la pozitivul de pe placa.

După ce placa este alimentată prin cablul USB, primul rând al afișajului ar trebui să fie umplut cu dreptunghiuri. Dacă nu le vedeți, rotiți ușor potențiometrul de la stânga la dreapta pentru a regla contrastul. Mai târziu, când vom afișa valori numerice pe ecran, veți putea regla contrastul mai precis. Dacă afișajul tău arată cam așa, ai procedat corect:

Hai sa continuăm. Acum trebuie să comunicăm între Arduino și LCD-ul 1602A pentru a afișa caracterele.

Pentru a face acest lucru, conectați 4 pini ai afișajului (RS) la 7 pini ai Arduino (conector galben). Pinul afișajului 5 (RW) – la rândul de pini de împământare de pe placa de breadboard (cablu negru).

Afișează pinul 6 (E) – la pinul Arduino 8 (PWM).

Afișează pinul 11 ​​(D4) – la pinul Arduino 9 (PWM).

Afișează pinul 12 (D5) – la pinul Arduino 10 (PWM).

Afișează pinul 13 (D6) – la pinul Arduino 11 (PWM).

Afișează pinul 14 (D7) – la pinul Arduino 12 (PWM).

Program pentru Arduino IDE - afișarea textului pe afișajul 1602A

Piesa de cod prezentată mai jos trebuie doar copiată și lipită în Arduino IDE și încărcată pe placă:

#include <LiquidCrystal.h>

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

lcd.begin(16, 2);

lcd.setCursor(0,1);

lcd.write("LUMINĂ: ");

După încărcarea programului pe placă, pe a doua linie a afișajului va apărea următorul mesaj:

Un fel de „bună lume!” lansat pe LCD 1602A. Te felicit.

Conectăm fotorezistorul și încărcăm întregul program în Arduino

Acum să conectăm fotorezistorul. Conectați trei fire la șinele libere de pe placa de breadboard (să le numim 1, 2, 3). Lăsați puțin spațiu în șine pentru senzorul de lumină în sine și pentru rezistență.

Conectăm șina GND de la placa de breadboard la șina 1. A0 (intrare analogică) de la Arduino - la șina 2. 5 volți de la placa - la șina 3.

Apoi ne conectăm senzorul și rezistența la șinele pregătite. Ce picioare merg la pământ și care merg la sursa de alimentare nu contează pentru senzorul și rezistența noastră de lumină (spre deosebire de, de exemplu, un LED, care are un catod și un anod). Deci nu există confuzie aici.

Conectăm senzorul de lumină la șina 1 și șina 2. Rezistorul este conectat la șina 2 și șina 3.

Acum să ne întoarcem la programul nostru și să adăugăm câteva linii în corpul gol al funcției loop():

int sensorValue = analogRead(A0);

lcd.setCursor(7,1);

lcd.print(sensorValue);

După încărcarea versiunii finale a programului nostru pe Arduino, afișajul va afișa valorile actuale ale nivelului de lumină.

Există un număr mare de varietăți de text sau, așa cum sunt numite și ecrane cu cristale lichide, care sintetizează caracterele. Cele mai comune display-uri se bazează pe cipuri HD44780 de la Hitachi, KS0066 de la Samsung sau compatibile cu acestea. Pentru a lucra cu astfel de ecrane, există o bibliotecă standard Arduino Liquid Crystal.

Astfel de afișaje includ, în special, ecrane de text de la Melt. Acest articol descrie în detaliu schema de conectare pentru acest ecran, dar este potrivit și pentru multe alte afișaje de text.

Articolul descrie principiile generale. Puteți accesa descrierea detaliată a afișajului dvs.:

Componente necesare

Conexiune

Atașați ecranul la placa de breadboard și conectați alimentarea de +5 V și masă de la Arduino la șinele de alimentare ale plăcii de laborator.

Veți avea nevoie de putere și de ateriza de mai multe ori, așa că este mai convenabil să le aruncați pe șine.

Porniți lumina de fundal

Iluminarea de fundal a afișajului este un circuit separat, care nu este conectat cu restul. Îl puteți porni aplicând +5 V la al 15-lea pin al afișajului și conectând al 16-lea pin la masă. Conectând acești doi pini la șinele corespunzătoare, puteți porni Arduino și puteți vedea afișajul aprins.

Vă rugăm să rețineți că la unele modele numerotarea contactelor nu este doar de la dreapta la stânga de la primul la al șaisprezecelea, ci ceva mai viclean. Deci, de exemplu, pe un ecran de 16×2 de la Melt, primul contact este situat fizic în a 14-a poziție, al doilea în a 13-a și așa mai departe de la dreapta la stânga până la a 14-a în prima poziție și a 15-a și 16 sunt situate pe dreapta. Numerotarea lângă contactele afișate vă va ajuta să evitați confuzia.

Pornirea puterii sintetizatorului de caractere

    Primul este pământul. Conectați-l la șina de împământare.

    Al doilea este alimentația. Conectați-l la șina +5V.

    Al treilea este contrastul. Pentru un contrast maxim, conectați-l la șina de masă. Puteți aplica o tensiune arbitrară de la 0 la 5 V acestui contact; cu cât este mai mare, cu atât imaginea va fi mai slabă, dar, în același timp, consumul de energie va scădea. Pentru a putea regla ușor contrastul, puteți aplica un semnal de ieșire potențiometru acestui contact.

După conectare, dacă porniți Arduino, puteți vedea spații familiare dreptunghiulare. În funcție de combinația de culori ale textului și iluminarea din spate, acestea pot fi fie luminoase și clar vizibile, fie abia vizibile. Acest lucru este normal: în orice caz, textul va arăta grozav.

Conexiune magistrală de date

Pentru comunicarea dintre Arduino și ecran, trebuie utilizate mai multe linii de comunicare:

    2 sau 3 pentru a afișa comanda

    4 sau 8 pentru transmisia de date (coduri de caractere și comenzi)

Astfel, de la 6 la 11 contacte de pe ambele dispozitive vor fi ocupate. Daca nu ai nevoie citit de pe afișaj, care se potrivește majorității scenariilor de utilizare, comenzile vor necesita 2 linii.

Dacă nici viteza de actualizare a datelor nu este o problemă, 4 linii sunt suficiente pentru a transfera date.

Deci, pentru a conecta display-ul, este suficient să folosiți 6 linii, 6 pini pe Arduino. Să luăm în considerare acest scenariu special.

După cum am menționat, nu avem nimic de citit de pe afișaj, doar îi vom scrie. Prin urmare, conectăm al 5-lea pin al afișajului, care este responsabil pentru selectarea citirii/scrierea, la șina de masă. Aceasta înseamnă „scrie întotdeauna”.

Apoi, conectăm Arduino și ecranul cu cele 6 linii de comunicare ale noastre. Nu contează ce contacte vor fi selectate pe Arduino: le vom specifica în program, dar pentru exemplu am ales următoarea configurație:

    Pinul 6 al afișajului este pinul 5 Arduino. Aceasta este linia de permisiuni de acces la date. Cunoscut ca E sau Enable. Când această linie devine una, afișajul execută o comandă sau scoate un caracter din linia de date.

    Al 11-lea, al 12-lea, al 13-lea, al 14-lea pin de afișare sunt al 10-lea, al 11-lea, al 12-lea, respectiv al 13-lea pin Arduino. Acestea sunt linii de date. Cunoscut ca DB4, DB5, DB6, DB7.

Ecranul este conectat și gata să primească date. Tot ce rămâne este să scriem un program pentru Arduino.

Programare

Pentru a scoate text din Arduino, cel mai convenabil este să utilizați biblioteca încorporată Liquid Crystal. Pentru a afișa salutul și cronometrul, utilizați codul astfel:

Salut.pde #include lcd.begin(16, 2); // imprimă prima linie lcd.print("Bună lume!"); // plasează cursorul în coloana 0, linia 1. Adică pe // aceasta este de fapt a doua linie, deoarece numerotarea începe de la zero lcd.setCursor(0, 1); // imprimă a doua linie lcd.print ("foo bar baz" ); ) bucla void() ( )

Totul este destul de simplu și ar trebui să fie clar din comentarii.

chirilic

Informațiile din această secțiune se aplică în mod specific afișajelor de la Melt. Este puțin probabil ca omologii chinezi și europeni să aibă caractere chirilice în setul de caractere; vă rugăm să consultați documentația pentru afișaj pentru a afla mai multe despre acest lucru.

Tipărirea literelor rusești nu este în întregime banală: nu poți scrie pur și simplu lcd.print("Vasya") . Acest lucru este legat de conceptul de codificări. Știți că fiecare caracter are un cod corespunzător și atunci când compilați un program, dacă un șir conține chirilic, acesta va fi convertit în coduri folosind utf-8, cp-1251 sau alt tabel, în funcție de setările compilatorului. Ecranul, la rândul său, se așteaptă să vadă date în propria sa codificare.

De exemplu, litera „I” corespunde codului B1 din sistemul hexazecimal. Pentru a transmite șirul „Yandex” pe ecran, trebuie să încorporați în mod explicit codul caracterului în șir folosind secvența \x##:

Lcd.print(" \xB1 index") ;

Puteți combina caractere obișnuite și coduri explicite într-o singură linie, după cum doriți. Singura avertizare este că, după ce compilatorul vede secvența \x într-o linie, citește toate caracterele din spatele acesteia care pot fi cifre ale sistemului hexazecimal, chiar dacă există mai mult de două dintre ele. Din acest motiv, nu puteți utiliza pur și simplu caractere din intervalul 0-9, a-f urmate de un cod de caractere din două cifre: va provoca o eroare de compilare. Pentru a ocoli acest punct, puteți folosi faptul că două rânduri scrise unul lângă celălalt sunt lipite. Deci, dacă vrei să scrii „Yeee”:

Lcd.print(" \xB1 eee"); // eroare lcd.print(" \xB1""eee"); // Dreapta

De exemplu, pentru a scrie „Salutări de la Amperka”, a fost folosit codul:

chirilic.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"); ) bucla void() ( )

Schimbarea paginilor generatorului de caractere

Modulul de afișare stochează două pagini generatoare de caractere în memorie. Valoarea implicită este pagina zero. Pentru a schimba pagina, utilizați metoda command(0x101010) și invers - command(0x101000).

Afișajul nu poate afișa caractere din pagini diferite în același timp.

Să ne uităm la un exemplu în care aceeași linie se va schimba în funcție de pagina selectată.

change_page.ino // Includeți biblioteca standard LiquidCrystal#include // Inițializați obiectul ecranului, transferați cel folosit // pentru a conecta pinii de pe Arduino sunt în ordine:// RS, E, DB4, DB5, DB6, DB7 LiquidCrystal lcd(4, 5, 10, 11, 12, 13) ; void setup() ( // setează dimensiunea (numărul de coloane și rânduri) ecranului lcd.begin(16, 2); ) bucla void() ( // setați pagina generatorului de caractere la 0 (aceasta este valoarea implicită) lcd.command(0b101000); // imprimă prima linie lcd.print(" \x9b \x9c \x9d \x9e \x9f "); // așteptați 1 secundă întârziere (1000 ); // instalează o pagină generatoare de caractere lcd.command(0b101010); // așteptați 1 secundă întârziere (1000 ); // șterge afișajul lcd.clear(); )

Fiecare radioamator, după un anumit număr de proiecte simple de casă, ajunge la scopul de a construi ceva grandios folosind senzori și butoane. La urma urmei, este mult mai interesant să afișați datele pe un afișaj, mai degrabă decât pe un monitor de port. Dar atunci apare întrebarea: ce afișaj să alegi? Și, în general, cum să-l conectați, ce este necesar pentru a vă conecta? Răspunsurile la aceste întrebări vor fi discutate în acest articol.

LCD 1602

Dintre numeroasele opțiuni de afișare, aș dori să menționez în mod special afișajul LCD1602 bazat pe controlerul HD4478. Acest afișaj este disponibil în două culori: litere albe pe fond albastru, litere negre pe fond galben. De asemenea, conectarea LCD 1602 la Arduino nu va cauza probleme, deoarece există o bibliotecă încorporată și nu este nevoie să descărcați nimic suplimentar. Ecranele diferă nu numai prin preț, ci și prin dimensiune. Adesea, radioamatorii folosesc 16 x 2, adică 2 rânduri de 16 caractere. Dar există și 20 x 4, unde sunt 4 rânduri de 20 de caractere. Dimensiunile și culoarea nu joacă niciun rol în conectarea afișajului lcd 1602 la Arduno; ele sunt conectate în același mod. Unghiul de vizualizare este de 35 de grade, timpul de răspuns al afișajului este de 250 ms. Poate funcționa la temperaturi de la -20 la 70 de grade Celsius. În timpul funcționării, folosește 4 mA pentru ecran și 120 mA pentru iluminarea de fundal.

Unde este folosit?

Acest afișaj este popular nu numai printre amatorii de radio, ci și printre marii producători. De exemplu, imprimantele și aparatele de cafea folosesc și LCD1602. Acest lucru se datorează prețului său scăzut; acest afișaj costă 200-300 de ruble pe site-urile chinezești. Merită să cumpărați acolo, deoarece în magazinele noastre markupurile pentru acest afișaj sunt foarte mari.

Conectarea la Arduino

Conectarea LCD 1602 la Arduino Nano și Uno nu este diferită. Puteți lucra cu afișajul în două moduri: 4 biți și 8. Când lucrați cu 8 biți, se folosesc atât biții de ordin inferior, cât și biți de ordin înalt, iar la 4 biți, doar cei de ordin inferioară. Nu are rost să lucrezi cu 8 biți, deoarece se vor adăuga încă 4 contacte pentru conectare, ceea ce nu este recomandabil, deoarece viteza nu va fi mai mare, limita pentru actualizările afișajului este de 10 ori pe secundă. În general, pentru a conecta lcd-ul 1602 la Arduino, se folosesc o mulțime de fire, ceea ce provoacă unele inconveniente, dar există scuturi speciale, dar mai multe despre asta mai târziu. Fotografia arată conexiunea afișajului la Arduino Uno:

Cod simplu:

#include // Adăugați biblioteca LiquidCrystal necesară lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup())( lcd.begin(16, 2); // Setați dimensiunea ecranului lcd.setCursor(0, 0); // Setați cursorul la începutul 1 rânduri lcd.print("Bună, lume!"); // Afișează textul lcd.setCursor(0, 1); // Setează cursorul la începutul liniei 2 lcd.print("site") ; // Afișează textul ) bucla void ()( )

Ce face codul? Primul pas este să conectați biblioteca pentru a lucra cu afișajul. După cum am menționat mai sus, această bibliotecă este deja inclusă în Arduino IDE și nu trebuie descărcată și instalată suplimentar. În continuare, se determină contactele care sunt conectate la pini: RS, E, DB4, DB5, DB6, respectiv DB7. Apoi dimensiunea ecranului este setată. Deoarece lucrăm cu o versiune cu 16 caractere și 2 rânduri, scriem următoarele valori. Plasăm cursorul la începutul primei rânduri și afișăm primul text Hello World. Apoi, plasați cursorul pe a doua linie și afișați numele site-ului. Asta e tot! Sa luat în considerare conectarea lcd 1602 la Arduino Uno.

Ce este I2C și de ce este necesar?

După cum am menționat mai sus, conectarea afișajului necesită o mulțime de contacte. De exemplu, atunci când lucrați cu mai mulți senzori și un afișaj LCD, 1602 pini pot să nu fie de ajuns. Adesea, radioamatorii folosesc versiunile Uno sau Nano, care nu au multe contacte. Apoi oamenii au venit cu scuturi speciale. De exemplu, I2C. Vă permite să conectați un afișaj cu doar 4 pini. Aceasta este de două ori mai mult. Modulul I2C este vândut atât separat, unde trebuie să îl lipiți singur, cât și deja lipit pe afișajul LCD 1602.

Conexiune folosind modulul I2C

Conectarea LCD 1602 la Arduino Nano cu I2C ocupă puțin spațiu, doar 4 pini: masă, putere și 2 ieșiri de date. Conectăm alimentarea și împământarea la 5V și respectiv GND pe Arduino. Conectăm celelalte două contacte: SCL și SDA la orice pin analogic. În fotografie puteți vedea un exemplu de conectare a unui lcd 1602 la un arduino cu un modul I2C:

Cod program

Dacă pentru a lucra cu un afișaj fără modul a fost necesar să folosiți o singură bibliotecă, atunci pentru a lucra cu un modul aveți nevoie de două biblioteci. Unul dintre ele este deja inclus în Arduino IDE - Wire. O altă bibliotecă, LiquidCrystal I2C, trebuie descărcată separat și instalată. Pentru a instala biblioteca în Arduino, conținutul arhivei descărcate trebuie să fie încărcat în folderul rădăcină Biblioteci. Exemplu de cod de program folosind I2C:

#include #include LiquidCrystal_I2C lcd(0x27,16,2); // Setați afișajul void setup() ( lcd.init(); lcd.backlight(); // Activați iluminarea de fundal a afișajului lcd..setCursor(8, 1); lcd.print("LCD 1602"); ) void loop( ) ( // Setați cursorul pe a doua linie și pe caracterul zero. lcd.setCursor(0, 1); // Afișează numărul de secunde de când a pornit Arduino lcd.print(millis()/1000); )

După cum puteți vedea, codul este aproape același.

Cum să adăugați propriul simbol?

Problema cu aceste afișaje este că nu există suport pentru alfabetul și simbolurile chirilice. De exemplu, trebuie să încărcați un simbol pe afișaj, astfel încât să îl reflecte. Pentru a face acest lucru, afișajul vă permite să creați până la 7 dintre propriile simboluri. Imaginați-vă masa:

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

Dacă 0 - nu există nimic acolo, dacă 1 - aceasta este o zonă pictată. În exemplul de mai sus puteți vedea crearea simbolului „zâmbet zâmbitor”. Folosind un exemplu de program în Arduino, ar arăta astfel:

#include #include // Adăugați biblioteca necesară // Mască de biți a simbolului zâmbet octet zâmbet = ( 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); // Setați dimensiunea ecranului lcd.createChar(1, smile); // Creați numărul caracterului 1 lcd.setCursor(0, 0); // Setați cursorul la începutul liniei 1 lcd.print("\1"); // Afișați o față zâmbitoare (numărul caracterului 1) - "\1" ) buclă goală ())( )

După cum puteți vedea, a fost creată o mască de bit la fel ca tabelul. Odată creat, acesta poate fi afișat ca o variabilă pe afișaj. Amintiți-vă că puteți stoca doar 7 caractere în memorie. În principiu, acest lucru este suficient. De exemplu, dacă trebuie să afișați un simbol de grad.

Probleme în care afișajul poate să nu funcționeze

Există momente când afișajul nu funcționează. De exemplu, pornește, dar nu afișează caractere. Sau nu se aprinde deloc. Mai întâi, verificați dacă ați conectat corect pinii. Dacă ați folosit o conexiune LCD 1202 la Arduino fără I2C, este foarte ușor să vă încurcați în fire, ceea ce poate face ca afișajul să nu funcționeze corect. De asemenea, ar trebui să vă asigurați că contrastul afișajului este crescut, deoarece cu contrastul minim nici măcar nu este vizibil dacă LCD 1602 este pornit sau nu. Dacă acest lucru nu ajută, atunci poate că problema poate fi lipirea contactelor, aceasta este atunci când utilizați un modul I2C. Un alt motiv comun pentru care afișajul poate să nu funcționeze este setarea incorectă a adresei I2C. Faptul este că există mulți producători și pot pune o adresă diferită, trebuie să o corectați aici:

LiquidCrystal_I2C lcd(0x27,16,2);

În paranteze puteți vedea două valori, 0x27 și 16.2 (16.2 este dimensiunea afișajului, iar 0x27 este adresa I2C). În loc de aceste valori, puteți încerca să setați 0x37 sau 0x3F. Ei bine, un alt motiv este pur și simplu un LCD 1602 defect. Având în vedere că aproape totul pentru Arduino este fabricat în China, nu poți fi 100% sigur că produsul achiziționat nu este defect.

Avantaje și dezavantaje ale LCD-ului 1602

Să ne uităm la avantajele și dezavantajele afișajului LCD 1602.

  • Preț. Acest modul poate fi achiziționat la un preț foarte accesibil din magazinele chinezești. Prețul este de 200-300 de ruble. Uneori este chiar vândut împreună cu un modul I2C.
  • Ușor de conectat. Probabil că nimeni nu conectează LCD 1602 fără I2C în aceste zile. Și cu acest modul, conexiunea durează doar 4 contacte, nu vor exista „pânze” de fire.
  • Programare. Datorită bibliotecilor gata făcute, lucrul cu acest modul este ușor; toate funcțiile sunt deja scrise. Și dacă trebuie să adăugați propriul simbol, durează doar câteva minute.
  • În timpul utilizării sale de către mii de radioamatori, nu au fost identificate dezavantaje majore, doar că există cazuri de achiziții defecte, deoarece sunt utilizate în principal versiunile chinezești ale afișajelor.

Acest articol a analizat conectarea 1602 la Arduino și a oferit, de asemenea, exemple de programe pentru lucrul cu acest afișaj. Este într-adevăr unul dintre cele mai bune din categoria sa; nu degeaba mii de radioamatori îl aleg pentru proiectele lor!

Afișajul LCD Arduino vă permite să afișați vizual datele senzorului. Vă vom spune cum să conectați corect un monitor LCD la Arduino prin I2C și vom analiza comenzile de bază pentru inițializarea și controlul LCD-ului 1602. De asemenea, vom analiza diferite funcții din limbajul de programare C++ pentru afișarea informațiilor text pe afișaj. , care este adesea necesar să fie utilizat în proiectele Arduino.

Video. Display LCD Arduino I2C 1602

Conexiune LCD 1602 I2C la Arduino

I2C este o magistrală serială cu două fire pentru comunicarea circuitelor integrate din interiorul dispozitivelor electronice, cunoscută sub numele de I²C sau IIC (Inter-Integrated Circuit). I²C a fost dezvoltat de Philips la începutul anilor 1980 ca o magistrală simplă de 8 biți pentru comunicarea internă între circuitele electronice de control (de exemplu, plăcile de bază ale computerelor, telefoanele mobile etc.).

Într-un sistem I²C simplu pot exista mai multe dispozitive slave și un dispozitiv master care inițiază transferul de date și sincronizează semnalul. Mai multe dispozitive slave pot fi conectate la liniile SDA (linie de date) și SCL (linie de ceas). Adesea, dispozitivul principal este un controler Arduino, iar dispozitivele slave sunt un ceas în timp real sau un afișaj LCD.

Cum se conectează LCD 1602 la Arduino prin I2C

Display-ul LCD 1602 cu modul I2C este conectat la placa Arduino cu doar 4 fire - 2 fire de date si 2 fire de alimentare. Conexiunea afișajului 1602 se realizează standard pentru magistrala I2C: pin S.D.A. se conectează la portul A4, ieșire SCL– spre portul A5. Ecranul LCD este alimentat de la portul +5V de pe Arduino. Consultați diagrama de conectare a monitorului LCD 1602 din fotografia de mai jos pentru mai multe detalii.

Pentru această lecție vom avea nevoie de următoarele detalii:

  • Placa Arduino Uno / Arduino Nano / Arduino Mega;
  • monitor LCD 1602;
  • 4 fire tată-femă.

După conectarea monitorului LCD la Arduino prin I2C, va trebui să instalați biblioteca LiquidCrystal_I2C.h pentru lucrul cu afișajul LCD prin interfața I2C și bibliotecă Sârmă.h(disponibil în programul standard Arduino IDE). Puteți descărca biblioteca de lucru LiquidCrystal_I2C.h pentru LCD 1602 cu un modul I2C pe pagina Arduino Libraries de pe site-ul nostru printr-un link direct din Google Drive.

Schiță pentru afișaj 1602 cu I2C

#include // bibliotecă pentru controlul dispozitivelor prin I2C#include // conectați biblioteca pentru LCD 1602 LiquidCrystal_I2C lcd(0x27,20,2); // atribuie un nume lcd-ului pentru afișajul 20x2 void setup () // procedura de configurare ( lcd.init (); // inițializați afișajul LCD lcd.backlight(); // activează iluminarea de fundal a afișajului lcd.setCursor(0,0); // plasează cursorul la 1 caracter al primului rând lcd.print("IUBESC"); // imprimă mesajul pe prima linie lcd.setCursor(0,1); // plasează cursorul la 1 caracter al celei de-a doua rânduri lcd.print("ARDUINO"); // tipăriți mesajul pe a doua linie) bucla void () // bucla procedura ( /* acesta este un comentariu cu mai multe linii // inițial procedura void loop() nu este folosită în schița lcd.noDisplay(); // dezactivează întârzierea iluminării de fundal a afișajului LCD (500); // pauză lcd.display(); // pornește întârzierea luminii de fundal a afișajului LCD (500); // pauza */ }

Explicații pentru cod:

  1. biblioteca LiquidCrystal_I2C.h conține multe comenzi pentru controlul unui afișaj LCD prin intermediul magistralei I²C și vă permite să simplificați semnificativ schița;
  2. Schița conține un comentariu pe mai multe rânduri /* ... */, care vă permite să comentați mai multe rânduri în program simultan.
  3. Înainte de a afișa informații pe afișaj, trebuie să setați poziția cursorului cu comanda setCursor(0,1) , unde 0 este numărul caracterului din linie, 1 este numărul liniei.

Cele mai bune articole pe această temă