Sommario:

LCD COG per un Arduino Nano: 3 passaggi
LCD COG per un Arduino Nano: 3 passaggi

Video: LCD COG per un Arduino Nano: 3 passaggi

Video: LCD COG per un Arduino Nano: 3 passaggi
Video: Optimized ili9341 LCD driver about 100ms fill 30Mhz SPI 2024, Luglio
Anonim
COG LCD per un Arduino Nano
COG LCD per un Arduino Nano

Questo Instructable descrive come utilizzare un LCD COG con un Arduino Nano.

I display LCD COG sono economici ma sono leggermente più difficili da interfacciare. (COG sta per "Chip On Glass".) Quello che sto usando contiene un chip driver UC1701. Richiede solo 4 pin di Arduino: SPI-clock, SPI-data, chip-select e command/data.

L'UC1701 è controllato dal bus SPI e funziona a 3,3 V.

Qui descrivo come usarlo con un Arduino Nano. Dovrebbe funzionare anche con Arduino Mini o Uno - lo proverò presto.

Questo è il mio primo progetto Arduino e non scrivo C da decenni, quindi se sto commettendo errori evidenti, per favore fatemelo sapere.

Passaggio 1: costruzione dell'hardware

Costruire l'hardware
Costruire l'hardware
Costruire l'hardware
Costruire l'hardware
Costruire l'hardware
Costruire l'hardware

Acquista un LCD COG che contiene un chip UC1701. Dovrebbe utilizzare il bus SPI piuttosto che un'interfaccia parallela. Avrà circa 14 pin che saranno etichettati con nomi come quelli elencati di seguito. (Non vuoi un'interfaccia parallela con molti più pin etichettati D0, D1, D2 …)

Quello che ho comprato è: https://www.ebay.co.uk/itm/132138390168 Oppure puoi cercare su eBay "12864 LCD COG".

Scegline uno che abbia una coda abbastanza larga con pin distanziati di 1,27 mm: i pin più fini saranno difficili da saldare. Assicurati che abbia un chip UC1701. Notare come nella sesta immagine sulla pagina ebay, si dice "CONNECTOR: COG/UC1701".

Il display è trasparente ed è difficile sapere quale sia la parte anteriore e quella posteriore. Studia attentamente le mie foto. Nota dove sono i pin 1 e 14: sono contrassegnati sulla coda.

La coda flessibile è abbastanza facile da saldare ma richiede un adattatore in modo da poterla collegare a una breadboard. Ho comprato: https://www.ebay.co.uk/itm/132166865767 Oppure puoi cercare su eBay "Adapter Smd SSOP28 DIP28".

L'adattatore accetta un chip SOP a 28 pin su un lato o un chip SSOP a 28 pin sull'altro lato. Un chip SOP ha una distanza tra i pin di 0,05 pollici (1,27 mm) che è la stessa della coda dell'LCD.

Avrai anche bisogno di alcuni pin di intestazione. Ogni volta che compro un Arduino o un altro modulo, viene fornito con più pin di intestazione del necessario, quindi probabilmente ne hai già alcuni. Altrimenti, cerca su eBay "pin di intestazione da 2,54 mm".

Saldare 14 dei pin dell'intestazione sull'adattatore. Non spingerli fino in fondo: è meglio se il retro dell'adattatore è piatto. Mettilo piatto sulla panca in modo che i perni non possano essere spinti troppo lontano nei fori. Assicurati che i pin si trovino sul lato SOP della scheda (cioè il chip più grande).

I cuscinetti della coda sono in una sorta di finestra. Stagna entrambi i lati con la saldatura. Stagnare i cuscinetti dell'adattatore. Tieni la coda dell'adattatore in posizione, quindi tocca ogni pad con il saldatore (avrai bisogno di una punta abbastanza fine).

Legare un po' di filo attraverso i fori dell'adattatore per fungere da serracavo. (Ho usato "cavo trasformatore").

Se lo saldi nel modo sbagliato, non provare a dissaldare la coda. Prendi i perni uno alla volta e spostali sull'altro lato del tabellone. (Sì, ho commesso quell'errore e ho risaldato la coda, motivo per cui è un po' un pasticcio nella foto.)

Passaggio 2: connessione ad Arduino

Connessione ad Arduino
Connessione ad Arduino
Connessione ad Arduino
Connessione ad Arduino

Questa sezione spiega come connettersi a un Arduino Nano. Sarà molto simile per un Mini o Uno ma non l'ho ancora provato.

Studia lo schema del circuito.

Un Arduino Nano collegato a una porta USB funziona a 5V. Il display LCD funziona a 3,3 V. Quindi è necessario alimentare l'LCD dal pin 3V3 del Nano e ridurre la tensione su ciascun pin di controllo da 5V a 3,3V.

Il pinout del display LCD è:

  • 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 è Chip-Select. Viene abbassato per selezionare (abilitare) il chip UC1701. (CS potrebbe essere chiamato CS0 o En o simili.)

RST è Reimposta. Viene abbassato per ripristinare il chip. (RST potrebbe essere chiamato Reset.)

Il CD è comando/dati. Viene abbassato quando si inviano comandi al chip tramite SPI. È alto durante l'invio di dati. (Il CD potrebbe essere chiamato A0.)

CLK e SDA sono i pin del bus SPI. (SDA potrebbe essere chiamato SPI-Data. CLK potrebbe essere SCL o SPI-Clock.)

VB0+ e VB0- sono utilizzati dalla pompa di carica interna dell'UC1701. La pompa di carica genera le tensioni dispari necessarie al display LCD. Collegare un condensatore da 100n tra VB0+ e VB0-. La documentazione dell'UC1701 consiglia 2uF ma non ho notato differenze con questo particolare LCD.

Se il tuo LCD ha pin VB1+ e VB1-, collega anche un condensatore da 100n tra di loro. (Se il tuo LCD ha un pin VLCD, puoi provare a collegare un condensatore da 100n tra VLCD e Gnd. Non ha fatto differenza con il mio LCD.)

Collegare l'LCD al Nano come segue:

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

("*" significa utilizzare un divisore di potenziale per ridurre la tensione. Se Arduino funziona a 3V3 da un'alimentazione indipendente, non avrai bisogno dei resistori.)

3.3V viene emesso dal Nano e può fornire una corrente sufficiente per l'LCD. (Il display assorbe circa 250uA.)

Anche 5V viene emesso dal Nano e può essere utilizzato per alimentare la retroilluminazione. Limita la corrente alla retroilluminazione con un resistore da 100 ohm.

Se stai esaurendo i pin sul Nano, puoi collegare RST a 3V3 - quindi puoi usare D6 per qualcos'altro. L'U1701 può essere resettato via software tramite un comando sull'SPI. Non ho mai avuto problemi con questo, ma se stai usando il tuo circuito in un ambiente rumoroso, potrebbe essere meglio usare un ripristino hardware.

Passaggio 3: software

Software
Software

In teoria, puoi pilotare l'UC1701 dalla libreria U8g2 (o Ucglib o le altre librerie disponibili). Ho lottato per giorni per farlo funzionare e ho fallito. La libreria U8g2 è un mostro perché può pilotare un'enorme varietà di chip ed è molto difficile seguire il codice. Così ho rinunciato e ho scritto la mia libreria più piccola. Occupa molto meno spazio in Arduino (circa 3400 byte più i caratteri).

Puoi scaricare la mia libreria da qui (il pulsante Download in questa pagina). Sono inclusi uno schizzo di esempio e una guida per l'utente. La pagina web https://www.arduino.cc/en/Guide/Libraries descrive come importare una libreria; vai alla sezione "Importazione di una libreria.zip".

Inizializzare il display LCD con

UC1701Inizio();

UC1701Begin può prendere parametri per cambiare i pin o per ignorare il pin RST. La libreria utilizza solo SPI hardware (non viene fornita una SPI software). Il display può essere capovolto negli assi x e y. Questo è utile se vuoi montare lo schermo LCD con un orientamento diverso.

Diverse procedure sono state duplicate dalla libreria U8g2:

  • Disegnare la linea
  • DisegnaPixel
  • DisegnaHLine
  • DisegnaVLine
  • DrawBox
  • DrawFrame
  • DisegnaCerchio
  • DrawDisc
  • DisegnaEllisseRiempita
  • DisegnaEllisse
  • DisegnaTriangolo
  • UC1701Imposta cursore
  • UC1701Cancella visualizzazione

Alcune procedure sono leggermente diverse:

  • void DrawChar(uint8_t c, word Font);
  • void DrawString(char * s, word Font);
  • void DrawInt(int i, parola Font);

Alle procedure di disegno delle stringhe viene passato l'indice di un Font. I caratteri sono dichiarati nella memoria flash dell'Arduino in modo che non occupino preziosa SRAM. Sono forniti tre caratteri (piccolo, medio e grande). Sono collegati e occupano la memoria flash solo se li usi (da circa 500 a 2000 byte ciascuno).

Il "colore" è gestito in modo diverso dalla libreria U8g2. Quando l'LCD è azzerato, ha uno sfondo scuro. Se MakeMark (una variabile globale) è vero, il disegno viene eseguito in bianco. Se MakeMark è falso, il disegno viene eseguito al buio.

Alcune procedure sono esclusive dell'UC1701:

SetInverted disegna in nero su bianco anziché bianco su nero.

void SetInverted(bool inv);

La luminosità e il contrasto di UC1701 sono impostati da:

  • void SetContrast(uint8_t value); // suggerito è 14
  • void SetResistor(uint8_t value); // suggerito è 7

Lavorano insieme in modo piuttosto insoddisfacente.

SetEnabled spegne il display LCD:

void SetEnabled(bool it);

Il display richiede 4uA durante il sonno. Dovresti anche spegnere la retroilluminazione: guidala da un pin del Nano. Dopo la riattivazione, l'UC1701 sarà stato resettato; il display viene azzerato e il contrasto e la resistenza saranno stati ripristinati ai valori predefiniti.

Quindi, in conclusione, i display COG sono economici e di dimensioni decenti. Sono facili da collegare a un Arduino.

Consigliato: