Innehållsförteckning:
Video: LCD COG för en Arduino Nano: 3 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
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
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
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
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:
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
Väggfäste för iPad som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: 4 steg (med bilder)
Väggfäste för iPad Som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: På senare tid har jag ägnat ganska mycket tid åt att automatisera saker i och runt mitt hus. Jag använder Domoticz som min hemautomationsapplikation, se www.domoticz.com för mer information. I min sökning efter en instrumentpanelapplikation som visar all Domoticz -information tillsammans
Övertyga dig själv om att bara använda en 12V-till-AC-omriktare för LED-ljussträngar istället för att koppla om dem för 12V: 3 steg
Övertyga dig själv om att bara använda en 12V-till-AC-linjeomvandlare för LED-ljussträngar istället för att koppla om dem för 12V: Min plan var enkel. Jag ville klippa upp en väggdriven LED-ljussträng i bitar och sedan dra om den för att gå av 12 volt. Alternativet var att använda en kraftomvandlare, men vi vet alla att de är fruktansvärt ineffektiva, eller hur? Höger? Eller är de det?
Nytt och förbättrat iPod -fodral för Five Gum (FÖR NANO 3G): 5 steg
Nytt och förbättrat Five Gum Ipod -fodral (FÖR NANO 3G): Tomcat94 Nyligen postat ett Ipod -fodral tillverkat av en Five Gum Wrapper. Jag bestämde mig för att göra något liknande, men för en Ipod Nano
1.5A linjär regulator för konstant ström för lysdioder för: 6 steg
1.5A linjär regulator för konstant ström för lysdioder för: Så det finns massor av instruktioner som täcker användning av LED -lampor med hög ljusstyrka. Många av dem använder den kommersiellt tillgängliga Buckpuck från Luxdrive. Många av dem använder också linjära regleringskretsar som toppar vid 350 mA eftersom de är mycket ineffektiva