Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ

Arduino dhe ekran LCD me karakter. Lidhja e ekranit LCD me Arduino

Ekrani i kristalit të lëngshëm (LCD), i shkurtuar si LCD, bazohet në teknologjinë e kristalit të lëngshëm. Kur dizajnojmë pajisje elektronike, na duhet një pajisje e lirë për të shfaqur informacionin dhe faktori i dytë po aq i rëndësishëm është disponueshmëria e bibliotekave të gatshme për Arduino. Nga të gjithë ekranet LCD të disponueshëm në treg, më i përdoruri është LCD 1602A, i cili mund të shfaqë karaktere ASCII në 2 rreshta (16 karaktere në 1 rresht) çdo karakter në një matricë pikselësh 5x7. Në këtë artikull do të shqyrtojmë bazat e lidhjes së një ekrani me Arduino.

Specifikimet teknike

Tensioni i furnizimit: 5 V
Madhësia e ekranit: 2.6 inç
Lloji i ekranit: 2 rreshta x 16 karaktere
Ngjyra e dritës së prapme: blu
Ngjyra e karakterit: e bardhë
Dimensionet: 80mm x 35mm x 11mm

Përshkrimi i ekranit

LCD 1602A është një modul elektronik i bazuar në drejtuesin HD44780 nga Hitachi. LCD1602 ka 16 kunja dhe mund të funksionojë në modalitetin 4-bit (duke përdorur vetëm 4 linja të dhënash) ose modalitetin 8-bit (duke përdorur të 8 linjat e të dhënave), ose mund të përdoret një ndërfaqe I2C. Në këtë artikull do të flas për lidhjen në modalitetin 4-bit.

Detyra e kontaktit:
VSS: Furnizimi me energji i modulit “-”.
VDD: Furnizimi me energji i modulit "+".
VO: Kunja e kontrollit të kontrastit
RS: Regjistrohu Zgjidh
RW: Zgjidhni modalitetin e shkrimit ose të leximit (kur lidheni me tokëzimin, vendoseni në modalitetin e shkrimit)
E: Porta e vjeshtës
DB0-DB3: Bit ndërfaqe
DB4-DB7: Bit ndërfaqe
A: Fuqia e dritës së prapme "+".
K: "-" fuqia e dritës së prapme

Në pjesën e përparme të modulit ka një ekran LCD dhe një grup kontaktesh.

Në anën e pasme të modulit ka dy çipa në një dizajn "pikës" (ST7066U dhe ST7065S) dhe instalime elektrike, nuk e shoh pikën në vizatimin e një diagrami qarku, do t'ju tregoj vetëm për rezistencën R8 (100 Ohm), i cili shërben si një rezistencë kufizuese për dritën e prapme LED, kështu që ju mund të lidhni 5V direkt me pinin A. Pak më vonë do të shkruaj një artikull në të cilin do t'ju tregoj se si mund të ndryshoni dritën e prapme të një ekrani LCD duke përdorur një PWB dhe një tranzistor.

Lidhja e LCD 1602A me Arduino (modaliteti 4-bit)

Pjesët e nevojshme:
Arduino UNO R3 x 1 copë.
Ekran LCD 1602A (2×16, 5V, Blu) x 1 pc.
Tel DuPont, 2,54 mm, 20 cm, F-F (Femër - Femër) x 1 copë.
Potenciometër 10 kOhm x 1 pc.
Konektori PLS-16 x 1 pc.
Pllakë zhvillimi MB-102 x 1 pc.
Kabllo USB 2.0 A-B x 1 pc.

Lidhje:
Për t'u lidhur, ne do të përdorim një tabelë zhvillimi, diagrami dhe tabela për lidhjen e LCD1602a me Arduino në modalitetin 4-bit mund të shihen në figurën më poshtë.

Lidhja e ekranit me tabelën e bukës do të bëhet nëpërmjet kunjave PLS-16 (ato duhet të ngjiten në ekran). Instaloni modulin e ekranit në tabelën e bukës dhe lidhni VDD-në e rrymës (pinja e dytë) në 5V (Arduino) dhe VSS (pinja e parë) me GND (Arduino), më pas lidhni RS (pin e 4-të) me pinin dixhital 8 (Arduino). Tokizoni RW (pin e 5-të) duke e lidhur me GND (Arduino), më pas lidhni pinin E me pinin 8 (Arduino). Për një lidhje 4-bitësh, kërkohen katër kunja (DB4 në DB7). Lidhni kunjat DB4 (pina e 11-të), DB5 (pinja e 12-të), DB6 (Kinja e 13-të) dhe DB7 (Kina e 14-të) me kunjat dixhitale Arduino 4, 5, 6 dhe 7. Potenciometri 10K përdoret për rregullimin e kontrastit të ekranit, diagrami i lidhjes për Ekrani LCD 1602a tregohet më poshtë

Biblioteka tashmë është përfshirë në Arduino IDE dhe nuk ka nevojë ta instaloni atë. Kopjoni dhe ngjisni këtë kod shembull në dritaren e programit Arduino IDE dhe ngarkoni atë në kontrollues.

/* Testimi u krye në Arduino IDE 1.6.11 Data e testimit 20/09/2016. */ #përfshi LCD Crystal Liquid(8, 9, 4, 5, 6, 7); void setup() ( lcd.begin(16, 2); // Inicializon LCD 16x2 ) void loop() ( lcd.setCursor(0,0); // Vendosni kursorin në rreshtin e parë lcd.print("Përshëndetje, world"); // Printoni tekstin lcd.setCursor(0,1); // Vendosni kursorin në rreshtin e dytë lcd.print("www.robotchip.ru"); // Printoni tekstin)

Testimi u krye në Arduino IDE 1.6.11

Data e testimit: 20.09.2016

#përfshi

LCD Crystal Liquid (8, 9, 4, 5, 6, 7);

konfigurimi i zbrazët ()

LCD. fillo (16, 2); // Inicializon LCD 16x2

void loop ()

LCD. print ("Përshëndetje, botë"); // Printoni tekstin

LCD. print ("www.robotchip.ru"); // Printoni tekstin

Shkarko programin

Pak për programin.
Për të lehtësuar komunikimin midis Arduino dhe ekranit LCD, përdoret biblioteka e integruar në Arduino IDE " LiquidCrystal.h « - e cila është shkruar për ekranet LCD duke përdorur HD44780 (Hitachi) chipset (ose çipa të përputhshëm). Kjo bibliotekë mund të trajtojë lidhjen LCD me modalitetin 4-bit dhe atë 8-bit.

Mod i ekranit me kristal të lëngshëm (LCD). 1602 (datasheet) është një zgjedhje e shkëlqyer për projektet tuaja.

Gjëja e parë që na kënaq është çmimi i ulët. E dyta është disponueshmëria e bibliotekave të gatshme për Arduino. Së treti, ka disa modifikime, të cilat gjithashtu vijnë me ndriçim të ndryshëm (blu, jeshile). Në këtë artikull, ne do të shikojmë bazat e lidhjes së këtij ekrani me Arduino dhe do të japim një shembull të një projekti të vogël për të shfaqur nivelin e dritës në një ekran duke përdorur një fotorezistencë.

Kontaktet dhe diagrami i lidhjes së LCD 1602 me Arduino

Kunjat në këtë ekran janë të numëruara nga 1 në 16. Ato janë të vendosura në pjesën e pasme të tabelës. Se si ato lidhen saktësisht me Arduino tregohet në tabelën më poshtë.

Tabela 1. Lidhja e kunjave LCD 1620 me Arduino

Lidhja e 1602 me Arduino Nëse ekrani 1602 furnizohet me energji nga Arduino nëpërmjet një kablloje USB 5 volt dhe kunjit përkatës, një vlerë 2 kOhm mund të përdoret për pinin e kontrastit të ekranit (lidhësi i tretë - Kontrasti). Për kontaktin Back LED+, mund të përdorni një rezistencë 100 Ohm. Ju gjithashtu mund të përdorni një rezistencë të ndryshueshme - potenciometër për të rregulluar manualisht kontrastin.

Bazuar në tabelën 1 dhe diagramin më poshtë, lidhni ekranin tuaj LCD me Arduino. Për t'u lidhur do t'ju duhet një grup përcjellësish. Këshillohet që të përdorni tela me ngjyra të ndryshme për të shmangur konfuzionin.

Tabela 2. Ngjyrat e preferuara të përcjellësit

Diagrami i lidhjes për ekranin LCD 1602 me Arduino:


Programi bazë shembull për të punuar LCD 1602 me Arduino

Shembulli përdor kunjat Arduino 0, 1, 2, 3, 4 dhe 5 për të lidhur kunjat përkatëse 4, 6, 11, 12, 13 dhe 14 nga ekrani 1602 (shih Tabelën 1). Pas kësaj, në kodin Arduino ne inicializojmë lcd() si më poshtë:

LCD Crystal Liquid(0, 1, 2, 3, 4, 5);

Kjo pjesë e kodit i shpjegon Arduino saktësisht se si është lidhur ekrani LCD.

I gjithë skedari burimor i projektit të stacionit të motit, i cili përdor ekranin LCD 1602, mund të shkarkohet nga kjo lidhje.

LCD 1602A, Arduino dhe sensori i dritës (fotorezistor)

Në shembull, ne do të shikojmë lidhjen e një modifikimi të ekranit - 1602A dhe një fotorezistori. Si rezultat i këtij projekti, ne do të jemi në gjendje të shfaqim vlera numerike në përpjesëtim me intensitetin e dritës në ekran.


Ky shembull do të jetë një fillim i mirë për fillestarët që të kuptojnë Arduino. Vlen të përmendet se ekrani 1602 ka modifikime të ndryshme. Prandaj, vendndodhja e kontakteve në to mund të ndryshojë pak.

Materialet e nevojshme

  • 1 Arduino UNO;
  • 1 dërrasë buke (63 shina);
  • 1 sensor drite (fotorezistor);
  • 1 potenciometër 50 kOhm;
  • 1 ekran LCD 1602A;
  • 1 rezistencë 10 kOhm;
  • 1 hekurudhë lidhëse (16 kunja);
  • 1 kabllo USB.

Ekran LCD 1602A

Ekranet zakonisht shiten pa lidhës të ngjitur. Kjo do të thotë, ju do të duhet të mbani saldimin në duar. Do t'ju duhen 16 kunja. Saldoni në anë të këmbëve të shkurtra, lërini këmbët e gjata për lidhje të mëtejshme me tabelën ose pajisje të tjera periferike.

Pas shkrirjes, mund ta instaloni ekranin në tabelën e bukës. Mundësisht, në pistën më të ulët, në mënyrë që të keni ende mundësinë për të lidhur ekranin përmes lidhësve shtesë në tabelë.

Lidhja e ekranit 1602A me Arduino

Gjëja e parë që duhet të bëni është të fuqizoni ekranin. Lidhni dy kabllot nga +5 volt dhe tokëzoni në rreshtat përkatëse plus/minus në tabelën e bukës.

Lidhni: kunja 5 volt (5V) nga Arduino në një nga gjurmët e tabelës së bukës.

Lidhni: Pini i Arduino's Ground (GND) me një pjesë tjetër (breadboard).

Pas kësaj, ne lidhim fuqinë e ekranit dhe dritën e tij të pasme me gjurmët në tabelën e bukës, në të cilën marrim 5 volt dhe minus.

Lidhe: gjurma GND (minus) në tabelën e bukës për të fiksuar 1 në ekranin LCD (etiketuar VSS).

Lidhni: gjurmën 5 volt (plus) në tabelën e bukës për të fiksuar 2 në ekranin LCD (etiketuar VDD).

Lidheni: pista 5 volt (plus) në tabelën e bukës për të fiksuar 15 në ekranin LCD (të etiketuar A).

Lidhni: gjurma GND (minus) në tabelën e bukës për të fiksuar 16 në ekranin LCD (të etiketuar K).

Ne e lidhim Arduino-n tonë me një kompjuter personal përmes një kabllo USB dhe voila! Ekrani duhet të ndizet.

Hapi tjetër është të lidhni një potenciometër për të rregulluar kontrastin e ekranit. Shumica e udhëzuesve përdorin një potenciometër 10k om, por 50k ohmë do të funksionojnë gjithashtu. Për shkak të gamës më të madhe të vlerave të rezistencës në daljen e potenciometrit, rregullimi më i saktë bëhet më i vështirë, por për ne në këtë rast kjo nuk është kritike. Montoni potenciometrin në tabelën e bukës dhe lidhni tre kunjat e tij.

Lidhni: kunja e parë në potenciometër me negativin në tabelën e bukës.

Lidhni: kunja e mesit të potenciometrit me kunjin 3 në ekran (etiketuar V0).

Lidheni: kunja e tretë në potenciometër me pozitiven në tabelën e bukës.

Pasi të jetë furnizuar me energji bordi përmes kabllit USB, rreshti i parë i ekranit duhet të mbushet me drejtkëndësha. Nëse nuk i shihni, kthejeni pak potenciometrin nga e majta në të djathtë për të rregulluar kontrastin. Më vonë, kur të shfaqim vlerat numerike në ekran, do të mund të rregulloni më saktë kontrastin. Nëse ekrani juaj duket diçka si kjo, po e bëni mirë:

Le te vazhdojme. Tani na duhet të komunikojmë midis Arduino dhe LCD 1602A për të shfaqur karakteret.

Për ta bërë këtë, lidhni 4 kunjat e ekranit (RS) me 7 kunjat e Arduino (lidhës i verdhë). Afishoni kunjat 5 (RW) - në rreshtin e kunjave të tokës në tabelën e bukës (kabllo e zezë).

Ekrani i pinit 6 (E) - në pinin 8 të Arduino (PWM).

Ekrani i pinit 11 (D4) - në pinin 9 të Arduino (PWM).

Ekrani i pinit 12 (D5) - në pinin 10 të Arduino (PWM).

Ekrani i pinit 13 (D6) - në pinin 11 të Arduino (PWM).

Ekrani i pinit 14 (D7) – në pinin 12 të Arduino (PWM).

Programi për Arduino IDE - shfaqja e tekstit në ekranin 1602A

Pjesa e kodit e paraqitur më poshtë thjesht duhet të kopjohet dhe ngjitet në Arduino IDE dhe të ngarkohet në tabelë:

#include <LiquidCrystal.h>

LCD Crystal Liquid(7, 8, 9, 10, 11, 12);

lcd.begin(16, 2);

lcd.setCursor(0,1);

lcd.write("LIGHT:");

Pas ngarkimit të programit në tabelë, mesazhi i mëposhtëm do të shfaqet në rreshtin e dytë të ekranit:

Një lloj "përshëndetje bote!" lançuar në LCD 1602A. Une ju pergezoj ju.

Ne lidhim fotorezistorin dhe ngarkojmë të gjithë programin në Arduino

Tani le të lidhim fotorezistorin. Lidhni tre tela me shinat e lira në tabelën e bukës (le t'i quajmë ato 1, 2, 3). Lini pak hapësirë ​​në shina për vetë sensorin e dritës dhe rezistencën.

Ne e lidhim hekurudhën GND nga pllaka e bukës në hekurudhën 1. A0 (hyrja analoge) nga Arduino - në hekurudhë 2. 5 volt nga pllaka e bukës - në hekurudhë 3.

Më pas lidhim sensorin dhe rezistencën tonë me shinat e përgatitura. Cilat këmbë shkojnë në tokë dhe cilat shkojnë në furnizimin me energji elektrike nuk ka rëndësi për sensorin dhe rezistencën tonë të dritës (ndryshe nga, për shembull, një LED, i cili ka një katodë dhe një anodë). Pra, këtu nuk ka konfuzion.

Ne lidhim sensorin e dritës me hekurudhën 1 dhe hekurudhën 2. Rezistenca është e lidhur me hekurudhën 2 dhe hekurudhën 3.

Tani le të kthehemi te programi ynë dhe të shtojmë disa rreshta në trupin aktualisht bosh të funksionit loop():

int sensorValue = analogLeximi(A0);

lcd.setCursor(7,1);

lcd.print(sensorValue);

Pas ngarkimit të versionit përfundimtar të programit tonë në Arduino, ekrani do të shfaqë vlerat aktuale të nivelit të dritës.

Ekzistojnë një numër i madh i varieteteve të tekstit, ose siç quhen edhe ekranet me kristal të lëngshëm që sintetizojnë karaktere. Ekranet më të zakonshëm bazohen në çipat HD44780 nga Hitachi, KS0066 nga Samsung ose të pajtueshëm me to. Për të punuar me ekrane të tillë, ekziston një bibliotekë standarde Arduino Liquid Crystal.

Shfaqje të tilla përfshijnë, në veçanti, ekranet e tekstit nga Melt. Ky artikull përshkruan në detaje diagramin e lidhjes për këtë ekran, por është gjithashtu i përshtatshëm për shumë shfaqje të tjera teksti.

Artikulli përshkruan parimet e përgjithshme. Mund të shkoni te përshkrimi i detajuar i ekranit tuaj:

Komponentët e kërkuar

Lidhje

Ngjitni ekranin në tabelën e bukës dhe lidhni fuqinë +5 V dhe tokëzimin nga Arduino në shinat e rrymës së dërrasës.

Ju do të keni nevojë për energji dhe tokë më shumë se një herë, kështu që është më e përshtatshme t'i hidhni ato në shina.

Ndizni dritën e prapme

Drita e prapme e ekranit është një qark i veçantë, i palidhur me pjesën tjetër. Mund ta aktivizoni duke aplikuar +5 V në pinin e 15-të të ekranit dhe duke lidhur pinin e 16-të me tokën. Duke i lidhur këto dy kunja me shinat përkatëse, mund të ndizni Arduino dhe të shihni dritën e ekranit.

Ju lutemi vini re se në disa modele numërimi i kontakteve nuk është vetëm nga e djathta në të majtë nga e para në të gjashtëmbëdhjetën, por disi më dinake. Kështu, për shembull, në një ekran 16×2 nga Melt, kontakti i parë ndodhet fizikisht në pozicionin e 14-të, i dyti në të 13-tin dhe kështu me radhë nga e djathta në të majtë deri në të 14-tin në pozicionin e parë, dhe i 15-ti dhe 16 ndodhen djathtas. Numërimi pranë kontakteve të ekranit do t'ju ndihmojë të shmangni konfuzionin.

Aktivizimi i fuqisë së sintetizuesit të karaktereve

    E para është toka. Lidheni atë me hekurudhën tokësore.

    E dyta është ushqimi. Lidheni atë me hekurudhën +5V.

    E treta është kontrasti. Për kontrast maksimal, lidheni atë me hekurudhën tokësore. Ju mund të aplikoni një tension arbitrar nga 0 në 5 V në këtë kontakt, sa më i lartë të jetë, aq më i zbehtë do të jetë imazhi, por në të njëjtën kohë konsumi i energjisë do të ulet. Për të qenë në gjendje të rregulloni pa probleme kontrastin, mund të aplikoni një sinjal dalës të potenciometrit në këtë kontakt.

Pasi të lidheni, nëse ndizni Arduino, mund të shihni hapësirat e njohura drejtkëndore. Në varësi të kombinimit të ngjyrave të tekstit dhe dritës së prapme, ato mund të jenë ose të ndritshme dhe qartë të dukshme ose mezi të dukshme. Kjo është normale: në çdo rast, teksti do të duket i shkëlqyeshëm.

Lidhja e autobusit të të dhënave

Për komunikimin midis Arduino dhe ekranit, duhet të përdoren disa linja komunikimi:

    2 ose 3 për të komanduar shfaqjen

    4 ose 8 për transmetimin e të dhënave (kodet e karaktereve dhe komandat)

Kështu, nga 6 deri në 11 kontakte nga të dyja pajisjet do të jenë të zëna. Nëse nuk keni nevojë lexoni nga ekrani, i cili i përshtatet shumicës së skenarëve të përdorimit, komandat do të kërkojnë 2 rreshta.

Nëse shpejtësia e përditësimit të të dhënave gjithashtu nuk është problem, mjaftojnë 4 rreshta për të transferuar të dhëna.

Pra, për të lidhur ekranin, mjafton të përdorni 6 rreshta, 6 kunja në Arduino. Le të shqyrtojmë këtë skenar të veçantë.

Siç u përmend, nuk kemi asgjë për të lexuar nga ekrani, ne vetëm do t'i shkruajmë. Prandaj, ne lidhim pinin e 5-të të ekranit, i cili është përgjegjës për zgjedhjen e leximit/shkrimit, me hekurudhën tokësore. Kjo do të thotë "shkruani gjithmonë".

Më pas, lidhim Arduino-n dhe ekranin me 6 linjat tona të komunikimit. Nuk ka rëndësi se cilat kontakte do të zgjidhen në Arduino: ne do t'i specifikojmë ato në program, por për shembull u zgjodh konfigurimi i mëposhtëm:

    Pini 6 i ekranit është pin 5 i Arduino. Kjo është linja e lejes së hyrjes në të dhëna. I njohur si E ose Enable. Kur kjo linjë bëhet një, ekrani ekzekuton një komandë ose nxjerr një karakter nga linja e të dhënave.

    Pini i 11-të, i 12-të, i 13-të, i 14-të i ekranit janë përkatësisht pini i 10-të, i 11-të, i 12-të dhe i 13-të i Arduino-së. Këto janë linja të dhënash. I njohur si DB4, DB5, DB6, DB7.

Ekrani është i lidhur dhe gati për të marrë të dhëna. Gjithçka që mbetet është të shkruani një program për Arduino.

Programimi

Për të nxjerrë tekst nga Arduino, është më e përshtatshme të përdorni bibliotekën e integruar Liquid Crystal. Për të shfaqur përshëndetjen dhe kohëmatësin, përdorni kodin si ky:

Përshëndetje.pde #include lcd.begin(16, 2); // printoni rreshtin e parë lcd.print ("Përshëndetje botë!"); // vendos kursorin në kolonën 0, rreshti 1. Kjo është, në // kjo është në të vërtetë rreshti i dytë, sepse numërimi fillon nga zero lcd.setCursor(0, 1); // printoni rreshtin e dytë lcd.print ("foo bar baz"); ) void loop() ( )

Gjithçka është mjaft e thjeshtë dhe duhet të jetë e qartë nga komentet.

cirilik

Informacioni në këtë seksion zbatohet posaçërisht për ekranet nga Melt. Homologët kinezë dhe evropianë nuk kanë gjasa të kenë cirilik në grupin e tyre të karaktereve, ju lutemi referojuni dokumentacionit për ekran për të mësuar më shumë rreth kësaj.

Shtypja e shkronjave ruse nuk është krejtësisht e parëndësishme: nuk mund të shkruani thjesht lcd.print("Vasya") . Kjo lidhet me konceptin e kodimeve. Ju e dini që çdo karakter ka një kod përkatës dhe kur përpiloni një program, nëse një varg përmban cirilik, ai do të konvertohet në kode duke përdorur utf-8, cp-1251 ose ndonjë tabelë tjetër, në varësi të cilësimeve të përpiluesit. Ekrani, nga ana tjetër, pret të shohë të dhënat në kodimin e tij.

Për shembull, shkronja "I" korrespondon me kodin B1 në sistemin heksadecimal. Për të transmetuar vargun "Yandex" në ekran, duhet të futni në mënyrë të qartë kodin e karakterit në varg duke përdorur sekuencën \x##:

LCD.print(" \xB1 ndex") ;

Ju mund të përzieni karaktere të rregullta dhe kode eksplicite në një rresht sipas dëshirës tuaj. E vetmja paralajmërim është se pasi përpiluesi sheh sekuencën \x në një rresht, lexon të gjithë karakteret pas saj që mund të jenë shifra të sistemit heksadecimal, edhe nëse ka më shumë se dy prej tyre. Për shkak të kësaj, nuk mund të përdorni thjesht karaktere në rangun 0-9, a-f duke ndjekur një kod me karakter dyshifror: kjo do të shkaktojë një gabim përpilimi. Për të kapërcyer këtë pikë, mund të përdorni faktin që dy rreshta të shkruara pranë njëri-tjetrit janë ngjitur së bashku. Pra, nëse doni të shkruani "Yeee":

LCD.print(" \xB1 eee") ; // gabim lcd.print(" \xB1""eee"); // E drejta

Për shembull, për të shkruar "Përshëndetje nga Amperka", u përdor kodi:

cirilik.pde #include LCD Crystal Liquid(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() ( )

Ndërrimi i faqeve të gjeneratorit të karaktereve

Moduli i ekranit ruan dy faqe gjeneruese të karaktereve në memorie. Parazgjedhja është faqja zero. Për të ndërruar faqen, përdorni metodën komanda (0x101010), dhe anasjelltas - komanda (0x101000).

Ekrani nuk mund të shfaqë karaktere nga faqe të ndryshme në të njëjtën kohë.

Le të shohim një shembull në të cilin e njëjta rresht do të ndryshojë në varësi të faqes së zgjedhur.

change_page.ino // Përfshi bibliotekën standarde LiquidCrystal#përfshi // Inicializoni objektin e ekranit, transferoni atë të përdorur // për të lidhur kunjat në Arduino janë në rregull:// RS, E, DB4, DB5, DB6, DB7 LCD Crystal Liquid(4, 5, 10, 11, 12, 13); konfigurimi i zbrazët () ( // vendosni madhësinë (numrin e kolonave dhe rreshtave) të ekranit lcd.begin(16, 2); ) void loop() ( // vendosni faqen e gjeneruesit të karaktereve në 0 (ky është parazgjedhja) lcd.command(0b101000); // printoni rreshtin e parë LCD.print(" \x9b \x9c \x9d \x9e \x9f ") ; // prisni 1 sekondë vonesë (1000); // instaloni faqen e gjeneruesit të 1 karaktereve lcd.command(0b101010); // prisni 1 sekondë vonesë (1000); // pastroni ekranin lcd.clear(); )

Çdo radio amator, pas një numri të caktuar projektesh të thjeshta të bëra në shtëpi, arrin qëllimin për të ndërtuar diçka madhështore duke përdorur sensorë dhe butona. Në fund të fundit, është shumë më interesante të shfaqen të dhënat në një ekran sesa në një monitor porti. Por atëherë lind pyetja: cilin ekran të zgjidhni? Dhe në përgjithësi, si ta lidhni atë, çfarë nevojitet për t'u lidhur? Përgjigjet për këto pyetje do të diskutohen në këtë artikull.

LCD 1602

Ndër opsionet e shumta midis ekraneve, do të doja të përmendja në mënyrë specifike ekranin LCD1602 të bazuar në kontrolluesin HD4478. Ky ekran disponohet në dy ngjyra: shkronja të bardha në sfond blu, shkronja të zeza në sfond të verdhë. Lidhja e LCD 1602 me Arduino gjithashtu nuk do të shkaktojë probleme, pasi ekziston një bibliotekë e integruar dhe nuk ka nevojë të shkarkoni asgjë shtesë. Ekranet ndryshojnë jo vetëm në çmim, por edhe në madhësi. Shpesh, amatorët e radios përdorin 16 x 2, domethënë 2 rreshta me 16 karaktere. Por ka edhe 20 x 4, ku ka 4 rreshta me 20 karaktere. Dimensionet dhe ngjyra nuk luajnë ndonjë rol në lidhjen e ekranit lcd 1602 me Arduno, ato janë të lidhura në të njëjtën mënyrë. Këndi i shikimit është 35 gradë, koha e përgjigjes së ekranit është 250 ms. Mund të funksionojë në temperatura nga -20 deri në 70 gradë Celsius. Gjatë funksionimit, ai përdor 4 mA për ekranin dhe 120 mA për dritën e prapme.

Ku përdoret?

Ky ekran është i popullarizuar jo vetëm në mesin e amatorëve të radios, por edhe në mesin e prodhuesve të mëdhenj. Për shembull, printerët dhe aparatet e kafesë përdorin gjithashtu LCD1602. Kjo është për shkak të çmimit të tij të ulët, ky ekran kushton 200-300 rubla në faqet kineze. Vlen të blini atje, pasi në dyqanet tona shënimet për këtë ekran janë shumë të larta.

Lidhja me Arduino

Lidhja e LCD 1602 me Arduino Nano dhe Uno nuk është ndryshe. Mund të punoni me ekranin në dy mënyra: 4-bit dhe 8-bit. Kur punoni me 8-bit, përdoren të dy bitet e rendit të ulët dhe të rendit të lartë dhe me 4-bit, vetëm ato të rendit të ulët. Nuk ka asnjë pikë të veçantë të punosh me 8-bit, pasi do të shtojë 4 kontakte të tjera për lidhje, gjë që nuk është e këshillueshme, sepse shpejtësia nuk do të jetë më e lartë, kufiri për përditësimet e ekranit është 10 herë në sekondë. Në përgjithësi, për të lidhur LCD 1602 me Arduino, përdoren shumë tela, gjë që shkakton disa bezdi, por ka mburoja të veçanta, por më shumë për këtë më vonë. Fotografia tregon lidhjen e ekranit me Arduino Uno:

Shembull i kodit:

#përfshi // Shto lcd-në e nevojshme të bibliotekës LiquidCrystal (7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup())( lcd.begin(16, 2); // Cakto madhësinë e ekranit lcd.setCursor(0, 0); // Cakto kursorin në fillim 1 rreshta lcd.print("Përshëndetje, botë!" // Printo tekstin lcd.setCursor(0, 1) // Printoni tekstin ) void loop ()( )

Çfarë bën kodi? Hapi i parë është lidhja e bibliotekës për të punuar me ekranin. Siç u përmend më lart, kjo bibliotekë tashmë është përfshirë në Arduino IDE dhe nuk ka nevojë të shkarkohet dhe instalohet shtesë. Më pas, përcaktohen kontaktet që lidhen me kunjat: përkatësisht RS, E, DB4, DB5, DB6, DB7. Pastaj vendoset madhësia e ekranit. Meqenëse po punojmë me një version me 16 karaktere dhe 2 rreshta, shkruajmë vlerat e mëposhtme. E vendosim kursorin në fillim të rreshtit të parë dhe shfaqim tekstin tonë të parë Hello World. Më pas, vendosni kursorin në rreshtin e dytë dhe shfaqni emrin e faqes. Kjo eshte e gjitha! U konsiderua lidhja e LCD 1602 me Arduino Uno.

Çfarë është I2C dhe pse është e nevojshme?

Siç u përmend më lart, lidhja e ekranit kërkon shumë kontakte. Për shembull, kur punoni me sensorë të shumtë dhe një ekran LCD, 1602 kunjat thjesht mund të mos jenë të mjaftueshme. Shpesh, amatorët e radios përdorin versionet Uno ose Nano, të cilat nuk kanë shumë kontakte. Pastaj njerëzit dolën me mburoja të veçanta. Për shembull, I2C. Kjo ju lejon të lidhni një ekran me vetëm 4 kunja. Kjo është dy herë më shumë. Moduli I2C shitet veçmas, ku duhet ta lidhni vetë, dhe tashmë i ngjitur në ekranin LCD 1602.

Lidhja duke përdorur modulin I2C

Lidhja e LCD 1602 me Arduino Nano me I2C merr pak hapësirë, vetëm 4 kunja: tokëzimi, fuqia dhe 2 dalje të dhënash. Ne lidhim fuqinë dhe tokën me 5V dhe GND në Arduino, përkatësisht. Ne lidhim dy kontaktet e mbetura: SCL dhe SDA me çdo kunj analoge. Në foto mund të shihni një shembull të lidhjes së një LCD 1602 me një arduino me një modul I2C:

Kodi i programit

Nëse për të punuar me një ekran pa një modul ishte e nevojshme të përdorni vetëm një bibliotekë, atëherë për të punuar me një modul ju nevojiten dy biblioteka. Njëri prej tyre tashmë është përfshirë në Arduino IDE - Wire. Një bibliotekë tjetër, LiquidCrystal I2C, duhet të shkarkohet veçmas dhe të instalohet. Për të instaluar bibliotekën në Arduino, përmbajtja e arkivit të shkarkuar duhet të ngarkohet në dosjen rrënjë Bibliotekat. Shembull i kodit të programit duke përdorur I2C:

#përfshi #përfshi LiquidCrystal_I2C LCD (0x27,16,2); ( void loop( ) ( // Vendosni kursorin në rreshtin e dytë dhe karakterin zero. lcd.setCursor(0, 1); // Shfaq numrin e sekondave që nga fillimi i Arduino lcd.print(millis()/1000); )

Siç mund ta shihni, kodi është pothuajse i njëjtë.

Si të shtoni simbolin tuaj?

Problemi me këto ekrane është se nuk ka mbështetje për alfabetin cirilik dhe simbolet. Për shembull, duhet të ngarkoni një simbol në ekran në mënyrë që ta pasqyrojë atë. Për ta bërë këtë, ekrani ju lejon të krijoni deri në 7 nga simbolet tuaja. Imagjinoni tabelën:

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

Nëse 0 - nuk ka asgjë atje, nëse 1 - kjo është një zonë e pikturuar. Në shembullin e mësipërm mund të shihni krijimin e simbolit "smiling smiley". Duke përdorur një program shembull në Arduino, do të duket kështu:

#përfshi #përfshi // Shto bibliotekën e nevojshme // Bit mask e simbolit të buzëqeshjes byte smile = ( B00010, B00001, B11001, B00001, B11001, B00001, B00010, ); LCD Crystal Liquid(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup())( lcd.begin(16, 2); // Cakto madhësinë e ekranit lcd.createChar(1, buzëqeshje); // Krijo numrin e karakterit 1 lcd.setCursor(0, 0 // Vendosni kursorin në fillim të rreshtit 1 lcd.print("\1" // Printoni smiley (numri i karakterit 1) - "\1" ) ) ( )

Siç mund ta shihni, një bitmask u krijua njësoj si tabela. Pasi të krijohet, mund të shfaqet si një variabël në ekran. Mos harroni se mund të ruani vetëm 7 karaktere në memorie. Në parim, kjo është e mjaftueshme. Për shembull, nëse keni nevojë të tregoni një simbol të gradës.

Probleme në të cilat ekrani mund të mos funksionojë

Ka raste kur ekrani nuk funksionon. Për shembull, ndizet, por nuk shfaq karaktere. Ose nuk ndizet fare. Së pari, kontrolloni nëse i keni lidhur saktë kunjat. Nëse keni përdorur një lidhje LCD 1202 me Arduino pa I2C, është shumë e lehtë të ngatërrohesh në tela, gjë që mund të bëjë që ekrani të mos funksionojë siç duhet. Duhet të siguroheni gjithashtu që kontrasti i ekranit të rritet, pasi me kontrastin minimal nuk është as i dukshëm nëse LCD 1602 është i ndezur apo jo. Nëse kjo nuk ndihmon, atëherë ndoshta problemi mund të qëndrojë në bashkimin e kontakteve, kjo është kur përdorni një modul I2C. Një arsye tjetër e zakonshme pse ekrani mund të mos funksionojë është vendosja e gabuar e adresës I2C. Fakti është se ka shumë prodhues, dhe ata mund të vendosin një adresë tjetër, duhet ta korrigjoni këtu:

LiquidCrystal_I2C LCD (0x27,16,2);

Në kllapa mund të shihni dy vlera, 0x27 dhe 16.2 (16.2 është madhësia e ekranit dhe 0x27 është adresa I2C). Në vend të këtyre vlerave, mund të provoni të vendosni 0x37 ose 0x3F. Epo, një arsye tjetër është thjesht një LCD 1602 me defekt. Duke marrë parasysh që pothuajse gjithçka për Arduino është prodhuar në Kinë, nuk mund të jeni 100% i sigurt se produkti i blerë nuk është me defekt.

Të mirat dhe të këqijat e LCD 1602

Le të shohim të mirat dhe të këqijat e ekranit LCD 1602.

  • Çmimi. Ky modul mund të blihet me një çmim shumë të volitshëm në dyqanet kineze. Çmimi është 200-300 rubla. Ndonjëherë madje shitet së bashku me një modul I2C.
  • Lehtë për t'u lidhur. Ndoshta askush nuk po lidh LCD 1602 pa I2C këto ditë. Dhe me këtë modul, lidhja merr vetëm 4 kontakte, nuk do të ketë "rrjeta" telash.
  • Programimi. Falë bibliotekave të gatshme, puna me këtë modul është e lehtë. Dhe nëse keni nevojë të shtoni simbolin tuaj, duhen vetëm disa minuta.
  • Gjatë përdorimit të tij nga mijëra radioamatorë, nuk janë identifikuar disavantazhe të mëdha, vetëm ka raste të blerjeve me defekt, pasi kryesisht përdoren versionet kineze të ekraneve.

Ky artikull shqyrtoi lidhjen e 1602 me Arduino, dhe gjithashtu dha shembuj të programeve për të punuar me këtë ekran. Është me të vërtetë një nga më të mirat në kategorinë e tij, nuk është më kot që mijëra radioamatorë e zgjedhin atë për projektet e tyre!

Ekrani LCD Arduino ju lejon të shfaqni vizualisht të dhënat e sensorit. Ne do t'ju tregojmë se si të lidhni siç duhet një monitor LCD me Arduino përmes I2C dhe do të shikojmë komandat bazë për inicializimin dhe kontrollin e LCD 1602. Do të shohim gjithashtu funksione të ndryshme në gjuhën e programimit C++ për shfaqjen e informacionit të tekstit në ekran , i cili shpesh kërkohet të përdoret në projektet Arduino.

Video. Ekrani LCD Arduino I2C 1602

Lidhja LCD 1602 I2C me Arduino

I2C është një autobus serik me dy tela për komunikimin e qarqeve të integruara brenda pajisjeve elektronike, i njohur si I²C ose IIC (Inter-Integrated Circuit). I²C u zhvillua nga Philips në fillim të viteve 1980 si një autobus i thjeshtë 8-bit për komunikim të brendshëm ndërmjet qarqeve në elektronikën e kontrollit (p.sh. pllakat amë kompjuterike, telefonat celularë, etj.).

Në një sistem të thjeshtë I²C mund të ketë disa pajisje skllav dhe një pajisje kryesore që fillon transferimin e të dhënave dhe sinkronizon sinjalin. Pajisjet e shumëfishta skllav mund të lidhen me linjat SDA (linja e të dhënave) dhe SCL (linja e orës). Shpesh pajisja kryesore është një kontrollues Arduino, dhe pajisjet slave janë një orë në kohë reale ose një ekran LCD.

Si të lidhni LCD 1602 me Arduino përmes I2C

Ekrani LCD 1602 me modul I2C është i lidhur me tabelën Arduino me vetëm 4 tela - 2 tela të dhënash dhe 2 tela rryme. Lidhja e ekranit 1602 kryhet si standard për autobusin I2C: pin S.D.A. lidhet me portin A4, dalje SCL- në portin A5. Ekrani LCD mundësohet nga porta +5V në Arduino. Shikoni diagramin e lidhjes së monitorit LCD 1602 në foton më poshtë për më shumë detaje.

Për këtë mësim do të na duhen detajet e mëposhtme:

  • Pllaka Arduino Uno / Arduino Nano / Arduino Mega;
  • Monitor LCD 1602;
  • 4 tela mashkull-femër.

Pas lidhjes së monitorit LCD me Arduino nëpërmjet I2C, do t'ju duhet të instaloni bibliotekën LiquidCrystal_I2C.h për të punuar me ekran LCD përmes ndërfaqes dhe bibliotekës I2C Teli.h(e disponueshme në programin standard Arduino IDE). Ju mund të shkarkoni bibliotekën e punës LiquidCrystal_I2C.h për LCD 1602 me një modul I2C në faqen e Bibliotekave Arduino në faqen tonë të internetit nëpërmjet një lidhjeje të drejtpërdrejtë nga Google Drive.

Skicë për ekranin 1602 me I2C

#përfshi // bibliotekë për kontrollin e pajisjeve nëpërmjet I2C#përfshi // lidhni bibliotekën për LCD 1602 LiquidCrystal_I2C LCD (0x27,20,2); // cakto një emër LCD-së për ekranin 20x2 konfigurimi i zbrazët () // konfigurimi i procedurës ( lcd.init (); // inicializoni ekranin LCD LCD.backlight(); // aktivizoni dritën e prapme të ekranit lcd.setCursor(0,0); // vendos kursorin në 1 karakter të rreshtit të parë lcd.print ("I LOVE"); // printoni mesazhin në rreshtin e parë lcd.setCursor(0,1); // vendoseni kursorin në 1 karakter të rreshtit të dytë lcd.print("ARDUINO"); // printoni mesazhin në rreshtin e dytë) void loop () // cikli i procedurës ( /* ky është një koment me shumë rreshta // fillimisht procedura void loop() nuk përdoret në skicën lcd.noDisplay(); // fik vonesën e dritës së prapme të ekranit LCD (500); // pauzë lcd.display(); // aktivizoni vonesën e dritës së prapme të ekranit LCD (500); // pauzë */ }

Shpjegime për kodin:

  1. biblioteka LiquidCrystal_I2C.h përmban shumë komanda për kontrollimin e një ekrani LCD nëpërmjet autobusit I²C dhe ju lejon të thjeshtoni ndjeshëm skicën;
  2. Skica përmban një koment me shumë rreshta /* ... */, i cili ju lejon të komentoni disa rreshta në program menjëherë.
  3. Përpara shfaqjes së informacionit në ekran, duhet të vendosni pozicionin e kursorit me komandën setCursor(0,1), ku 0 është numri i karakterit në rresht, 1 është numri i linjës.

Artikujt më të mirë mbi këtë temë