Innholdsfortegnelse:

LCD COG for en Arduino Nano: 3 trinn
LCD COG for en Arduino Nano: 3 trinn

Video: LCD COG for en Arduino Nano: 3 trinn

Video: LCD COG for en Arduino Nano: 3 trinn
Video: Arduino LCD Tutorial ST7920 2024, Juli
Anonim
LCD COG for en Arduino Nano
LCD COG for en Arduino Nano

Denne instruksjonsboken beskriver hvordan du bruker en COG LCD med en Arduino Nano.

COG LCD -skjermer er billige, men er litt vanskeligere å koble til. (COG står for "Chip On Glass".) Den jeg bruker inneholder en UC1701 driverbrikke. Det krever bare 4 pinner av Arduino: SPI-klokke, SPI-data, chip-select og kommando/data.

UC1701 styres av SPI -bussen og kjører på 3,3V.

Her beskriver jeg hvordan jeg bruker den med en Arduino Nano. Det burde også fungere med en Arduino Mini eller Uno - jeg skal prøve det snart.

Dette er mitt første Arduino -prosjekt, og jeg har ikke skrevet C på flere tiår, så gi meg beskjed hvis jeg gjør noen åpenbare feil.

Trinn 1: Bygg maskinvaren

Bygging av maskinvare
Bygging av maskinvare
Bygging av maskinvare
Bygging av maskinvare
Bygging av maskinvare
Bygging av maskinvare

Kjøp en COG LCD som inneholder en UC1701 -brikke. Den bør bruke SPI -bussen i stedet for et parallelt grensesnitt. Den vil ha rundt 14 pins som vil bli merket med navn som de som er oppført nedenfor. (Du vil ikke ha et parallelt grensesnitt med mange flere pinner merket D0, D1, D2 …)

Den jeg kjøpte er: https://www.ebay.co.uk/itm/132138390168 Eller du kan søke på eBay etter "12864 LCD COG".

Velg en som har en ganske bred hale med pins på 1,27 mm - finere pinner vil være vanskelig å lodde. Sørg for at den har en UC1701 -brikke. Legg merke til hvordan det på det sjette bildet på ebay -siden står "CONNECTOR: COG/UC1701".

Skjermen er gjennomsiktig, og det er vanskelig å vite hvilken som er foran og bak. Studer bildene mine nøye. Legg merke til hvor pinnene 1 og 14 er - de er merket på halen.

Den fleksible halen er ganske enkel å lodde, men det krever en adapter slik at du kan koble den til et brødbrett. Jeg kjøpte: https://www.ebay.co.uk/itm/132166865767 Eller du kan søke på eBay etter "Adapter Smd SSOP28 DIP28".

Adapteren tar en 28-pinners SOP-brikke på den ene siden eller en 28-pinners SSOP-brikke på den andre siden. En SOP -brikke har et tappeavstand på 0,05 tommer (1,27 mm), som er det samme som halen på LCD -skjermen.

Du trenger også noen toppnål. Når jeg kjøper en Arduino eller annen modul, kommer den med flere toppnål enn nødvendig, så du har sannsynligvis allerede noen. Ellers kan du søke på eBay etter "2,54 mm toppnål".

Lodd 14 av toppnålene på adapteren. Ikke skyv dem hele veien - det er hyggeligere hvis baksiden av adapteren er flat. Legg den flatt på benken slik at pinnene ikke kan skyves for langt inn i hullene. Sørg for at pinnene er på SOP -siden av brettet (dvs. den større brikken).

Halens puter er i et slags vindu. Tinn begge sider av dem med loddetinn. Tinn putene på adapteren. Hold halen på adapteren på plass, og berør deretter hver pute med loddejernet (du trenger en ganske fin spiss).

Fest en tråd gjennom hullene i adapteren for å fungere som strekkavlastning. (Jeg brukte "transformator wire").

Hvis du lodder den på feil vei, ikke prøv å lodde halen. Ta pinnene ut en om gangen og flytt dem til den andre siden av brettet. (Ja, jeg gjorde den feilen og loddet halen på nytt, og derfor er det litt rot i bildet.)

Trinn 2: Koble til Arduino

Koble til Arduino
Koble til Arduino
Koble til Arduino
Koble til Arduino

Denne delen forklarer hvordan du kobler til en Arduino Nano. Det vil være veldig likt for en Mini eller Uno, men jeg har ikke prøvd det ennå.

Studer kretsdiagrammet.

En Arduino Nano som er koblet til en USB -port, går på 5V. LCD -skjermen går på 3,3V. Så du må drive LCD -skjermen fra 3V3 -pinnen på Nano og redusere spenningen på hver kontrollpinne fra 5V til 3.3V.

Pinout på LCD -skjermen er:

  • 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 er Chip-Select. Det trekkes lavt for å velge (aktivere) UC1701 -brikken. (CS kan kalles CS0 eller En eller lignende.)

RST er Reset. Den trekkes lavt for å tilbakestille brikken. (RST kan kalles Reset.)

CD er kommando/data. Det trekkes lavt når du sender kommandoer til brikken over SPI. Det er høyt når du sender data. (CD kan kalles A0.)

CLK og SDA er SPI -busspinnene. (SDA kan kalles SPI-Data. CLK kan være SCL eller SPI-Clock.)

VB0+ og VB0- brukes av den interne ladepumpen til UC1701. Ladepumpen genererer de ulike spenningene som LCD -en trenger. Koble en 100n kondensator mellom VB0+ og VB0-. UC1701 -dokumentasjonen anbefaler 2uF, men jeg kunne ikke se noen forskjell med denne LCD -skjermen.

Hvis LCD-skjermen din har VB1+ og VB1-pins, må du også koble en 100n kondensator mellom dem. (Hvis LCD -skjermen din har en VLCD -pin, kan du prøve å koble en 100n kondensator mellom VLCD og Gnd. Det gjorde ingen forskjell med LCD -skjermen min.)

Koble LCD -skjermen til Nano på følgende måte:

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

("*" betyr bruk av en potensiell divider for å redusere spenningen. Hvis Arduino kjører på 3V3 fra en uavhengig forsyning, trenger du ikke motstandene.)

3.3V sendes ut av Nano og kan gi tilstrekkelig strøm til LCD -skjermen. (Displayet trekker rundt 250uA.)

5V sendes også ut av Nano og kan brukes til å drive bakgrunnsbelysningen. Begrens strømmen til bakgrunnsbelysningen med en 100ohm motstand.

Hvis du mangler pinner på Nano, kan du koble RST til 3V3 - så kan du bruke D6 til noe annet. U1701 kan tilbakestilles i programvare med en kommando på SPI. Jeg har aldri hatt noen problemer med det, men hvis du bruker din egen krets i støyende omgivelser, kan det være bedre å bruke en maskinvaretilbakestilling.

Trinn 3: Programvare

Programvare
Programvare

I teorien kan du kjøre UC1701 fra U8g2 -biblioteket (eller Ucglib eller de andre tilgjengelige bibliotekene). Jeg slet i flere dager med å få det til å fungere og mislyktes. U8g2 -biblioteket er et monster fordi det kan drive et stort utvalg sjetonger, og det er veldig vanskelig å følge koden. Så jeg ga opp og skrev mitt eget mindre bibliotek. Det tar mye mindre plass i Arduino (ca. 3400 byte pluss skrifttyper).

Du kan laste ned biblioteket mitt herfra (Last ned -knappen på denne siden). En eksempelskisse og en brukerveiledning er inkludert. Websiden https://www.arduino.cc/en/Guide/Libraries beskriver hvordan du importerer et bibliotek; gå til delen "Importere et.zip -bibliotek".

Initialiser LCD -skjermen med

UC1701Begin ();

UC1701Begin kan ta parametere for å endre pinnene eller ignorere RST -pinnen. Biblioteket bruker bare maskinvare -SPI (programvare -SPI er ikke inkludert). Displayet kan vendes i x- og y -aksene. Det er nyttig hvis du vil montere LCD -skjermen i en annen retning.

Flere prosedyrer har blitt duplisert fra U8g2 -biblioteket:

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

Noen prosedyrer er litt forskjellige:

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

Strengtegningsprosedyrer passeres indeksen til en font. Skrifter er deklarert i flash -minnet til Arduino, slik at de ikke bruker dyrebar SRAM. Det finnes tre fonter (små, mellomstore og store). De er bare koblet til og opptar flash -minne hvis du bruker dem (ca. 500 til 2000 byte hver).

"Farge" håndteres annerledes enn U8g2 -biblioteket. Når LCD -skjermen er slettet, har den en mørk bakgrunn. Hvis MakeMark (en global variabel) er sann, tegnes det i hvitt. Hvis MakeMark er usann, tegnes det i mørket.

Noen prosedyrer er unike for UC1701:

SetInverted tegner i svart-på-hvitt i stedet for hvitt-på-svart.

void SetInverted (bool inv);

Lysstyrken og kontrasten til UC1701 er satt av:

  • void SetContrast (uint8_t verdi); // foreslått er 14
  • void SetResistor (uint8_t verdi); // foreslått er 7

De jobber sammen på en ganske utilfredsstillende måte.

SetEnabled slår av LCD -skjermen:

void SetEnabled (bool no);

Displayet tar 4uA når du sover. Du bør også slå av bakgrunnsbelysningen - kjør den fra en pin på Nano. Etter aktivering på nytt vil UC1701 ha blitt tilbakestilt; displayet slettes, og kontrasten og motstanden vil ha blitt tilbakestilt til standardverdiene.

Så til slutt er COG -skjermer billige og en anstendig størrelse. De er enkle å koble til en Arduino.

Anbefalt: