Innholdsfortegnelse:
- Trinn 1: Beskrivelse av deler - LCD -tastaturskjermmodul
- Trinn 2: Delbeskrivelse - I2C Serial Module
- Trinn 3: Tilkoblinger
- Trinn 4: Gjør RST -nøkkelen brukbar i likhet med de andre 5 tastene
- Trinn 5: Programvare
- Trinn 6: Gjennomgang og diskusjon
Video: 1602 LCD -tastaturskjermmodul med I2C -ryggsekk: 6 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
Som en del av et større prosjekt ønsket jeg å ha en LCD -skjerm og et tastatur for navigering av noen enkle menyer. Jeg kommer til å bruke mange av I/O -portene på Arduino for andre jobber, så jeg ønsket et I2C -grensesnitt for LCD -skjermen. Så jeg kjøpte litt maskinvare, bestående av en 1602 LCD -tastaturskjermmodul fra DFRobot og en anonym I2C -seriemodul for LCD -skjermer. Jeg vil bruke disse med en Arduino Nano. Da fant jeg ut at det er noen utfordringer for å få disse komponentene til å fungere sammen - men det er mulig. Så jeg vil dele min erfaring og kanskje hjelpe noen andre.
Dette bildet er av det fungerende brødbrettet, som kan vise meldinger på LCD -skjermen og identifisere tastetrykk. LCD -skjermen styres gjennom I2C -grensesnittet, inkludert LCD -bakgrunnsbelysningen. Tastetrykkene mottas av Arduino på pinne A0 (det kan være hvilken som helst av de analoge pinnene, bortsett fra A4 og A5 som er bundet opp for I2C -grensesnittet).
Trinn 1: Beskrivelse av deler - LCD -tastaturskjermmodul
LCD -tastaturets skjermmodul består av en vanlig 1602 LCD montert på toppen av et kretskort som inneholder nøklene, og som tar et delsett av LCD -tilkoblingene og gjør dem tilgjengelige for toppnålene på undersiden av kretskortet. Jeg forstår at dette brettet er beregnet på å monteres på toppen av en Arduino Uno eller lignende, og gir den riktige pinneoppsettet for at det skal fungere i det miljøet. Jeg kjøpte denne modulen på Ebay fra en leverandør i Kina. Topptekstene på den nedre (tastatur) siden av brettet er stort sett merket, men pinnene på oversiden, som er LCD -grensesnittet, er ikke merket. Imidlertid er pinnene på selve LCD -en merket.
Trinn 2: Delbeskrivelse - I2C Serial Module
Seriemodulen har den vanlige 4-pinners overskriften for I2C, og et sett med umerkede toppstifter som jeg forstår er ment å plugge direkte i undersiden av LCD-modulen. Ved å studere etikettene på LCD -skjermen, var jeg i stand til å identifisere funksjonene til pinnene på den serielle modulen.
Denne modulen er basert på IC PCF8574T som avslutter I2C -protokollen, har 3 pinner for adressekontroll (20 til 27) og har 8 digitale inngangs-/utgangspinner P0 til P7. I henhold til databladet til PCF8574T har hver I/O -pinne en FET for å trekke den til bakken for LAV tilstand, og kan synke minst 20ma. I høy tilstand har den en forbigående aktiv pull-up og deretter en kontinuerlig pull-up strøm på omtrent 0,1 mA.
På denne modulen blir alle de digitale I/O -pinnene, bortsett fra P3, ganske enkelt ført ut til toppnålene (til høyre på bildet). Når det gjelder P3, er den koblet til bunnen av en transistor (synlig på bildet øverst til høyre like under etiketten "LED"). Emitteren til den transistoren er koblet til Vss (jord) og kollektoren er koblet til toppnål 16, hvor den kan brukes til å kontrollere LCD -bakgrunnsbelysningen. På grunn av transistoren er logikktilstanden reversert i forhold til den som antas i programvarebiblioteket. Det vil si at LCD -bakgrunnsbelysningen slås PÅ når P3 -pinnen er lav, og AV når P3 -pinnen er høy.
Etiketten på transistoren sier L6 som ifølge min forskning sannsynligvis gjør det til en MMBC1623L6 som har en minimum strømforsterkning på 200. Med 0,1 mA grunnstrøm bør den kunne opprettholde en LAV tilstand ved kollektoren (modul Pin 16) med minst 20mA kollektorstrøm.
I tillegg har denne modulen et 10K potensiometer koblet mellom +5 og jord, hvis variabel ledning bringes ut til pinne 3 (tredje fra bunnen på bildet). Når den er koblet direkte til LCD -skjermen, vil denne potten kontrollere kontrasten til LCD -skjermen. Denne funksjonen tilbys imidlertid av en egen lignende pott på LCD -skjermen, så denne potten på seriemodulen har ingen funksjon.
Jeg kunne ikke finne noen forbindelse til INT -pinnen til PCF8574T.
OPPDATERING 22. august 2019
Som nevnt ovenfor har PCF8574 3 adressekontrollpinner. Disse ser ut til å bli brakt ut til putene på ryggsekkbrettet der de er merket A0, A1 og A2. De kan sees på bildet. Jeg har ikke testet dette, men det virker nesten sikkert at ved å bygge en eller flere av disse pinnene til de tilstøtende putene, kan I2C -adressen styres over området fra 20 til 27. Videre er det en andre nesten identisk enhet, PCF8574A som har identisk funksjonalitet til PCF8574, men dekker adresseområdet fra 0x38 til 0x3F.
Adressen enheten din faktisk bruker, kan kontrolleres med en I2CScanner. Det er flere enkle I2C -skannere tilgjengelig fra forskjellige kilder. Denne på https://github.com/farmerkeith/I2CScanner identifiserer også noen av enhetene som ble funnet.
Trinn 3: Tilkoblinger
Takk til ChaitanyaM17 som ga Fritzing -diagrammet som viser forbindelsene, beskrevet nedenfor.
Makt:
LCD -modulen har en pinne på undersiden merket "5.0V". Til høyre ved siden av det er to umerkede pinner som begge er slipt.
Når du holder seriemodulen med I2C -grensesnittet i venstre ende, er det 16 pinner i nedre kant. Den første av disse er malt, og den andre av disse er +5v. Et annet alternativ er å bruke de to nederste pinnene på I2C -grensesnittet for strøm, men jeg syntes det var mer praktisk å bruke pinnene som beskrevet ovenfor.
I2C -grensesnitt. På den serielle modulen er den øverste pinnen SCL (klokke) og den går til Arduino A5. Den andre pinnen ned er SDA (data) og den går til Arduino A4.
LCD -utskriftsgrensesnitt. Det er 6 tilkoblinger mellom seriemodulen og LCD -tastaturskjermen, alle mellom pinner uten etiketter. Jeg vil identifisere dem på LCD -modulen ved å telle fra høyre til venstre, med den første pinnen som 1. Det er 2 blokker med 8, så de går fra 1 til 16. Jeg identifiserer dem på I2C -seriemodulen ved å telle fra venstre til Høyre, det er også 16 av disse. I tillegg gir jeg hver ledning en etikett, som er den tilsvarende pinnen på Arduino som normalt er knyttet til den funksjonen, i tilfelle en direkte tilkobling uten seriemodulen.
Så de 6 datatilkoblingene er:
Arduino -ekvivalent // Seriell modulpinne // LCD -tastaturmodulpinne
D4 // 11 // 5 D5 // 12 // 6 D6 // 13 // 7 D7 // 14 // 8 D8 // 4 // 9D9 // 6 // 10
LCD -bakgrunnsbelysningskontroll: Denne bruker en tilkobling til:
Arduino -ekvivalent // Seriell modulpinne // LCD -tastaturmodulpinne
D10 // 16 // 11
Tastaturgrensesnitt: Dette bruker en enkelt ledning fra LCD -modulpinnen på undersiden merket "A0", til pinne A0 på Arduino. Det var i hvert fall ganske enkelt!
Trinn 4: Gjør RST -nøkkelen brukbar i likhet med de andre 5 tastene
RST kan kobles direkte til RESTART -inngangen på Arduino Nano.
Men hvis du vil at RST -nøkkelen skal kunne brukes i programvaren til andre ting, kan dette gjøres ved å koble en 15K motstand mellom RST -pinnen og A0 -pinnen på undersiden av LCD -tastaturskjermen.
Dette fungerer som følger: Det er en 2K motstand mellom +5V og høyre tast. Deretter en kjede med gradvis større motstander for hver av de andre tastene (330R til UP -tasten, 620R til NED -tasten, 1K til VENSTRE -tasten og 3K3 til SELECT -tasten. Alle tastene (inkludert RST -tasten) kobles til Når de er koblet til en 10 -biters A/D -omformer (som for Arduino Nano A0) leverer de omtrent følgende verdier:
Høyre = 0; Opp = 100; Ned = 260; Venstre = 410; Velg = 640.
Med 15 k motstand mot RST leverer den ca 850.
Programvaren vil bruke verdier rundt midtpunktene mellom disse verdiene for å bestemme hvilken tast som er trykket på.
Trinn 5: Programvare
Nyttig programvare er selvfølgelig en øvelse for leseren. Men for å komme i gang kan du ta en titt på testprogramvaren min. Jeg brukte NewLiquidCrystal -biblioteket, som inneholder støtte for I2C -grensesnittet. Alt fungerte bare, når jeg har installert bibliotekene riktig.
Hovedpoenget var å reversere polariteten til kommandoene for bakgrunnsbelysning AV og PÅ (på grunn av transistoren på I2C -modulen som forklart i delen Beskrivelse).
OPPDATERING 22. august 2019
Hvis du har problemer med at LCD -skjermen ikke fungerer, må du sjekke I2C -adressen til den serielle ryggsekken ved hjelp av en I2C -skanner. En passende skanner er vedlagt. Juster deretter om nødvendig den første parameteren i setningen
LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7);
Trinn 6: Gjennomgang og diskusjon
Som du kan se, fikk jeg hovedfunksjonene til å fungere.
Min neste intensjon er å sette dette inn i en prosjektboks som en del av et annet prosjekt. Men etter å ha begynt på denne veien lærte jeg at det er en annen vanskelighet som jeg ikke hadde forventet.
Problemet er at denne LCD -tastaturmodulen ikke er konfigurert for å installeres i en eske. En hvilken som helst boks. Knappene på de 6 tastene er godt under nivået på LCD -skjermen, slik at hvis modulen er montert i en boks (f.eks. I lokket) med toppen av LCD -kretskortet i flukt med undersiden av lokket, vil toppene av tastene er omtrent 7 mm under toppen av lokket.
Mulige løsninger er:
a) Tål det. Bor tilgangshull i lokket og bruk et verktøy (f.eks. En kuttet strikkepinne med passende diameter) for å trykke på knappene.
b) Fjern LCD -skjermen fra kretskortet og utfør kirurgi på tastaturet slik at de to komponentene kan festes til lokket på prosjektboksen uavhengig (jeg tror det fortsatt kan være et problem med knappene som er for korte)
c) fjern de eksisterende knappene og erstatt dem med høyere knapper. De nye knappene må være omtrent 13 mm høye, slik at de kan betjenes gjennom lokket på prosjektboksen). Utskiftningsknappbrytere er lett tilgjengelige i en rekke høyder, inkludert 13 mm.
d) Kast LCD -tastaturets skjermmodul og bruk separate LCD- og tastaturenheter (dvs. start på nytt). Det er et bredt spekter av tastaturenheter tilgjengelig, men jeg har ikke sett en med samme 6-tasters layout som på denne modulen (dvs. Velg, Venstre, Opp, Ned, Høyre, Start på nytt). Det er kanskje ikke et stort problem, men en av grunnene til at jeg begynte med denne modulen var at jeg trodde dette nøkkeloppsettet var det jeg ønsket.
Jeg planlegger å gå med løsning c) ovenfor, og se hvordan jeg går.
En annen bit av informasjon som kan være av interesse:
Med bakgrunnslyset PÅ, er dagens forbruk av dette prosjektet: Arduino Nano 21,5 ma; Seriemodul 3,6 ma; LCD -modul 27,5 mA; Totalt 52 mA.
Med bakgrunnslyset AV, er dagens forbruk av dette prosjektet: Arduino Nano 21,5 ma; Seriemodul 4,6 ma; LCD -modul 9,8 mA; Totalt 36 mA.
Anbefalt:
Arduino LCD 16x2 Opplæring - Grensesnitt 1602 LCD -skjerm med Arduino Uno: 5 trinn
Arduino LCD 16x2 Opplæring | Grensesnitt 1602 LCD -skjerm med Arduino Uno: Hei Gutter siden mange prosjekter trenger en skjerm for å vise dataene enten det er en diy meter eller YouTube -abonnementsteller eller en kalkulator eller tastaturlås med skjerm, og hvis alle slike prosjekter er laget med arduino vil de definitivt
I2C / IIC LCD -skjerm - Bruk en SPI LCD til I2C LCD -skjermen Bruke SPI til IIC -modulen med Arduino: 5 trinn
I2C / IIC LCD -skjerm | Bruk en SPI LCD til I2C LCD -skjermen Bruke SPI til IIC -modulen med Arduino: Hei folkens siden en vanlig SPI LCD 1602 har for mange ledninger å koble til, så det er veldig vanskelig å koble den til arduino, men det er en modul tilgjengelig på markedet som kan konverter SPI -skjerm til IIC -skjerm, så da trenger du bare å koble til 4 ledninger
I2C / IIC LCD -skjerm - Konverter en SPI LCD til I2C LCD -skjermen: 5 trinn
I2C / IIC LCD -skjerm | Konverter en SPI LCD til I2C LCD -skjermen: bruk av spi lcd -skjerm trenger for mange tilkoblinger å gjøre, noe som er veldig vanskelig å gjøre, så jeg fant en modul som kan konvertere i2c lcd til spi lcd, så la oss komme i gang
Tegn LCD I2c -adapter (eksempel på I2c -tilkobling): 12 trinn (med bilder)
Character LCD I2c Adapter (I2c Connection Eksempel): Jeg gjør et tilkoblingsskjema for en tegnvisning i2c adapter. Sjekk oppdateringene på nettstedet mitt. Nå legger jeg til et system for kabelforbindelse for å bruke det originale biblioteket, ikke mitt forked.LiquidCrystal Arduino -bibliotek for karakter LCD -skjermer, gaffelprosjekt
I2C -bakgrunnsbelysningskontroll av en LCD -skjerm 1602/2004 eller HD44780 osv.: 4 trinn
I2C bakgrunnsbelysningskontroll av en LCD -skjerm 1602/2004 eller HD44780 osv.: Denne instruksjonen viser hvordan du kan kontrollere bakgrunnsbelysningen på en LCD -skjerm ved hjelp av en I2C ADC -modul. Kontrasten kan kontrolleres på samme måte etter å ha fjernet beskjæringspotensiometeret