Innehållsförteckning:
- Steg 1: Beskrivning av delar - LCD -knappsatsskyddsmodul
- Steg 2: Beskrivning av delar - I2C -seriemodul
- Steg 3: Anslutningar
- Steg 4: Gör RST -nyckeln användbar Liknande de andra 5 nycklarna
- Steg 5: Programvara
- Steg 6: Granska och diskutera
Video: 1602 LCD -knappsatsskyddsmodul med I2C -ryggsäck: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
Som en del av ett större projekt ville jag ha en LCD -skärm och en knappsats för navigering av några enkla menyer. Jag kommer att använda många av I/O -portarna på Arduino för andra jobb, så jag ville ha ett I2C -gränssnitt för LCD -skärmen. Så jag köpte lite hårdvara, bestående av en 1602 LCD -knappsatsskyddsmodul från DFRobot och en anonym I2C -seriemodul för LCD -skärmar. Jag vill använda dessa med en Arduino Nano. Sedan upptäckte jag att det finns några utmaningar för att få dessa komponenter att fungera tillsammans - men det är möjligt. Så jag vill dela med mig av min erfarenhet och kanske hjälpa några andra.
Detta foto är av den fungerande brödbrädan, som kan visa meddelanden på LCD -skärmen och identifiera knapptryckningar. LCD -skärmen styrs via I2C -gränssnittet, inklusive LCD -bakgrundsbelysningen. Nyckelpressarna tas emot av Arduino på stift A0 (det kan vara vilken som helst av de analoga stiften, förutom A4 och A5 som är bundna för I2C -gränssnittet).
Steg 1: Beskrivning av delar - LCD -knappsatsskyddsmodul
Skärmsmodulen för LCD -knappsatsen består av en vanligt förekommande 1602 LCD monterad ovanpå ett kretskort som rymmer nycklarna, och som tar en delmängd av LCD -anslutningarna och gör dem tillgängliga för huvudstiften på kretskortets undersida. Jag förstår att det här kortet är avsett att monteras ovanpå en Arduino Uno eller liknande och ger rätt stiftlayout för att det ska fungera i den miljön. Jag köpte den här modulen på Ebay från en leverantör i Kina. Sidhuvudstiften på kortets nedre (knappsats) sida är mestadels märkta men stiften på ovansidan, som är LCD -gränssnittet, är inte märkta. Men stiften på själva LCD -skärmen är märkta.
Steg 2: Beskrivning av delar - I2C -seriemodul
Seriemodulen har den vanliga 4-stifts rubriken för I2C och en uppsättning omärkta rubrikstift som jag förstår är avsedda att anslutas direkt till LCD-modulens undersida. Genom att studera etiketterna på LCD -skärmen kunde jag identifiera funktionerna hos stiften på seriemodulen.
Denna modul är baserad på IC PCF8574T som avslutar I2C -protokollet, har 3 stift för adresskontroll (20 till 27) och har 8 digitala ingångs-/utgångsstift P0 till P7. Enligt databladet för PCF8574T har varje I/O -stift en FET för att dra den till marken för LÅGT tillstånd och kan sjunka minst 20ma. I högläge har den en övergående aktiv uppdragning och sedan en fortsatt uppdragningsström på cirka 0,1 mA.
På den här modulen tas alla digitala I/O -stift, förutom P3, helt enkelt ut till rubrikstift (till höger på fotot). När det gäller P3 är den ansluten till basen på en transistor (synlig på bilden längst upp till höger strax under etiketten "LED"). Sändaren för den transistorn är ansluten till Vss (jord) och kollektorn är ansluten till huvudstift 16, där den kan användas för att styra LCD -bakgrundsbelysningen. På grund av transistorn är det logiska tillståndet omvänt i förhållande till det som antas i mjukvarubiblioteket. Det vill säga att LCD -bakgrundsbelysningen är PÅ när P3 -stiftet är lågt och AV när P3 -stiftet är högt.
Etiketten på transistorn säger L6 som enligt min forskning förmodligen gör det till en MMBC1623L6 som har en minsta strömförstärkning på 200. Med 0,1 mA basström bör den kunna bibehålla ett LÅGT tillstånd vid sin kollektor (modul Pin 16) med minst 20mA kollektorström.
Dessutom har denna modul en 10K potentiometer ansluten mellan +5 och jord, vars variabla ledning förs ut till stift 3 (tredje från botten på bilden). När den är ansluten direkt till LCD -skärmen kommer denna kruka att styra kontrasten på LCD -skärmen. Den funktionen tillhandahålls dock av en separat liknande kruka på LCD -skärmen, så den här potten på seriemodulen har ingen funktion.
Jag kunde inte hitta någon anslutning till INT -stiftet på PCF8574T.
UPPDATERING 22 augusti 2019
Som nämnts ovan har PCF8574 3 adresskontrollstift. Dessa verkar tas ut till dynorna på ryggsäckskortet där de är märkta A0, A1 och A2. De syns på bilden. Jag har inte testat detta, men det verkar nästan säkert att genom att överbrygga en eller flera av dessa stift till de intilliggande dynorna kan I2C -adressen styras över intervallet från 20 till 27. Vidare finns det en andra nästan identisk enhet, PCF8574A som har identisk funktionalitet som PCF8574 men täcker adressintervallet från 0x38 till 0x3F.
Adressen som din enhet faktiskt använder kan kontrolleras med en I2CScanner. Det finns flera enkla I2C -skannrar tillgängliga från olika källor. Den här på https://github.com/farmerkeith/I2CScanner identifierar också några av de hittade enheterna.
Steg 3: Anslutningar
Tack till ChaitanyaM17 som gav Fritzing -diagrammet som visar anslutningarna, som beskrivs nedan.
Kraft:
LCD -modulen har en stift på undersidan märkt "5.0V". Till höger, intill det finns två omärkta stift som båda är slipade.
Håller seriemodulen med I2C -gränssnittet i vänster ände, det finns 16 stift vid den nedre kanten. Den första av dessa är slipad, och den andra av dessa är +5v. Ett annat alternativ är att använda de två nedre stiften på I2C -gränssnittet för ström, men jag tyckte att det var mer bekvämt att använda stiften enligt beskrivningen ovan.
I2C -gränssnitt. På seriemodulen är den översta stiftet SCL (klocka) och den går till Arduino A5. Den andra nålen är SDA (data) och den går till Arduino A4.
LCD -utskriftsgränssnitt. Det finns 6 anslutningar mellan seriemodulen och LCD -knappsatsskyddet, alla mellan stift utan etiketter. Jag kommer att identifiera dem på LCD -modulen genom att räkna från höger till vänster, med den första stiftet som 1. Det finns 2 block med 8, så de går från 1 till 16. Jag identifierar dem på I2C -seriemodulen genom att räkna från vänster till Precis, det finns också 16 av dessa. Dessutom ger jag varje tråd en etikett, som är motsvarande stift på Arduino som normalt är associerad med den funktionen, vid en direktanslutning utan seriemodulen.
Så de 6 dataanslutningarna är:
Arduinoekvivalent // Seriell modulstift // LCD -knappsatsmodulstift
D4 // 11 // 5 D5 // 12 // 6 D6 // 13 // 7 D7 // 14 // 8 D8 // 4 // 9D9 // 6 // 10
LCD -bakgrundsbelysningskontroll: Detta använder ytterligare en anslutning:
Arduinoekvivalent // Seriell modulstift // LCD -knappsatsmodulstift
D10 // 16 // 11
Knappsatsgränssnitt: Detta använder en enda kabel från LCD -modulens stift på undersidan märkt "A0", till stift A0 på Arduino. Det var åtminstone ganska enkelt!
Steg 4: Gör RST -nyckeln användbar Liknande de andra 5 nycklarna
RST kan anslutas direkt till RESTART -ingången på Arduino Nano.
Men om du vill att RST -tangenten ska vara användbar i programvaran för andra saker, kan detta göras genom att ansluta ett 15K -motstånd mellan RST -stiftet och A0 -stiftet på undersidan av LCD -knappsatsskärmen.
Detta fungerar enligt följande: Det finns ett 2K -motstånd mellan +5V och högerknappen. Sedan en kedja med successivt större motstånd för var och en av de andra tangenterna (330R till UPP -tangenten, 620R till DOWN -tangenten, 1K till VÄNSTER -tangenten och 3K3 till SELECT -tangenten. Alla tangenter (inklusive RST -tangenten) ansluts till Vid anslutning till en 10 bitars A/D -omvandlare (som för Arduino Nano A0) levererar de ungefär följande värden:
Höger = 0; Upp = 100; Ned = 260; Vänster = 410; Välj = 640.
Med 15 k -motståndet mot RST levererar det cirka 850.
Programvaran använder värden runt mittpunkterna mellan dessa värden för att bestämma vilken knapp som har tryckts in.
Steg 5: Programvara
Användbar programvara är naturligtvis en övning för läsaren. Men för att komma igång kan du titta på min testprogramvara. Jag använde biblioteket NewLiquidCrystal, som innehåller stöd för I2C -gränssnittet. Allt fungerade bara när jag väl har installerat biblioteken korrekt.
Huvudpunkten var att vända polariteten för bakgrundsbelysningen OFF och ON -kommandon (på grund av transistorn på I2C -modulen som förklaras i avsnittet Beskrivning av delar).
UPPDATERING 22 augusti 2019
Om du har problem med att LCD -skärmen inte fungerar, kontrollera I2C -adressen till din seriella ryggsäck med en I2C -skanner. En lämplig skanner är ansluten. Om det behövs justerar du sedan den första parametern i uttalandet
LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7);
Steg 6: Granska och diskutera
Som du kan se fick jag huvudfunktionerna att fungera.
Min nästa avsikt är att lägga detta i en projektlåda som en del av ett annat projekt. Men efter att ha gett mig ut på den här vägen lärde jag mig att det finns en annan svårighet som jag inte hade räknat med.
Svårigheten är att denna LCD -knappsatsmodul inte är installerad för att installeras i en låda. Vilken typ av låda som helst. Knapparna på de sex tangenterna ligger långt under LCD -skärmens nivå, så att om modulen är monterad i en låda (t.ex. i locket) med toppen av LCD -kretskortet i linje med lockets undersida, topparna av knapparna är cirka 7 mm under lockets ovansida.
Möjliga lösningar är:
a) Håll ut med det. Borra åtkomsthål i locket och använd ett verktyg (t.ex. en nedskuren sticknål med lämplig diameter) för att trycka på knapparna.
b) Ta bort LCD -skärmen från modulens kretskort och utför kirurgi på knappsatsen så att de två komponenterna kan fästas på locket på projektlådan oberoende (jag tror att det fortfarande kan vara problem med att knapparna är för korta)
c) ta bort de befintliga knapparna och ersätt dem med högre knappar. De nya knapparna måste vara cirka 13 mm höga så att de kan manövreras genom locket på projektlådan). Utbytesknappbrytare är lätt tillgängliga i olika höjder, inklusive 13 mm.
d) Kassera LCD -knappsatsskärmsmodulen och använd separata LCD- och knappsatsenheter (dvs. börja om). Det finns ett brett utbud av knappsatser tillgängliga, men jag har inte sett en med samma 6-tangenters layout som på denna modul (dvs Select, Left, Up, Down, Right, Restart). Det kanske inte är en stor fråga, men en av anledningarna till att jag började med den här modulen var att jag trodde att den här nyckellayouten var vad jag ville ha.
Jag planerar att gå med lösning c) ovan och se hur jag går.
En annan bit av information som kan vara av intresse:
Med bakgrundsbelysningen PÅ är den nuvarande förbrukningen av detta projekt: Arduino Nano 21,5 ma; Seriemodul 3,6 ma; LCD -modul 27,5 mA; Totalt 52 mA.
Med bakgrundsbelysningen AV är den nuvarande förbrukningen för detta projekt: Arduino Nano 21,5 ma; Seriemodul 4,6 ma; LCD -modul 9,8 mA; Totalt 36 mA.
Rekommenderad:
Arduino LCD 16x2 Handledning - Gränssnitt 1602 LCD -skärm med Arduino Uno: 5 steg
Arduino LCD 16x2 Handledning | Gränssnitt 1602 LCD -skärm med Arduino Uno: Hej killar eftersom många projekt behöver en skärm för att visa data oavsett om det är någon DIY -mätare eller YouTube -prenumerationsräknare eller en kalkylator eller ett knapplås med display och om alla dessa typer av projekt är gjorda med arduino kommer de definitivt
I2C / IIC LCD -skärm - Använd en SPI LCD till I2C LCD -skärmen Använd SPI till IIC -modulen med Arduino: 5 steg
I2C / IIC LCD -skärm | Använd en SPI LCD till I2C LCD -skärmen Använda SPI till IIC -modulen med Arduino: Hej killar eftersom en vanlig SPI LCD 1602 har för många trådar att ansluta så det är mycket svårt att ansluta den till arduino men det finns en modul på marknaden som kan konvertera SPI -display till IIC -display så då behöver du bara ansluta 4 ledningar
I2C / IIC LCD -skärm - Konvertera en SPI LCD till I2C LCD Display: 5 steg
I2C / IIC LCD -skärm | Konvertera en SPI LCD -skärm till I2C LCD -skärm: Användning av spi -lcd -skärm behöver för många anslutningar att göra vilket är riktigt svårt att göra så jag hittade en modul som kan konvertera i2c lcd till spi lcd så låt oss komma igång
Character LCD I2c Adapter (I2c Connection Exempel): 12 steg (med bilder)
Character LCD I2c Adapter (I2c Connection Exempel): Jag gör ett anslutningsschema för en teckenvisning i2c -adapter. Kontrollera uppdateringarna på min webbplats. Nu lägger jag till olso ett kopplingsschema för att använda originalbiblioteket inte mitt forked.LiquidCrystal Arduino -bibliotek för karaktärens LCD -skärmar, gaffelprojekt
I2C bakgrundsbelysning Kontroll av en LCD -skärm 1602/2004 eller HD44780 Etc: 4 steg
I2C -bakgrundsbelysningskontroll av en LCD -skärm 1602/2004 eller HD44780 Etc: Denna instruktion visar hur du kan styra bakgrundsbelysningen på en LCD -skärm med hjälp av en I2C ADC -modul. Kontrasten kan kontrolleras på samma sätt efter att trimningspotentiometern har tagits bort