Cuprins:

LCD COG pentru un Arduino Nano: 3 pași
LCD COG pentru un Arduino Nano: 3 pași

Video: LCD COG pentru un Arduino Nano: 3 pași

Video: LCD COG pentru un Arduino Nano: 3 pași
Video: Артефакты LCD 128X64 SPI при внешнем питании Arduino Nano 2024, Iulie
Anonim
LCD COG pentru un Arduino Nano
LCD COG pentru un Arduino Nano

Acest manual descrie modul de utilizare a unui LCD COG cu un Arduino Nano.

Ecranele LCD COG sunt ieftine, dar sunt puțin mai greu de interfațat. (COG înseamnă „Chip On Glass”.) Cel pe care îl folosesc conține un cip de driver UC1701. Necesită doar 4 pini ai Arduino: SPI-clock, SPI-data, chip-select și command / data.

UC1701 este controlat de magistrala SPI și rulează la 3,3V.

Aici descriu cum să îl utilizați cu un Arduino Nano. Ar trebui să funcționeze și cu un Arduino Mini sau Uno - îl voi încerca în curând.

Acesta este primul meu proiect Arduino și nu am scris C de zeci de ani, așa că dacă fac greșeli evidente, vă rog să-mi spuneți.

Pasul 1: Construirea hardware-ului

Construirea hardware-ului
Construirea hardware-ului
Construirea hardware-ului
Construirea hardware-ului
Construirea hardware-ului
Construirea hardware-ului

Cumpărați un LCD COG care conține un cip UC1701. Ar trebui să utilizeze magistrala SPI mai degrabă decât o interfață paralelă. Va avea în jur de 14 pini care vor fi etichetați cu nume precum cele enumerate mai jos. (Nu doriți o interfață paralelă cu mai mulți pini etichetați D0, D1, D2 …)

Cel pe care l-am cumpărat este: https://www.ebay.co.uk/itm/132138390168 Sau puteți căuta pe eBay „12864 LCD COG”.

Alegeți una care are o coadă destul de largă, cu ace distanțate la 1,27 mm - ace mai fine vor fi greu de lipit. Asigurați-vă că are un cip UC1701. Observați cum în a șasea poză de pe pagina eBay scrie „CONNECTOR: COG / UC1701”.

Afișajul este transparent și este greu de știut care este partea din față și din spate. Studiază-mi cu atenție pozele. Observați unde sunt pinii 1 și 14 - sunt marcați pe coadă.

Coada flexibilă este destul de ușor de lipit, dar necesită un adaptor, astfel încât să îl puteți conecta la o placă de măsurare. Am cumpărat: https://www.ebay.co.uk/itm/132166865767 Sau puteți căuta pe eBay „Adapter Smd SSOP28 DIP28”.

Adaptorul are un cip SOP cu 28 de pini pe o parte sau un cip SSOP cu 28 de pini pe cealaltă parte. Un cip SOP are o distanță de pin de 0,05 (1,27 mm), care este aceeași cu coada ecranului LCD.

De asemenea, veți avea nevoie de niște știfturi pentru antet. Ori de câte ori cumpăr un Arduino sau un alt modul, acesta vine cu mai mulți pini de antet decât sunt necesari, așa că probabil aveți deja unii. În caz contrar, căutați pe eBay „pini de antet de 2,54 mm”.

Lipiți 14 pinii antetului pe adaptor. Nu le împingeți până la capăt - este mai frumos dacă partea din spate a adaptorului este plată. Puneți-l plat pe banca dvs., astfel încât știfturile să nu poată fi împinse prea departe în găuri. Asigurați-vă că pinii sunt pe partea SOP a plăcii (adică cipul mai mare).

Tampoanele cozii se află într-un fel de fereastră. Tin ambele părți ale acestora cu lipit. Întindeți tampoanele adaptorului. Țineți coada adaptorului în poziție, apoi atingeți fiecare tampon cu fierul de lipit (veți avea nevoie de un vârf destul de fin).

Legați niște fire prin orificiile din adaptor pentru a acționa ca un dispozitiv de eliberare a tensiunii. (Am folosit „sârmă de transformare”).

Dacă o lipiți în sens greșit, nu încercați să desfaceți coada. Scoateți știfturile unul câte unul și mutați-le pe cealaltă parte a plăcii. (Da, am făcut această greșeală și am re-lipit coada, motiv pentru care este un pic mizerie în fotografie.)

Pasul 2: Conectarea la Arduino

Conectarea la Arduino
Conectarea la Arduino
Conectarea la Arduino
Conectarea la Arduino

Această secțiune explică cum să vă conectați la un Arduino Nano. Va fi foarte asemănător pentru un Mini sau Uno, dar încă nu l-am încercat.

Studiază schema circuitului.

Un Arduino Nano conectat la un port USB rulează la 5V. Ecranul LCD funcționează la 3,3V. Deci, trebuie să alimentați LCD-ul de la pinul 3V3 al Nano și să reduceți tensiunea pe fiecare pin de control de la 5V la 3,3V.

Pinout-ul LCD este:

  • 1 CS
  • 2 RST
  • 3 CD
  • 4
  • 5 CLK
  • 6 SDA
  • 7 3V3
  • 8 0V Gnd
  • 9 VB0 +
  • 10 VB0-
  • 11
  • 12
  • 13
  • 14

CS este Chip-Select. Este tras jos pentru a selecta (activa) cipul UC1701. (CS ar putea fi numit CS0 sau En sau similar.)

RST este Reset. Este tras jos pentru a reseta cipul. (RST s-ar putea numi Reset.)

CD-ul este comandă / date. Este scăzut la trimiterea comenzilor către cip prin SPI. Este mare atunci când trimiteți date. (CD-ul ar putea fi numit A0.)

CLK și SDA sunt pini de magistrală SPI. (SDA poate fi numit SPI-Data. CLK poate fi SCL sau SPI-Clock.)

VB0 + și VB0- sunt utilizate de pompa de încărcare internă a UC1701. Pompa de încărcare generează tensiunile impare necesare LCD. Conectați un condensator de 100n între VB0 + și VB0-. Documentația UC1701 recomandă 2uF, dar nu am putut vedea o diferență cu acest LCD special.

Dacă LCD-ul dvs. are pini VB1 + și VB1-, conectați și un condensator de 100n între ei. (Dacă LCD-ul dvs. are un pin VLCD, puteți încerca să conectați un condensator de 100n între VLCD și Gnd. Nu a făcut nicio diferență cu LCD-ul meu.)

Conectați ecranul LCD la Nano după cum urmează:

  • 1 CS = D10 *
  • 2 RST = D6 *
  • 3 CD = D7 *
  • 5 CLK = D13 *
  • 6 SDA = D11 *
  • 7 3V3 = 3V3
  • 8 0V = Gnd

(„*” înseamnă utilizarea unui divizor de potențial pentru a reduce tensiunea. Dacă Arduino rulează la 3V3 dintr-o sursă independentă, nu veți avea nevoie de rezistențe.)

3,3 V este transmis de Nano și poate furniza un curent suficient pentru ecranul LCD. (Afișajul atrage aproximativ 250uA.)

5V este, de asemenea, emis de Nano și poate fi utilizat pentru a alimenta lumina de fundal. Limitați curentul la lumina de fundal cu un rezistor de 100ohm.

Dacă nu aveți pini pe Nano, puteți conecta RST la 3V3 - atunci puteți utiliza D6 pentru altceva. U1701 poate fi resetat în software printr-o comandă de pe SPI. Nu am avut niciodată probleme cu asta, dar dacă utilizați propriul circuit într-un mediu zgomotos, poate fi mai bine să utilizați o resetare hardware.

Pasul 3: Software

Software
Software

În teorie, puteți conduce UC1701 din biblioteca U8g2 (sau Ucglib sau celelalte biblioteci disponibile). M-am zbătut zile întregi pentru a-l face să funcționeze și nu am reușit. Biblioteca U8g2 este un monstru, deoarece poate conduce o mare varietate de jetoane și este foarte greu să urmezi codul. Așa că am renunțat și am scris propria mea bibliotecă mai mică. Ocupă mult mai puțin spațiu în Arduino (aproximativ 3400 de octeți plus fonturi).

Puteți descărca biblioteca mea de aici (butonul Descărcare de pe această pagină). Sunt incluse un eșantion de schiță și un ghid de utilizare. Pagina web https://www.arduino.cc/en/Guide/Libraries descrie cum să importați o bibliotecă; accesați secțiunea „Importarea unei biblioteci.zip”.

Inițializați ecranul LCD cu

UC1701Begin ();

UC1701Begin poate lua parametri pentru a schimba pinii sau pentru a ignora pinul RST. Biblioteca utilizează numai SPI hardware (nu este furnizat un SPI software). Afișajul poate fi rotit în axele x și y. Este util dacă doriți să montați ecranul LCD într-o altă orientare.

Mai multe proceduri au fost duplicate din biblioteca U8g2:

  • DrawLine
  • DrawPixel
  • DrawHLine
  • DrawVLine
  • DrawBox
  • DrawFrame
  • DrawCircle
  • DrawDisc
  • DrawFilledEllipse
  • DrawEllipse
  • DrawTriangle
  • UC1701SetCursor
  • UC1701ClearDisplay

Unele proceduri sunt ușor diferite:

  • void DrawChar (uint8_t c, cuvântul Font);
  • void DrawString (caractere * s, cuvânt Font);
  • void DrawInt (int i, cuvântul Font);

Procedurile de desenare a șirurilor sunt trecute prin indexul unui Font. Fonturile sunt declarate în memoria flash a Arduino, deci nu ocupă prețioase SRAM. Sunt furnizate trei fonturi (mici, medii și mari). Sunt conectate și ocupă memorie flash numai dacă le utilizați (aproximativ 500 până la 2000 de octeți fiecare).

„Culoarea” este tratată diferit de biblioteca U8g2. Când ecranul LCD este golit, acesta are un fundal întunecat. Dacă MakeMark (o variabilă globală) este adevărat, desenul se face în alb. Dacă MakeMark este fals, desenul se face în întuneric.

Unele proceduri sunt unice pentru UC1701:

SetInverted desenează negru-alb mai degrabă decât alb-negru.

void SetInverted (inv bool);

Luminozitatea și contrastul UC1701 sunt stabilite de:

  • void SetContrast (valoare uint8_t); // sugerat este 14
  • void SetResistor (valoare uint8_t); // sugerat este 7

Lucrează împreună într-un mod destul de nesatisfăcător.

SetEnabled pornește ecranul LCD:

void SetEnabled (bool en);

Afișajul durează 4uA când dormiți. De asemenea, ar trebui să opriți lumina de fundal - conduceți-o de la un știft al Nano. După reactivare, UC1701 va fi resetat; afișajul este șters, iar contrastul și rezistența vor fi resetate la valorile lor implicite.

Deci, în concluzie, afișajele COG sunt ieftine și au o dimensiune decentă. Sunt ușor de conectat la un Arduino.

Recomandat: