Innehållsförteckning:

LCD COG för en Arduino Nano: 3 steg
LCD COG för en Arduino Nano: 3 steg

Video: LCD COG för en Arduino Nano: 3 steg

Video: LCD COG för en Arduino Nano: 3 steg
Video: EEVblog #353 — Мешок для почты 2024, November
Anonim
LCD COG för en Arduino Nano
LCD COG för en Arduino Nano

Denna instruktion beskriver hur du använder en COG LCD med en Arduino Nano.

COG LCD -skärmar är billiga men är lite svårare att ansluta. (COG står för "Chip On Glass".) Den jag använder innehåller ett UC1701 -drivrutinschip. Det kräver bara 4 stift av Arduino: SPI-klocka, SPI-data, chip-select och kommando/data.

UC1701 styrs av SPI -bussen och körs på 3,3V.

Här beskriver jag hur jag använder den med en Arduino Nano. Det borde också fungera med en Arduino Mini eller Uno - jag ska prova det snart.

Detta är mitt första Arduino -projekt och jag har inte skrivit C på årtionden, så meddela mig om jag gör några uppenbara misstag.

Steg 1: Bygga hårdvaran

Bygga hårdvaran
Bygga hårdvaran
Bygga hårdvaran
Bygga hårdvaran
Bygga hårdvaran
Bygga hårdvaran

Köp en COG LCD som innehåller ett UC1701 -chip. Det bör använda SPI -bussen snarare än ett parallellt gränssnitt. Den kommer att ha cirka 14 stift som kommer att märkas med namn som de som anges nedan. (Du vill inte ha ett parallellt gränssnitt med många fler stift märkta D0, D1, D2 …)

Den jag köpte är: https://www.ebay.co.uk/itm/132138390168 Eller så kan du söka på eBay efter "12864 LCD COG".

Välj en som har en ganska bred svans med stift på 1,27 mm - finare stift blir svåra att löda. Se till att det har ett UC1701 -chip. Lägg märke till hur det på den sjätte bilden på ebay -sidan står "CONNECTOR: COG/UC1701".

Displayen är transparent och det är svårt att veta vilken som är fram och bak. Studera mina bilder noggrant. Lägg märke till var stift 1 och 14 är - de är markerade på svansen.

Den flexibla svansen är ganska lätt att löda men den kräver en adapter så att du kan ansluta den till ett brödbräda. Jag köpte: https://www.ebay.co.uk/itm/132166865767 Eller så kan du söka på eBay efter "Adapter Smd SSOP28 DIP28".

Adaptern tar ett 28-stifts SOP-chip på ena sidan eller ett 28-stifts SSOP-chip på den andra sidan. Ett SOP -chip har ett stiftavstånd på 0,05 tum (1,27 mm), vilket är samma som svansen på LCD -skärmen.

Du kommer också att behöva några rubrikstift. När jag köper en Arduino eller annan modul kommer den med fler rubrikstift än vad som behövs, så du har förmodligen redan några. Annars kan du söka på eBay efter "2,54 mm toppnålar".

Löd 14 av huvudstiften på adaptern. Skjut dem inte hela vägen - det är trevligare om baksidan av adaptern är platt. Lägg den platt på din bänk så att tapparna inte kan skjutas för långt in i hålen. Se till att stiften sitter på SOP -sidan av brädet (dvs. det större chipet).

Svansens dynor är i ett slags fönster. Tinn båda sidorna av dem med löd. Tin adapterns kuddar. Håll svansen på adaptern på plats och rör sedan vid varje kudde med lödkolven (du behöver en ganska fin spets).

Knyt lite tråd genom hålen i adaptern för att fungera som dragavlastning. (Jag använde "transformatorkabel").

Om du lödde den på fel sätt, försök inte att avlödda svansen. Ta ut stiften en i taget och flytta dem till den andra sidan av brädet. (Ja, jag gjorde det misstaget och lodde om svansen, varför det är lite rörigt på fotot.)

Steg 2: Anslutning till Arduino

Ansluter till Arduino
Ansluter till Arduino
Ansluter till Arduino
Ansluter till Arduino

Det här avsnittet förklarar hur du ansluter till en Arduino Nano. Det kommer att vara väldigt likt för en Mini eller Uno men jag har inte provat det än.

Studera kretsschemat.

En Arduino Nano som är ansluten till en USB -port går på 5V. LCD -skärmen fungerar med 3,3V. Så du måste driva LCD -skärmen från 3V3 -stiftet på Nano och minska spänningen på varje kontrollstift från 5V till 3.3V.

Pinout på LCD -skärmen är:

  • 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 är Chip-Select. Det dras lågt för att välja (aktivera) UC1701 -chipet. (CS kan kallas CS0 eller En eller liknande.)

RST är Återställ. Det dras lågt för att återställa chipet. (RST kan kallas Reset.)

CD är kommando/data. Det dras lågt när kommandon skickas till chipet över SPI. Det är högt när du skickar data. (CD kan kallas A0.)

CLK och SDA är SPI -bussnålarna. (SDA kan kallas SPI-Data. CLK kan vara SCL eller SPI-Clock.)

VB0+ och VB0- används av den interna laddningspumpen på UC1701. Laddningspumpen genererar de udda spänningar som LCD -skärmen behöver. Anslut en 100n kondensator mellan VB0+ och VB0-. UC1701 -dokumentationen rekommenderar 2uF men jag kunde inte se någon skillnad med just den här LCD -skärmen.

Om din LCD-skärm har VB1+ och VB1-stift, anslut också en 100n kondensator mellan dem. (Om din LCD -skärm har en VLCD -stift kan du försöka ansluta en 100n kondensator mellan VLCD och Gnd. Det gjorde ingen skillnad med min LCD.)

Anslut LCD -skärmen till Nano enligt följande:

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

("*" betyder att du använder en potentiell avdelare för att minska spänningen. Om Arduino körs på 3V3 från en oberoende strömförsörjning behöver du inte motstånden.)

3.3V matas ut av Nano och kan ge tillräcklig ström för LCD -skärmen. (Displayen drar cirka 250uA.)

5V matas också ut av Nano och kan användas för att driva bakgrundsbelysningen. Begränsa strömmen till bakgrundsbelysningen med ett 100ohm motstånd.

Om du saknar stift på Nano kan du ansluta RST till 3V3 - då kan du använda D6 för något annat. U1701 kan återställas i programvara med ett kommando på SPI. Jag har aldrig haft några problem med det, men om du använder din egen krets i en bullrig miljö kan det vara bättre att använda en maskinvaruåterställning.

Steg 3: Programvara

programvara
programvara

I teorin kan du köra UC1701 från U8g2 -biblioteket (eller Ucglib eller andra tillgängliga bibliotek). Jag kämpade i flera dagar för att få det att fungera och misslyckades. U8g2 -biblioteket är ett monster eftersom det kan driva ett stort antal chips och det är väldigt svårt att följa koden. Så jag gav upp och skrev mitt eget mindre bibliotek. Det tar mycket mindre plats i Arduino (cirka 3400 byte plus teckensnitt).

Du kan ladda ner mitt bibliotek härifrån (knappen Ladda ner på den här sidan). En provskiss och en användarhandbok ingår. Webbsidan https://www.arduino.cc/en/Guide/Libraries beskriver hur man importerar ett bibliotek; gå till avsnittet "Importera ett.zip -bibliotek".

Initiera LCD -skärmen med

UC1701Begin ();

UC1701Begin kan ta parametrar för att ändra stiften eller att ignorera RST -stiftet. Biblioteket använder bara hårdvaruspi (en programvaruspelare tillhandahålls inte). Displayen kan vändas i x- och y -axlarna. Det är användbart om du vill montera LCD -skärmen i en annan riktning.

Flera procedurer har kopierats från U8g2 -biblioteket:

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

Vissa procedurer är något annorlunda:

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

Strängritningsprocedurer överförs indexet för ett teckensnitt. Teckensnitt deklareras i flashminnet på Arduino så att de inte upptar dyrbar SRAM. Tre teckensnitt tillhandahålls (små, medelstora och stora). De är bara länkade till och upptar flashminne om du använder dem (cirka 500 till 2000 byte vardera).

"Färg" hanteras annorlunda än U8g2 -biblioteket. När LCD -skärmen rensas har den en mörk bakgrund. Om MakeMark (en global variabel) är sant, ritas det i vitt. Om MakeMark är falskt, ritas i mörker.

Vissa procedurer är unika för UC1701:

SetInverted ritar svart-på-vitt snarare än vitt-på-svart.

void SetInverted (bool inv);

Ljusstyrkan och kontrasten för UC1701 ställs in av:

  • void SetContrast (uint8_t -värde); // föreslås är 14
  • void SetResistor (uint8_t värde); // föreslås är 7

De arbetar tillsammans på ett ganska otillfredsställande sätt.

SetEnabled stänger av LCD -skärmen:

void SetEnabled (bool en);

Displayen tar 4uA när du sover. Du bör också stänga av bakgrundsbelysningen - kör den från en stift på Nano. Efter återaktivering kommer UC1701 att ha återställts; displayen rensas och kontrasten och motståndet har återställts till standardvärdena.

Så sammanfattningsvis är COG -skärmar billiga och en anständig storlek. De är lätta att ansluta till en Arduino.

Rekommenderad: