Când creați propriul dispozitiv nu este rareori nevoie solicita afișarea diverse informații. De exemplu, dacă creați un controler inteligent acasă, este rezonabil să se echipeze dispozitivul de ieșire dispozitiv vă permite să învețe rapid starea actuală a sistemelor. Cea mai bună soluție este un ecran cu cristale lichide. Consumul de energie la o iluminare minimă a fost dezactivat, iar lucrul cu display-ul este extrem de simplu și nu necesită o intervenție puternică în codul programului. De fapt, informațiile de afișare pe ecranul LCD nu este cu mult diferit de ieșire la portul serial. În articol cu conexiunea znakogeneriruyuschego display, pe chip HD44780 la popularul controler Arduino.
Pentru a înțelege unele dintre nuanțele utile pentru a ști cum funcționează afișare znakogeneriruyuschy. Caracteristica acestui tip de afișare este de a avea propriul controler de memorie. DDRAM - memorie de afișare. Pentru a afișa caracterul pe ecran trebuie să descărcați simbolul în celula de memorie, și apoi trece comanda pentru a afișa locațiile de memorie. Atunci când transmiterea simbolurilor codificate coduri ASCII. De exemplu, simbolul „1“ va fi afișat atunci când stocarea codul 0 × 31 pentru afișare. Potrivirea codul de caractere pe ecranul de afișare (adică, „imagine“ de caractere) stocate în memoria CGROM. Memoria CGROM servește. Prin urmare, ecranul poate afișa doar acele caractere care „protecție“ la controler. De aceea, nu fiecare afișare capabil să afișeze, de exemplu, simboluri romanesti. Afișajele, care sunt vândute în magazinul nostru, din păcate, nu rusificați. Memoria este CGRAM. Aceasta variază. Putem crea propriile personaje și să le afișați pe ecran. Trebuie avut în vedere faptul că vă puteți crea până la opt caractere.
Toate aceste lucrări „sub capotă“ este importantă numai pentru înțelegerea unor nuanțe. Pentru Arduino există o bibliotecă simplă și clară, care funcționează pentru tine toate treburile murdare, permițându-vă pentru a controla ieșirea la afișajul rapid și ușor.
Pentru a conecta afișajul său, desigur, trebuie să fie instalat pe breadboard. Notă: display-uri vândute în magazinul nostru sunt vândute fără pini conector sudat. Dacă doriți să afișați este imediat gata de instalare pe maketku, bifați caseta „conectorul de lipire“ de pe pagina de produs si am sudat conector pentru tine. Transmisia de date pe ecran pot fi aranjate în două moduri: prin 4 sau 8 biți la un moment dat. Prin urmare, necesitatea de 4 sau 8 pini Arduino. În practică, câștigul în viteză atunci când se utilizează interfața cu opt biți nu este. Prin urmare, avem nevoie doar de 4 date digitale de ieșire. Mai mult de 3 O necesară pentru a seta modul de afișare. Totalul pentru a afișa conexiunea nevoie doar 7 ieșiri digitale ale controlerului. Contacte afișa semnat, care nu va primi confuz atunci când vă conectați:
Contacte afișa close-up
Concluzii enumar de la stânga la dreapta:
- 1- (VSS) afișare Earth. Este conectat la șina sol.
- 2- (VDD) Afișaj putere. Acesta este conectat la linia de alimentare.
- 3- (VO) de intrare potențiometru (inclus). Cu potențiometru reglat contrastul afișajului. Concluzia că afișajul este conectat potențiometru medie de ieșire.
- 4- Introduceți semnal (RS) "comandă". Se conecteaza la orice PIN Arduino digitale. În exemplul conectat la concluzia №12.
- 5- (RW) Setează modul „citire“ sau „scriere“. Vom înregistra. Conectați contactul cu solul.
- 6- (E) Activare. Un alt „echipa“, a conchis. Atunci când unitatea de ieșire este furnizat, afișajul efectuează comanda transmis anterior. Se conecteaza la orice PIN digital. În exemplul conectat la terminalul №11.
- 7-10 rezervă (D0-D3) nu este conectat. Aceste contacte de transmisie de date, care sunt utilizate în interfața de opt biți. Nu avem nevoie.
- 11-14 (D4-D7) terminale pentru transmisia de date în modul chetyrohbitnom. Din nou, conectat la orice ieșire digitală. În exemplul sunt conectate respectiv la terminalele 5,4,3 și 2 (D4 până la 5 concluzie, D5 la 4, etc.).
- 15 (A) Anodul iluminării LED. rezistor de limitare a curentului este deja instalat pe ecran, astfel încât anod este conectat la o șină de alimentare cu energie. Deoarece iluminarea este utilizat cel mai frecvent dioda emițătoare de lumină, vă puteți conecta la orice terminal care acceptă PWM și de a controla luminozitatea ecranului și a software-ului.
- 16 (K) iluminare catod. Este conectat la șina sol.
Schema de conectare vizuală:
Conducerea conexiunea de afișare la Arduino
Împreună cu Arduino IDE vine o bibliotecă excelent pentru ecranele cu cristale lichide - LiquidCrystal. Biblioteca conține exemple de revelatoare pe deplin posibilitățile ecranului. Pentru a începe utilizarea standard, de exemplu, «HelloWorld» (File -> Exemple -> LiquidCrystal -> helloworld) sau de încărcare pentru a încărca următorul cod:
După descărcarea acest cod în placa Arduino la afișajul va arăta «Bună ziua, lume!» (Eng. „Hello World!“) Pe prima linie și un cronometru de numărare în jos secunde pe a doua linie.
Așa cum se întâmplă de obicei, codul este simplă și intuitivă. Cu toate acestea, noi încă Să-l examinăm mai în detaliu:
- LCD LiquidCrystal (12, 11, 5, 4, 3, 2) - Această linie creează un obiect de afișare cu care vom lucra în viitor. În paranteze ca numărul de argumente trecut ace, care sunt conectate la contactele de afișare. În consecință: RS, E, D4, D5, D6, D7. După cum sa menționat mai sus, numerele PIN, atunci când conectate pot fi selectate destul de arbitrar.
- lcd.begin (16, 2) - aici am stabilit dimensiunea de afișare. În acest exemplu, 16 coloane și 2 rânduri. 20H4 pentru afișare noastră această linie va arăta astfel: lcd.begin (20, 4).
- lcd.print ( «Bună ziua, lume!») - afișează textul de pe ecran. După dimensiunea de afișare specificată (lcd.begin) cursorul este plasat în colțul din stânga sus al ecranului. Prin urmare, acest text va fi afișat pe prima (de sus), linia de pe partea stângă.
- lcd.setCursor (0, 1) - setează cursorul într-o poziție specificată. În acest caz, acesta conține poziția cea mai din stânga al doilea rând. In paranteze este dat un număr de coloană, și numărul de rând. Și rândurile și coloanele sunt numerotate de la poziția zero. Astfel: lcd.setCursor (0, 0) - setați cursorul în colțul din stânga sus, lcd.setCursor (15, 0) - dreapta jos.
- lcd.print (Millis () / 1000) - a fost deja descrisă mai sus. Aici, în loc de text ca parametru a trecut la formula de calcul. Rezultatul este afișat pe ecran.
Acum, că ne-am confruntat cu cel mai simplu exemplu, puteți trece la exemple mai complexe. Și dacă ați înțeles totul și sunt gata să cumpere un ecran LCD, am compilat link-uri către încredere în mine vânzătorii display-uri din China:
Afișaj LCD cu Caracter
Dimensiune ecran (coloana rând *)
Exemplele standard, livrate cu biblioteca LiquidCrystal pot fi găsite următoarele schițe:
- Autoscroll - demonstrează capacitatea de a derula automat textul. Un fel de ticker. Atunci când caractere simbolurile anterioare sunt deplasate. Astfel, un nou simbol este afișat pe aceeași locație.
- Blink - demonstrează capacitatea de a comuta afișarea cursorului intermitent sub forma unui dreptunghi.
- Cursor - demonstrează capacitatea de a comuta afișarea cursorului sub forma unei linii orizontale intermitent.
- CustomCharacter - posibilitatea de a crea propriile dvs. de caractere pentru a fi afișate pe ecran. De altfel, în această eroare schiță. A se vedea mai jos pentru detalii.
- Display - arată calea de a „opri“, afișajul. Aceasta este de a arăta sau ascunde textul derivat.
- Derulați - demonstrează capacitatea de a derula manual textul.
- SerialDisplay - afișează textul tipărit în fereastra Port Monitor (de exemplu, textul care este transmis prin portul serial).
- setCursor - umple ecranul litere, demonstrând capacitatea de a muta cursorul în orice poziție de pe ecran.
- TextDirection - demonstrează capacitatea de a schimba direcția de ieșire a textului (de la dreapta la stânga sau de la stânga la dreapta).
Luați în considerare mai în detaliu procedurile care au demonstrat posibilitatea acestor exemple:
lcd.autoscroll ()
După apelarea acestei proceduri, textul de pe ecran se va derula automat. Pentru a opri derularea, apelați lcd.noAutoscroll ().
lcd.blink ()
După procedura de apel cursorul devine intermitent dreptunghi. Pentru a opri, apelați lcd.noBlink (). Cursorul va deveni din nou invizibil.
lcd.cursor ()
După ce procedura de apel cursorul ia forma liniei orizontale care clipește. Pentru a dezactiva lcd.noSursor ar trebui sa apel (). Cursorul va deveni din nou invizibil.
lcd.createChar ()
Procedura încarcă variabila caractere ecran tabel (memorie CGRAM) simbolul descris ca o matrice octet. Argumentul a trecut la numărul de caractere și o serie de bytes care descrie caracterul. Să examinăm acest lucru mai detaliat. Pentru a face memoria de afișare poate fi de până la opt caractere. Pentru a adăuga caracterul tău aveți nevoie de:
- Creați un șir de octeți care descrie caracterul.
- Simbolul de înregistrare în memoria de afișare, dându-i numărul în tabela de simboluri. Simbolurile sunt numerotate de la zero la șapte.
- Tiparul simbolului de pe ecran folosind procedura lcd.write () (a nu se confunda cu lcd.print ()), în care argumentul de transfer QUALITY numărul de caractere.
medii de dezvoltare Bug și în special bibliotecile avut ca rezultat incapacitatea de a afișa numărul simbolului 0 (zero). Compilatoare după ce sa întâlnit linia lcd.write (0) arunca o eroare: «apel de supraîncărcat«scrie (int)»este ambiguă«. Este această linie are loc în exemplul de bibliotecă CustomCharacter. Când încercați să compilați un exemplu standard, puteți obține o eroare:
CustomCharacter. Ino. În funcție de 'setare void ()'.
CustomCharacter. 115. eroare. apel de supraîncărcat „scrie (int)“ este ambiguă
/ Home / nazarovd / Arduino - 1.0.5 / biblioteci / LiquidCrystal / LiquidCrystal. h. 82. notă. candidați sunt. size_t virtuale LiquidCrystal. scrie (uint8_t)
/ Home / nazarovd / Arduino - 1.0.5 / hardware / Arduino / miezuri / Arduino / imprimare. h. 49. notă. size_t Print. scriere (char * const)
Pentru a rezolva această problemă suficient pentru schimbarea șir lcd.write (0) pe lcd.write ((byte) 0).
Acum, un mic exemplu de creare a caracterului său. Să afișeze simbolul rublei.
Simbolul rublei este afișat pe ecran
lcd.noDisplay ()
„Opriți“ display. De fapt, se ascunde doar caracterele de pe ecran. Procedura Lcd.display apel () „include“ de afișare. Toate caracterele apar din nou. Vă rugăm să rețineți: nu există nici un afișaj clar. Caracterele nu mai este afișat.
lcd.scrollDisplayLeft (); lcd.scrollDisplayRight ();
Pentru a parcurge lungi linii de text în modul manual (controlat). lcd.scrollDisplayLeft () derulează un șir de caracter la stânga, lcd.scrollDisplayRight () derulează linia dreapta un caracter.
lcd.rightToLeft (); lcd.leftToRight ();
Setează direcția textului. lcd.rightToLeft () stabilește modul de afișare de la dreapta la stânga, lcd.leftToRight () determină afișarea textului de la stânga la dreapta.