I denne opplæringen vil jeg forklare hvordan du setter opp en LCD-skjermen på en Arduino og vise deg alle de forskjellige måtene du kan programmere den. Jeg vil vise deg hvordan å skrive ut tekst, bla til tekst, lage egendefinerte tegn, blink tekst, plassere tekst. De er flotte for alle prosjekt som utganger data, og de kan gjøre prosjektet mye mer interessant og interaktive.
skjermen jeg bruker er en 16×2 LCD-skjerm som jeg kjøpte for ca $5. Du lurer kanskje på hvorfor det kalles en 16×2 LCD-skjermen., Den delen 16×2 betyr at LCD-skjermen har 2 linjer, og kan vise 16 tegn per linje. Derfor, en 16×2 LCD-skjerm kan vise opp til 32 tegn på en gang. Det er mulig å vise mer enn 32 tegn med rulling om.
– koden i denne artikkelen er skrevet for LCD ‘ er som bruker standard Hitachi HD44780 driver. Dersom LCD-en har 16 pinner, så det har sannsynligvis Hitachi HD44780 driver. Disse skjermene kan være kabelbasert i enten 4 bits modus eller 8 bit modus. Kabling av LCD-skjermen på 4 bit modus er vanligvis foretrukket fordi den bruker fire mindre ledninger enn 8 bit modus., I praksis finnes det ikke er en merkbar forskjell i ytelse mellom de to modiene. I denne opplæringen vil jeg koble LCD-skjermen på 4 bit modus.
Koble LCD-skjermen til Arduino
Her er et diagram av pinnene på LCD-jeg bruker. Tilkoblinger fra hver pinne til Arduino vil være den samme, men pinnene kan være ordnet på en annen måte på LCD-skjermen., Pass på å sjekke dataarket eller se etter etiketter på dine egne LCD:
Også, kanskje du trenger å lodde en 16 pin header til din LCD-skjermen før du kobler den til en breadboard. Følg diagrammet nedenfor for å koble LCD-skjermen til Arduino:
motstanden i diagrammet ovenfor angir bakgrunnslyset. En typisk verdi er 220 Ohm, men andre verdier vil arbeide for., Mindre motstander vil gjøre baklyset, lysere.
potensiometeret er brukt for å justere skjermens kontrast. Jeg bruker vanligvis en 10K Ohm potensiometer, men andre verdier vil også fungere.
Her er dataarket for 16×2 LCD med alt av teknisk informasjon om bildet:
16×2 LCD-Datablad
Programmering Arduino
Alle av koden nedenfor bruker LiquidCrystal-biblioteket som kommer forhåndsinstallert med Arduino IDE., Et bibliotek er et sett av funksjoner som lett kan bli lagt til et program i en forkortet format.
for å bruke et bibliotek, det må bli inkludert i programmet. Linje 1 i koden nedenfor gjør dette med kommandoen #include <LiquidCrystal.h>
. Når du inkluderer et bibliotek i et program, alt av kode i biblioteket blir lastet opp til Arduino sammen med koden for programmet ditt.
Nå er vi klar til å komme inn i programmering! Jeg skal gå over flere interessante ting du kan gjøre i et øyeblikk, men for nå kan bare kjøre en enkel test program. Dette programmet vil skrive ut «hello, world!,»til skjermen. Skriv denne koden inn i Arduino IDE og laste det opp til styret:
#include <LiquidCrystal.h>LiquidCrystal lcd(12, 11, 5, 4, 3, 2);void setup() { lcd.begin(16, 2); lcd.print("hello, world!");}void loop() {}
LCD-skjermen skal se ut som dette:
– LCD-Skjerm Valg
Det er 19 ulike funksjoner i LiquidCrystal biblioteket tilgjengelig for oss å bruke. Disse funksjonene gjør ting som å endre plasseringen av tekst, flytte tekst over skjermen, eller gjøre skjermen slå på eller av. Det følgende er en kort beskrivelse av hver enkelt funksjon, og hvordan bruke det i et program.,
LiquidCrystal()
LiquidCrystal()
funksjon sett pinnene Arduino bruker for å koble til LCD-skjermen. Du kan bruke hvilken som helst av Arduino digital pins til kontroll LCD-skjermen. Bare sette Arduino pin-tall i parentes i denne rekkefølgen:
LiquidCrystal(RS, E, D4, D5, D6, D7)
RS, E, D4, D5, D6, D7 er en LCD-pins.
For eksempel, si at du ønsker LCD-pin-D7-for å koble til Arduino pin-12., Bare sette «12» i stedet for D7 funksjon som dette:
LiquidCrystal(RS, E, D4, D5, D6, 12)
Denne funksjonen må plasseres før void setup()
– delen av programmet.
lcd.begin()
Denne funksjonen angir dimensjoner av LCD-skjermen. Det må plasseres før noen andre LiquidCrystal-funksjonen i void setup()
– delen av programmet. Antall rader og kolonner er angitt som lcd.begin(columns, rows)
., For en 16×2 LCD-skjermen, kan du bruke lcd.begin(16, 2)
, og for en 20×4 LCD-du ville bruke lcd.begin(20, 4)
.
lcd.clear()
Denne funksjonen sletter alle tekst eller data som allerede vises på LCD-skjermen., Hvis du bruker lcd.clear()
med lcd.print()
og delay()
funksjon void loop()
– delen, kan du lage en enkel blinkende tekst program:
lcd.home()
Denne funksjonen plasserer markøren i øvre venstre hjørne av skjermen, og skriver ut alle påfølgende tekst fra denne posisjonen. For eksempel, denne koden erstatter de tre første bokstavene i «hallo, verden!,»med X:
lcd.setCursor()
Lignende, men mer nyttig enn lcd.home()
er lcd.setCursor()
. Denne funksjonen plasserer markøren (og eventuelt trykt tekst) på hvilken som helst posisjon på skjermen. Det kan brukes i void setup()
eller void loop()
– delen av programmet.
markøren er definert med lcd.setCursor(column, row)
. Kolonnen og raden koordinater starte fra null (0-15 og 0-1 henholdsvis)., For eksempel, ved hjelp av lcd.setCursor(2, 1)
i void setup()
– delen av «hallo, verden!»programmet ovenfor skrives ut «hello, world!»til den nederste linjen, og skift den til høyre to områder:
lcd.write()
Du kan bruke denne funksjonen til å skrive forskjellige typer av data til LCD-skjermen, for eksempel å lese fra en temperatur sensor, eller koordinater fra en GPS-modul., Du kan også bruke den til å skrive ut egendefinerte tegn som du kan lage selv (mer om dette nedenfor). Bruk lcd.write()
i void setup()
eller void loop()
– delen av programmet.
lcd.print()
Denne funksjonen brukes til å skrive ut tekst til LCD-skjermen. Det kan brukes i void setup()
– delen eller void loop()
– delen av programmet.
for Å skrive ut tall, ingen anførselstegn er nødvendig. For eksempel for å skrive ut 123456789, bruk lcd.print(123456789)
.,
lcd.print()
kan skrive ut tall i desimal, binær, heksadesimal, og oktale baser. For eksempel:
lcd.cursor()
Denne funksjonen skaper en synlig markør. Markøren er en horisontal linje, plassert under det neste tegnet som skal skrives ut til LCD-skjermen.
funksjon lcd.noCursor()
viser markøren utenfor., lcd.cursor()
og lcd.noCursor()
kan bli brukt sammen i void loop()
– delen for å gjøre en blinkende markør som ligner på det du ser i mange skriving felt:
Dette plasserer en blinkende markør etter utropstegnet i «hallo, verden!»
Markører kan være plassert hvor som helst på skjermen med lcd.setCursor()
funksjon. Denne koden steder en blinkende markør direkte under utropstegn i «hallo, verden!,»:
lcd.blink()
Denne funksjonen lager en blokk stil markøren blinker på og av på ca 500 millisekunder per syklus. Bruk den i void loop()
– delen. Funksjonen lcd.noBlink()
deaktiverer den blinkende markør.
lcd.display()
Denne funksjonen slås på noen tekst-eller pekere som har blitt skrevet ut til LCD-skjermen. Funksjonen lcd.noDisplay()
slår av tekst eller pekere som er skrevet ut til skjermen, uten å fjerne det fra LCD-minne.,
Disse to funksjonene kan brukes sammen i void loop()
– delen for å skape en blinkende tekst effekt. Denne koden vil gjøre «hallo, verden!»teksten blinker på og av:
lcd.scrollDisplayLeft()
Denne funksjonen tar alt som er skrevet ut til LCD-skjermen og flytter den til venstre. Det bør brukes innenfor void loop()
– delen med en forsinkelse kommandoen etter det. Funksjonen vil flytte teksten 40 plasser til venstre før den looper tilbake til det første tegnet. Denne koden går den «hallo, verden!,»teksten til venstre, med en hastighet på ett sekund per karakter:
Tekst tekst som er lengre enn 40 områder vil bli skrevet ut til linje 1 etter den 40. posisjon, mens start av strengen vil fortsette å skrive ut til linje 0.
lcd.scrollDisplayRight()
Denne funksjonen oppfører seg som lcd.scrollDisplayLeft()
, men flytter teksten til høyre.
lcd.autoscroll()
Denne funksjonen tar en tekststreng, og ruller det fra høyre til venstre i trinn av antall tegn i strengen., For eksempel, hvis du har en tekststreng som er 3 tegn, det vil forskyve tekst 3 plasser til venstre med hvert trinn:
Som lcd.scrollDisplay()
funksjoner, teksten kan være opp til 40 tegn i lengde før du gjentar. Ved første øyekast, er denne funksjonen virker mindre nyttig enn lcd.scrollDisplay()
funksjoner, men det kan være svært nyttig for å lage animasjoner med egendefinerte tegn.
lcd.noAutoscroll()
lcd.noAutoscroll()
viser lcd.autoscroll()
funksjon av., Bruk denne funksjonen før eller etter lcd.autoscroll()
i void loop()
– delen for å lage sekvenser for å rulle teksten eller animasjoner.
lcd.rightToLeft()
Denne funksjonen angir retningen at teksten er skrevet ut til skjermen. Standard modus er fra venstre til høyre ved å bruke kommandoen lcd.leftToRight()
, men du kan finne i noen tilfeller er det nyttig å utdata tekst i motsatt retning:
Denne koden skrive ut «hello, world!»teksten «!dlrow ,olleh»., Med mindre du angir plassering av markøren med lcd.setCursor()
, vil teksten ut fra (0, 1) posisjon, og bare det første tegnet i strengen vil bli synlig.
lcd.createChar()
Denne kommandoen lar deg opprette din egen egendefinerte tegn. Hver karakter av en 16×2 LCD-skjermen har en 5 pixel bredde og en 8 pixel høyde. Opp til 8 forskjellige egendefinerte tegn kan være definert i et enkelt program., For å designe ditt eget tegn, vil du trenger for å lage en binær matrise av din custom karakter fra et LCD-karakter generator eller kart det selv. Denne koden skaper en grad symbol (°):
Det er mange kule ting du kan gjøre skje med disse 16×2 Lcd-skjermer! Prøv å kombinere noen av disse funksjonene og se hva som skjer.
Her er en video versjon av denne opplæringen, slik at du kan se hva hver funksjon ikke på LCD-skjermen i sanntid: