Inhoudsopgave:

LCD COG voor een Arduino Nano: 3 stappen
LCD COG voor een Arduino Nano: 3 stappen

Video: LCD COG voor een Arduino Nano: 3 stappen

Video: LCD COG voor een Arduino Nano: 3 stappen
Video: Подключение дисплея GMG12864-06D на ST7565R к Arduino 2024, Juli-
Anonim
LCD COG voor een Arduino Nano
LCD COG voor een Arduino Nano

Deze Instructable beschrijft hoe je een COG-LCD gebruikt met een Arduino Nano.

COG LCD-schermen zijn goedkoop, maar zijn iets moeilijker aan te sluiten. (COG staat voor "Chip On Glass".) Degene die ik gebruik bevat een UC1701 driverchip. Het vereist slechts 4 pinnen van de Arduino: SPI-clock, SPI-data, chip-select en command/data.

De UC1701 wordt aangestuurd door de SPI-bus en werkt op 3,3V.

Hier beschrijf ik hoe het te gebruiken met een Arduino Nano. Het zou ook moeten werken met een Arduino Mini of Uno - ik zal het binnenkort proberen.

Dit is mijn eerste Arduino-project en ik heb al tientallen jaren geen C meer geschreven, dus als ik duidelijke fouten maak, laat het me dan weten.

Stap 1: De hardware bouwen

De hardware bouwen
De hardware bouwen
De hardware bouwen
De hardware bouwen
De hardware bouwen
De hardware bouwen

Koop een COG-LCD met een UC1701-chip. Het zou de SPI-bus moeten gebruiken in plaats van een parallelle interface. Het zal ongeveer 14 pinnen hebben die worden gelabeld met namen zoals hieronder vermeld. (U wilt geen parallelle interface met veel meer pinnen met het label D0, D1, D2 …)

Degene die ik heb gekocht is: https://www.ebay.co.uk/itm/132138390168 Of je kunt op eBay zoeken naar "12864 LCD COG".

Kies er een met een vrij brede staart met pinnen op een afstand van 1,27 mm - fijnere pinnen zullen moeilijk te solderen zijn. Zorg ervoor dat deze een UC1701-chip heeft. Merk op hoe op de zesde afbeelding op de ebay-pagina "CONNECTOR: COG/UC1701" staat.

Het display is transparant en het is moeilijk om te weten wat de voor- en achterkant is. Bestudeer mijn foto's aandachtig. Let op waar pinnen 1 en 14 zijn - ze zijn gemarkeerd op de staart.

De flexibele staart is vrij eenvoudig te solderen, maar er is een adapter voor nodig, zodat je hem op een breadboard kunt aansluiten. Ik kocht: https://www.ebay.co.uk/itm/132166865767 Of je kunt op eBay zoeken naar "Adapter Smd SSOP28 DIP28".

De adapter heeft aan de ene kant een 28-pins SOP-chip of aan de andere kant een 28-pins SSOP-chip. Een SOP-chip heeft een pin-afstand van 0,05 (1,27 mm), wat hetzelfde is als de staart van het LCD-scherm.

Je hebt ook enkele header-pinnen nodig. Telkens wanneer ik een Arduino of andere module koop, wordt deze geleverd met meer header-pinnen dan nodig zijn, dus waarschijnlijk heb je er al een paar. Zoek anders op eBay naar "2,54 mm header-pinnen".

Soldeer 14 van de header-pinnen op de adapter. Duw ze niet helemaal door - het is fijner als de achterkant van de adapter plat is. Leg het plat op je bank zodat de pinnen niet te ver in de gaten kunnen worden geduwd. Zorg ervoor dat de pinnen zich aan de SOP-kant van het bord bevinden (d.w.z. de grotere chip).

De kussens van de staart zitten in een soort venster. Tin beide kanten van hen met soldeer. Vertin de pads van de adapter. Houd de staart van de adapter op zijn plaats en raak vervolgens elke pad aan met de soldeerbout (je hebt een vrij fijne punt nodig).

Bind wat draad door de gaten in de adapter als trekontlasting. (Ik gebruikte "transformatordraad").

Als je het op de verkeerde manier soldeert, probeer dan niet de staart los te solderen. Haal de pinnen er een voor een uit en verplaats ze naar de andere kant van het bord. (Ja, ik heb die fout gemaakt en de staart opnieuw gesoldeerd, daarom is het een beetje een puinhoop op de foto.)

Stap 2: Verbinding maken met de Arduino

Verbinding maken met de Arduino
Verbinding maken met de Arduino
Verbinding maken met de Arduino
Verbinding maken met de Arduino

In dit gedeelte wordt uitgelegd hoe u verbinding maakt met een Arduino Nano. Het zal erg vergelijkbaar zijn voor een Mini of Uno, maar ik heb het nog niet geprobeerd.

Bestudeer het schakelschema.

Een Arduino Nano die is aangesloten op een USB-poort werkt op 5V. Het LCD-scherm werkt op 3,3V. U moet dus het LCD-scherm van stroom voorzien via de 3V3-pin van de Nano en de spanning op elke bedieningspin verlagen van 5V naar 3,3V.

De pinout van het LCD-scherm is:

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

CS is Chip Select. Het wordt laag getrokken om de UC1701-chip te selecteren (in te schakelen). (CS kan CS0 of En of iets dergelijks worden genoemd.)

RST is resetten. Het wordt laag getrokken om de chip te resetten. (RST zou Reset kunnen heten.)

CD is commando/data. Het wordt laag getrokken bij het verzenden van opdrachten naar de chip via SPI. Het is hoog bij het verzenden van gegevens. (CD zou A0 kunnen heten.)

CLK en SDA zijn de SPI-buspinnen. (SDA kan SPI-Data worden genoemd. CLK kan SCL of SPI-Clock zijn.)

VB0+ en VB0- worden gebruikt door de interne laadpomp van de UC1701. De laadpomp genereert de oneven spanningen die het LCD-scherm nodig heeft. Sluit een 100n condensator aan tussen VB0+ en VB0-. De UC1701-documentatie beveelt 2uF aan, maar ik kon geen verschil zien met dit specifieke LCD-scherm.

Als uw LCD-scherm VB1+- en VB1-pinnen heeft, sluit u er ook een condensator van 100n tussen aan. (Als uw LCD een VLCD-pin heeft, kunt u proberen een 100n-condensator aan te sluiten tussen VLCD en Gnd. Het maakte geen verschil met mijn LCD.)

Sluit het LCD-scherm als volgt aan op de Nano:

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

("*" betekent gebruik een potentiaaldeler om de spanning te verlagen. Als de Arduino op 3V3 werkt vanuit een onafhankelijke voeding, heb je de weerstanden niet nodig.)

3.3V wordt uitgevoerd door de Nano en kan voldoende stroom leveren voor het LCD-scherm. (Het scherm trekt ongeveer 250uA.)

5V wordt ook uitgevoerd door de Nano en kan worden gebruikt om de achtergrondverlichting van stroom te voorzien. Beperk de stroom naar de achtergrondverlichting met een weerstand van 100 ohm.

Als je te weinig pinnen op de Nano hebt, kun je RST aansluiten op 3V3 - dan kun je D6 voor iets anders gebruiken. De U1701 kan softwarematig worden gereset door een commando op de SPI. Ik heb daar nooit problemen mee gehad, maar als je je eigen circuit in een rumoerige omgeving gebruikt, is het misschien beter om een hardware-reset te gebruiken.

Stap 3: Software

Software
Software

In theorie kun je de UC1701 besturen vanuit de U8g2-bibliotheek (of Ucglib of de andere beschikbare bibliotheken). Ik worstelde dagenlang om het werkend te krijgen en faalde. De U8g2-bibliotheek is een monster omdat het een enorme verscheidenheid aan chips kan aansturen en het is erg moeilijk om de code te volgen. Dus gaf ik het op en schreef mijn eigen kleinere bibliotheek. Het neemt veel minder ruimte in beslag in de Arduino (ongeveer 3400 bytes plus lettertypen).

U kunt mijn bibliotheek hier downloaden (de knop Downloaden op deze pagina). Een voorbeeldschets en een gebruikershandleiding zijn inbegrepen. De webpagina https://www.arduino.cc/en/Guide/Libraries beschrijft hoe u een bibliotheek kunt importeren; ga naar de sectie "Een.zip-bibliotheek importeren".

Initialiseer het LCD-scherm met

UC1701Begin();

UC1701Begin kan parameters gebruiken om de pinnen te veranderen of om de RST-pin te negeren. De bibliotheek gebruikt alleen hardware-SPI (een software-SPI wordt niet meegeleverd). Het display kan worden omgedraaid in de x- en y-assen. Dat is handig als je het LCD-scherm in een andere richting wilt monteren.

Verschillende procedures zijn gekopieerd uit de U8g2-bibliotheek:

  • Teken lijn
  • TekenPixel
  • DrawHLin
  • DrawVLine
  • DrawBox
  • DrawFrame
  • TekenCirkel
  • DrawDisc
  • TekenenGevuldEllips
  • TekenenEllips
  • Tekendriehoek
  • UC1701SetCursor
  • UC1701ClearDisplay

Sommige procedures zijn iets anders:

  • ongeldig DrawChar (uint8_t c, woord Lettertype);
  • void DrawString (char * s, woord Lettertype);
  • ongeldig DrawInt (int i, woord Lettertype);

Tekenreekstekenprocedures worden doorgegeven aan de index van een lettertype. Lettertypen worden gedeclareerd in het flashgeheugen van de Arduino, zodat ze geen kostbare SRAM in beslag nemen. Er zijn drie lettertypen beschikbaar (klein, medium en groot). Ze zijn alleen gekoppeld en nemen flash-geheugen in beslag als u ze gebruikt (ongeveer 500 tot 2000 bytes elk).

"Kleur" wordt anders behandeld dan de U8g2-bibliotheek. Wanneer het LCD-scherm leeg is, heeft het een donkere achtergrond. Als MakeMark (een globale variabele) waar is, wordt er in het wit getekend. Als MakeMark onwaar is, wordt er in het donker getekend.

Sommige procedures zijn uniek voor de UC1701:

SetInverted tekent in zwart-op-wit in plaats van wit-op-zwart.

void SetInverted(bool inv);

De helderheid en het contrast van de UC1701 worden ingesteld door:

  • ongeldig SetContrast (uint8_t waarde); // voorgesteld is 14
  • ongeldig SetResistor (uint8_t waarde); // voorgesteld is 7

Ze werken op een nogal onbevredigende manier samen.

SetEnabled schakelt het LCD-scherm uit:

void SetEnabled(bool en);

Het display verbruikt 4uA tijdens het slapen. Je moet ook de achtergrondverlichting uitschakelen - rijd deze vanaf een pin van de Nano. Na opnieuw inschakelen is de UC1701 gereset; het display wordt gewist en het contrast en de weerstand zijn teruggezet op hun standaardwaarden.

Dus, tot slot, COG-schermen zijn goedkoop en hebben een behoorlijke omvang. Ze zijn eenvoudig aan te sluiten op een Arduino.

Aanbevolen: