i denne tutorial forklarer jeg, hvordan du opretter en LCD på en Arduino og viser dig alle de forskellige måder, du kan programmere den på. Jeg viser dig, hvordan du udskriver tekst, ruller tekst, laver brugerdefinerede tegn, blinker tekst og positionstekst. De er gode til ethvert projekt, der udsender data, og de kan gøre dit projekt meget mere interessant og interaktivt.
skærmen, jeg bruger, er en 16×2 LCD-skærm, som jeg købte for omkring $5. Du undrer dig måske over, hvorfor det kaldes en 16 2 2 LCD., Delen 16 2 2 betyder, at LCD ‘ et har 2 linjer og kan vise 16 tegn pr. Derfor kan en 16 2 2 LCD-skærm vise op til 32 tegn på .n gang. Det er muligt at vise mere end 32 tegn med rulning selv.
koden i denne artikel er skrevet til LCD ‘ er, der bruger standard Hitachi hd44780 driver. Hvis din LCD har 16 stifter, har den sandsynligvis Hitachi hd44780 driveren. Disse skærme kan tilsluttes i enten 4 bit mode eller 8 bit mode. Tilslutning af LCD ‘ et i 4 bit-tilstand foretrækkes normalt, da det bruger fire mindre ledninger end 8 bit-tilstand., I praksis er der ikke en mærkbar forskel i ydeevne mellem de to tilstande. I denne tutorial forbinder jeg LCD ‘ et i 4 bit-tilstand.
tilslutning af LCD til Arduino
Her er et diagram over stifterne på LCD ‘ et, jeg bruger. Forbindelserne fra hver pin til Arduino vil være de samme, men dine pins kan være arrangeret forskelligt på LCD-skærmen., Sørg for at tjekke databladet eller kigge efter etiketter på din særlige LCD:
Du skal muligvis også lodde en 16-pin-overskrift til din LCD, før du tilslutter den til en brødbræt. Følg diagrammet nedenfor for at wire LCD-til din Arduino:
modstanden i diagrammet ovenfor sæt baggrundsbelysningens lysstyrke. En typisk værdi er 220 ohm, men andre værdier fungerer også., Mindre modstande vil gøre baggrundslyset lysere.
potentiometeret bruges til at justere skærmens kontrast. Jeg bruger typisk et 10K Ohm potentiometer, men andre værdier vil også fungere.
Her er databladet for den 16×2 LCD-med alle de tekniske oplysninger om den skærm:
16×2 LCD-Datablad
Programmering Arduino
Alle nedenstående kode bruger LiquidCrystal-bibliotek, der kommer pre-installeret med Arduino IDE., Et bibliotek er et sæt funktioner, der let kan tilføjes til et program i et forkortet format.
for at kunne bruge et bibliotek skal det inkluderes i programmet. Linje 1 i koden nedenfor gør dette med kommandoen #include <LiquidCrystal.h>
. Når du medtager et bibliotek i et program, bliver alle koden i biblioteket uploadet til Arduino sammen med koden til dit program.
nu er vi klar til at komme ind i programmeringen! Jeg vil gå over mere interessante ting, du kan gøre i et øjeblik, men for nu lader bare køre et simpelt testprogram. Dette program vil udskrive “hej, verden!,”til skærmen. Indtast denne kode i Arduino IDE og uploade det til bestyrelsen:
#include <LiquidCrystal.h>LiquidCrystal lcd(12, 11, 5, 4, 3, 2);void setup() { lcd.begin(16, 2); lcd.print("hello, world!");}void loop() {}
Din LCD-skærm, skal se ud som dette:
LCD-Display Indstillinger
Der er 19 forskellige funktioner i LiquidCrystal-bibliotek til rådighed for os at bruge. Disse funktioner gør ting som at ændre placeringen af teksten, flytte tekst hen over skærmen eller få skærmen til at tænde eller slukke. Det følgende er en kort beskrivelse af hver funktion, og hvordan man bruger den i et program.,
LiquidCrystal()
LiquidCrystal()
funktion indstiller benene Arduino bruger til at oprette forbindelse til LCD. Du kan bruge en hvilken som helst af Arduinos digitale stifter til at styre LCD ‘ et. Bare sæt Arduino-pin-numrene inde i parenteserne i denne rækkefølge:
LiquidCrystal(RS, E, D4, D5, D6, D7)
RS, e, D4, D5, D6, D7 er LCD-stifterne.
sig for eksempel, at du vil have LCD-pin D7 til at oprette forbindelse til Arduino-pin 12., Bare sætte “12” i stedet for D7 i den funktion som denne:
LiquidCrystal(RS, E, D4, D5, D6, 12)
Denne funktion skal placeres før void setup()
sektionen af programmet.
lcd.begin()
Denne funktion indstiller dimensionerne på LCD-displayet. Det skal placeres før enhver anden Væskekrystalfunktion i afsnittet void setup()
i programmet. Antallet af rækker og kolonner er angivet som lcd.begin(columns, rows)
., For en 16×2 LCD, du vil bruge lcd.begin(16, 2)
, og for en 20×4 LCD-du ville bruge lcd.begin(20, 4)
.
lcd.clear()
denne funktion rydder enhver tekst eller data, der allerede vises på LCD-skærmen., Hvis du bruger lcd.clear()
med lcd.print()
og delay()
funktion i void loop()
afsnit, kan du lave en simpel blinkende tekst program:
lcd.home()
Denne funktion placerer markøren i øverste venstre hjørne af skærmen og udskrives efterfølgende tekst fra denne position. For eksempel erstatter denne kode de tre første bogstaver i ” hello worldorld!,”med X’ er:
lcd.setCursor()
Lignende, men mere nyttigt end lcd.home()
er lcd.setCursor()
. Denne funktion placerer markøren (og enhver trykt tekst) på enhver position på skærmen. Det kan bruges i afsnittet void setup()
eller void loop()
i dit program.
markørpositionen er defineret med lcd.setCursor(column, row)
. Kolonne-og rækkekoordinaterne starter fra nul (henholdsvis 0-15 og 0-1)., For eksempel ved hjælp af lcd.setCursor(2, 1)
i void setup()
sektionen af ” hej, verden!”program over udskrifter” hej, verden!”til den nederste linje, og flytter det til højre af to rum:
lcd.write()
Du kan bruge denne funktion til at skrive forskellige typer af data til LCD, for eksempel læsning fra en temperaturføler eller koordinaterne fra GPS-modulet., Du kan også bruge den til at udskrive brugerdefinerede tegn, som du selv opretter (mere om dette nedenfor). Brug lcd.write()
void setup()
eller void loop()
– afsnittet i dit program.
lcd.print()
denne funktion bruges til at udskrive tekst til LCD-skærmen. Det kan bruges i afsnittet void setup()
eller afsnittet void loop()
i programmet.
for at udskrive tal er ingen anførselstegn nødvendige. For at udskrive 123456789 skal du bruge lcd.print(123456789)
.,
lcd.print()
kan udskrive tal i decimal, binære, he .adecimale og oktale baser. For eksempel:
lcd.cursor()
denne funktion opretter en synlig markør. Markøren er en vandret linje placeret under det næste tegn, der skal udskrives til LCD ‘ et.
funktionen lcd.noCursor()
slår markøren fra., lcd.cursor()
og lcd.noCursor()
kan bruges sammen i void loop()
– afsnittet for at gøre en blinkende markør svarer til, hvad du kan se i mange text input felter:
Dette lægger en blinkende markør efter udråbstegnet i “hello, world!”
markører kan placeres hvor som helst på skærmen med funktionenlcd.setCursor()
. Denne kode placerer en blinkende markør direkte under udråbstegnet i ” hej, verden!,”:
lcd.blink()
Denne funktion opretter en blok stil markøren der blinker og slukker ved ca 500 millisekunder per cyklus. Brug det i afsnittet void loop()
. Funktionen lcd.noBlink()
deaktiverer den blinkende blokmarkør.
lcd.display()
denne funktion tænder enhver tekst eller markør, der er udskrevet på LCD-skærmen. Funktionen lcd.noDisplay()
slukker for tekst eller markører, der er trykt på LCD ‘en, uden at rydde den fra LCD’ ens hukommelse.,
disse to funktioner kan bruges sammen i afsnittet void loop()
for at oprette en blinkende teksteffekt. Denne kode vil gøre “hej, verden!”tekst blinker til og fra:
lcd.scrollDisplayLeft()
denne funktion fører alt, der er trykt på LCD ‘ et, og flytter det til venstre. Det skal bruges i afsnittet void loop()
med en forsinkelseskommando, der følger den. Funktionen flytter teksten 40 mellemrum til venstre, før den løber tilbage til det første tegn. Denne kode flytter ” hej, verden!,”tekst til venstre med en hastighed på et sekund pr. tegn:
tekststrenge længere end 40 mellemrum udskrives til linje 1 Efter 40.position, mens starten af strengen fortsætter med at udskrive til linje 0.
lcd.scrollDisplayRight()
Denne funktion opfører sig som lcd.scrollDisplayLeft()
, men flytter teksten til højre.
lcd.autoscroll()
Denne funktion tager en tekststreng og ruller det fra højre til venstre i intervaller af tegn i strengen., For eksempel, hvis du har en streng af tekst, der er 3 karakterer lang, det vil flytte tekst 3 pladser til venstre med hvert skridt:
Som lcd.scrollDisplay()
funktioner, teksten kan være op til 40 tegn i længden, før du gentager. Ved første øjekast synes denne funktion mindre nyttig endlcd.scrollDisplay()
funktioner, men det kan være meget nyttigt til at oprette animationer med brugerdefinerede tegn.
lcd.noAutoscroll()
lcd.noAutoscroll()
viser lcd.autoscroll()
funktionen fra., Brug denne funktion før eller efter lcd.autoscroll()
i afsnittet void loop()
for at oprette sekvenser af rulletekst eller animationer.
lcd.rightToLeft()
denne funktion indstiller den retning, som teksten udskrives på skærmen. Standardtilstanden er fra venstre mod højre ved hjælp af kommandoen lcd.leftToRight()
, men du kan finde nogle tilfælde, hvor det er nyttigt at udsende tekst i omvendt retning:
denne kode udskriver “hej, verden!”tekst som”!dlro ,, olleh”., Medmindre du angiver placeringen af markøren med lcd.setCursor()
, udskrives teksten fra positionen (0, 1), og kun det første tegn i strengen vil være synligt.
lcd.createChar()
Denne kommando giver dig mulighed for at oprette dine egne brugerdefinerede tegn. Hvert tegn på en 16 2 2 LCD har en 5 pi .el bredde og en 8 pi .el højde. Op til 8 forskellige brugerdefinerede tegn kan defineres i et enkelt program., For at designe dine egne figurer skal du lave en binær Matri.af din brugerdefinerede karakter fra en LCD-tegngenerator eller kortlægge det selv. Denne kode opretter en grad symbol (°):
Der er en masse seje ting, du kan få til at ske med disse 16×2 Lcd-skærme! Prøv at kombinere nogle af disse funktioner og se, hvad der sker.
Her er en video version af denne tutorial, så du kan se, hvad hver funktion gør på LCD i realtid: