ebben az oktatóanyagban elmagyarázom, hogyan állíthatok be egy LCD-t egy Arduino-ra, és megmutatom neked a programozás különböző módjait. Megmutatom, hogyan kell szöveget nyomtatni, szöveget görgetni, egyéni karaktereket készíteni, szöveget villogni és szöveget elhelyezni. Nagyszerűek minden olyan projekthez, amely adatokat ad ki, és sokkal érdekesebbé és interaktívabbá tehetik a projektet.
a használt kijelző egy 16×2 LCD kijelző, amelyet körülbelül 5 dollárért vásároltam. Lehet, hogy vajon miért hívják a 16×2 LCD., A 16×2 rész azt jelenti, hogy az LCD 2 sorral rendelkezik, soronként 16 karaktert képes megjeleníteni. Ezért egy 16×2 LCD képernyő egyszerre akár 32 karaktert is megjeleníthet. Lehetőség van több mint 32 karakter megjelenítésére görgetéssel.
a kód ebben a cikkben van írva LCD, hogy használja a szabványos Hitachi HD44780 vezető. Ha az LCD-n 16 csap van, akkor valószínűleg a Hitachi HD44780 illesztőprogrammal rendelkezik. Ezek a kijelzők lehet vezetékes vagy 4 bites módban vagy 8 bites módban. Az LCD bekötése 4 bites módban általában előnyös, mivel négy kevesebb vezetéket használ, mint 8 bites mód., A gyakorlatban nincs észrevehető különbség a teljesítményben a két üzemmód között. Ebben a bemutatóban az LCD-t 4 bites módban csatlakoztatom.
az LCD csatlakoztatása az Arduino-hoz
itt van egy ábra a használt LCD-n lévő csapokról. Az egyes csapok csatlakozása az Arduino-hoz ugyanaz lesz, de a csapok eltérő módon rendezhetők az LCD-n., Győződjön meg róla, hogy ellenőrizze az adatlapot, vagy keresse meg a címkéket az adott LCD-n:
is, előfordulhat, hogy egy 16 TŰS fejlécet kell forrasztania az LCD-hez, mielőtt egy kenyérlemezhez csatlakoztatná. Kövesse az alábbi ábrát, hogy az LCD-t az Arduino-hoz vezesse:
a fenti ábrán látható ellenállás beállítja a háttérvilágítás fényerejét. Egy tipikus érték 220 Ohm, de más értékek is működni fognak., A kisebb ellenállások világosabbá teszik a háttérvilágítást.
a potenciométer a képernyő kontrasztjának beállítására szolgál. Általában 10K Ohm potenciométert használok, de más értékek is működni fognak.
itt található a 16×2-es LCD adatlapja a kijelzővel kapcsolatos összes műszaki információval:
16×2 LCD adatlap
Arduino
az alábbi kód az Arduino IDE-vel előre telepített liquidcrystal könyvtárat használja., A könyvtár olyan funkciók halmaza, amelyek rövidített formátumban könnyen hozzáadhatók a programhoz.
a könyvtár használatához be kell vonni a programba. Az alábbi kód 1. sora ezt a #include <LiquidCrystal.h>
paranccsal teszi. Ha egy könyvtárat is felvesz egy programba, a könyvtár összes kódja feltöltődik az Arduino-ba a program kódjával együtt.
most készen állunk a programozásra! Megyek át több érdekes dolog, amit tehetünk egy pillanat alatt, de most lehetővé teszi, hogy csak futtatni egy egyszerű tesztprogram. Ez a program kiírja: “hello, világ!,”a képernyőre. Írja be ezt a kódot az Arduino IDE-be, majd töltse fel a táblára:
#include <LiquidCrystal.h>LiquidCrystal lcd(12, 11, 5, 4, 3, 2);void setup() { lcd.begin(16, 2); lcd.print("hello, world!");}void loop() {}
az LCD képernyőnek így kell kinéznie:
LCD megjelenítési lehetőségek
a liquidcrystal könyvtárban 19 különböző funkció áll rendelkezésre. Ezek a funkciók olyan dolgokat tesznek, mint a szöveg helyzetének megváltoztatása, a szöveg áthelyezése a képernyőn, vagy a kijelző be-vagy kikapcsolása. Az alábbiakban bemutatjuk az egyes funkciók rövid leírását, valamint azt, hogyan kell használni egy programban.,
LiquidCrystal()
LiquidCrystal()
függvény beállítja az Arduino által az LCD-hez való csatlakozáshoz használt csapokat. Használhatja bármelyik Arduino digitális csapok, hogy ellenőrizzék az LCD. Csak tegye az Arduino pin számokat a zárójelbe ebben a sorrendben:
LiquidCrystal(RS, E, D4, D5, D6, D7)
RS, E, D4, D5, D6, D7 az LCD csapok.
például, mondjuk azt szeretné, LCD pin D7 csatlakozni Arduino pin 12., Csak helyezze a”12″ – et a D7 helyére az ilyen funkcióba:
LiquidCrystal(RS, E, D4, D5, D6, 12)
ezt a funkciót a program void setup()
szakasza előtt kell elhelyezni.
lcd.begin()
Ez a függvény beállítja az LCD méreteit. A Program void setup()
szakaszában minden más folyadékkristályos funkciót el kell helyezni. A sorok és oszlopok száma lcd.begin(columns, rows)
., Egy 16×2-es LCD esetén a lcd.begin(16, 2)
, míg egy 20×4-es LCD esetén a lcd.begin(20, 4)
használható.
lcd.clear()
Ez a funkció törli az LCD-n már megjelenített szöveget vagy adatokat., Ha a lcd.clear()
lcd.print()
és a delay()
függvényt használja a void loop()
szakaszban, egyszerű villogó szöveges programot készíthet:
lcd.home()
Ez a funkció a kurzort a képernyő bal felső sarkába helyezi, és ebből a pozícióból kinyomtat minden további szöveget. Például ez a kód helyettesíti a ” hello world!,”with X’ s:
hasonló, de hasznosabb, mint a lcd.home()
lcd.setCursor()
. Ez a funkció a kurzort (és minden nyomtatott szöveget) a képernyő bármely pontjára helyezi. Használható a program void setup()
vagy void loop()
szakaszában.
a kurzor pozícióját lcd.setCursor(column, row)
határozza meg. Az oszlop és a sorkoordináták nulláról indulnak (0-15, illetve 0-1)., Például a lcd.setCursor(2, 1)
használata a void setup()
“hello, világ!”program a nyomatok felett” hello, világ!”az alsó sorban, majd eltolódik jobbra a két mezőt:
lcd.write()
akkor használja ezt a funkciót, hogy írjon különböző típusú adatokat az LCD, például az olvasás egy hőmérséklet-érzékelő, vagy a koordinátákat a GPS-modul., Ön is használja, hogy nyomtassa ki az egyéni karaktereket, hogy hozzon létre magad (erről bővebben alább). Use lcd.write()
in the void setup()
or void loop()
section of your program.
lcd.print()
Ez a funkció a szöveg LCD-re történő nyomtatására szolgál. Használható avoid setup()
szakaszban vagy avoid loop()
szakaszban.
a számok nyomtatásához nincs szükség idézőjelre. Például a 123456789 nyomtatásához használja a lcd.print(123456789)
értéket.,
lcd.print()
a számokat decimális, bináris, hexadecimális és oktális alapokban is kinyomtathatja. Például:
lcd.cursor()
Ez a funkció látható kurzort hoz létre. A kurzor egy vízszintes vonal, amely az LCD-re nyomtatandó következő karakter alatt helyezkedik el.
a lcd.noCursor()
funkció kikapcsolja a kurzort., lcd.cursor()
és együtt használható a void loop()
szakaszban, hogy a villogó kurzor hasonló legyen ahhoz, amit sok szövegbeviteli mezőben lát:
Ez villogó kurzort helyez el a ” hello, world!”
kurzorok bárhol elhelyezhetők a képernyőn a lcd.setCursor()
funkcióval. Ez a kód egy villogó kurzort helyez közvetlenül a felkiáltójel alá a ” hello, world!,”:
lcd.blink()
Ez a funkció blokk stílusú kurzort hoz létre, amely ciklusonként körülbelül 500 milliszekundumon villog. Használja a void loop()
szakaszban. A lcd.noBlink()
funkció letiltja a villogó blokk kurzort.
lcd.display()
Ez a funkció bekapcsolja az LCD képernyőre nyomtatott szöveget vagy kurzorokat. A lcd.noDisplay()
funkció kikapcsolja az LCD-re nyomtatott szöveget vagy kurzorokat anélkül, hogy törölné azt az LCD memóriájából.,
Ez a két funkció együtt használható avoid loop()
szakaszban villogó szöveghatás létrehozásához. Ez a kód teszi a ” hello, világ!”text blink on and off:
lcd.scrollDisplayLeft()
Ez a funkció mindent kinyomtat az LCD-re, és balra mozgatja. Ezt avoid loop()
szakaszban kell használni, ezt követő késleltetési paranccsal. A funkció a szöveget 40 szóközt balra mozgatja, mielőtt az az első karakterhez visszatér. Ez a kód mozgatja a ” hello, világ!,”szöveg balra, egy másodperc sebességgel karakterenként:
A 40 szóköznél hosszabb szöveges karakterláncok az 1. sorba kerülnek a 40. pozíció után, míg a karakterlánc kezdete továbbra is a 0.sorra nyomtat.
lcd.scrollDisplayRight()
Ez a funkció úgy viselkedik, mint a lcd.scrollDisplayLeft()
, de a szöveget jobbra mozgatja.
lcd.autoscroll()
Ez a függvény egy szövegsorozatot vesz fel, és jobbról balra görgeti a karakterlánc karakterszámának lépéseit., Ha például 3 karakter hosszú szövegsorral rendelkezik, akkor a szöveg 3 szóközét minden lépéssel balra tolja:
mint például a lcd.scrollDisplay()
funkciók, a szöveg akár 40 karakter hosszúságú is lehet az ismétlés előtt. Első pillantásra ez a funkció kevésbé hasznosnak tűnik, mint a lcd.scrollDisplay()
funkciók, de nagyon hasznos lehet animációk készítéséhez egyedi karakterekkel.
lcd.noAutoscroll()
lcd.noAutoscroll()
kikapcsolja alcd.autoscroll()
funkciót., Használja ezt a funkciót a lcd.autoscroll()
void loop()
szakaszban a görgető szöveg vagy animációk sorozatának létrehozásához.
lcd.rightToLeft()
Ez a függvény határozza meg a szöveg képernyőre nyomtatásának irányát. Az alapértelmezett mód balról jobbra a lcd.leftToRight()
paranccsal történik, de előfordulhat, hogy bizonyos esetekben hasznos a szöveg fordított irányba történő kimenete:
Ez a kód kiírja a ” hello, world!”szöveg”!dlrow, olleh”., Hacsak nem adja meg a kurzor elhelyezését lcd.setCursor()
, a szöveg a (0, 1) pozícióból nyomtat, és csak a karakterlánc első karaktere lesz látható.
p>
Ez a parancs lehetővé teszi saját egyéni karakterek létrehozását. A 16×2-es LCD mindegyik karakterének 5 pixeles szélessége és 8 pixeles magassága van. Legfeljebb 8 különböző egyéni karakter definiálható egyetlen programban., Saját karaktereinek megtervezéséhez bináris mátrixot kell készítenie az egyéni karakteréről egy LCD karaktergenerátorból, vagy saját maga kell leképeznie. Ez a kód létrehoz egy fok szimbólum (°):
sok jó dolog lehet, hogy megtörténhet ezekkel 16×2 LCD! Próbálja meg kombinálni ezeket a funkciókat, hogy mi történik.
itt van egy videó változata ez a bemutató, így láthatjuk, hogy mi minden funkció nem az LCD valós időben: