5. .LCD kijelző kezelése és a könyvtárhasználat - Arduino és programozása

Keresés a weboldalon

Programozási alapismeretek
Tartalomhoz ugrás

Főmenü:

5. .LCD kijelző kezelése és a könyvtárhasználat

Haladás
LCD kijelző működési elve
A működés lényege egyrészt ismét a szemünk hiányosságán, másrészt a polarizáció jelenségén alapul. Ha egy polárszűrőn kereszül vezetjük át a fényt, azon csak a szűrőre merőleges hullámok haladnak át. A fény transzverzlis elektromágneses hullám, melynek a két összetevője merőleges egymásra, így polarizációs tulajdonságokat mutat. Szemünk erre érzéketlen. 2 polárszűrőt egymáshoz képest 90 fokkal elforgatunk, a háttérből érkező fény nem hatol át rajta. Viszont, ha elektromos előtérrel 90 fokot forgatunk a fény szögén, az alsó polárszűrő már átengedi a fényt, a szemlélő fénypontot lát. Van tehát egy egyenletes háttérvilágítás, és előtte képpontont méretű polárszűrő páros, közte az elektromos vezérelhetőséget biztosító folyadékkristály. Jellemzően a vezérlés kis energiát, és kis mélységet igényel, miáltal lapos, kis fogyasztású kijelző hozható létre. Ezen elven működnek az egyéb kijelzők is (pl. tv, monitor, telefon...), persze ezeknél a színek miatt a cellák szűrővel  bővülnek. A gyártási technológia olyan apró képpont cellákat képes létrehozni (20nm), hogy kis méretben is (pl. telefon kijelző) kiváló felbontás érhető ell, nagy tv-knél pedig megjelenhetett a szuper nagy 4K, 8K felbontás.
a használt LCD kijelző jellemzői és üzembehelyezése
A fejlesztőpanelra 2 soros, soronként 16 karakter megjelenítésére képes LCD kijelző került. A karakterek 5 x 8  pontos mátrixal ábrázolhatók, ami lényegesen jobb felbontást biztosít, mint azt láthattuk a 7 szegmenses kijelzőnél. Ezzel már -szinte- tetszöleges karakter ábrázolható, még ha szerényebb felbontású is. Kis számolással kiszámítható, 32 karakter x 40 képpont= 1280 képpont vezérlésére van szükség. Ez már nem bízhatő direkben a processzorra, hanem egy interface integtált áramkör (HD44780U) veszi le a vezérlés terhét a mikrovezérlőről, leegyszerűsítve annak programozását. Az interface IC-be -egyebek mellett- mintegy 240 karakter forma van eltárolva, leegyszerüsítve ezzel a karakterek megjelenítésének képpontonkénti vezérlési igényét.
Fontos! A fejlesztópanelon LCD-je működtetéséhez
  • a JP9 jumpert be kell dugni,
  • a 41-s portot LOW szintre kell állítani,
  • a 8-s porton engedélyezni (HIGH) kell az LCD-t, az adatokat a felső 4 bítre (D84-D87), a 26-29 portokta küldjük,
  • állítsuk be a kontrasztot az R2 potméterrel.
LCD panel kivezetései
Fejlesztőpanel LCD portjai
Fejlesztőpanel LCD kapcsolási vázlat
LCD kijelző programozása, könyvtárhasználat
Az LCD működését támogató beépített inrerface IC ellenére is nagyon összetett feladat a kijelző programozása. Ebben segít a könyvtár használata. A könyvtár hasonlít a korábban tanult funkcióhíváshoz, annyi különbséggel, a rutint a programozó ömaga készíti és illeszti a programja végére, addig a könytárakat bárki elkészítheti, közzéteszi, letölthetjük, és a "használati utasítás" szerint beépíthetjük programunkba.
Könyvtárak kezelése
  • Az Arduino IDE program a könyvtárakat az "Eszközök" menüsor "Könytárak kezelése" menüpontjából kezeli. Rákattintva az Arduino -külön ablakba- beolvassa a
    github.com címen
    tárolt könyvtárakat. A nagy számú elem miatt érdemes a keresőt használni, leginkább a könyvtár címében való kifejezésre keresni. Minden könyvtárelem, a beépülő programelemeken túl, általában részletes "használati utasítást" tartalmaz, sőt a liszecjogokat is részletezi. Az utóbbit is érdemes elolvasni, nehogy egy üzleti célra készülő program esetén, jogi korlátokba
    ütközzünk. Az a biztos, ha egy korlátozásmentes, szabad felhasználású könyvtárelemet választunk.
  • A kiválasztott programot, feltéve, ha az Arduinon keresztül töltjük le, közvetlenül az Ardiono telepítésekor választott programmappa könyvtár mappájába (libraries) telepíti. Programszerekesztéskor a program legeleéjén, az #include "könyvtárnév.h" utasítással hivhatjuk meg a könyvtár elemet.
  • A könyvtár meghívása után, gondoskodnunk kell a változó paraméterek (pl. porthasználati kapcsolat, bemenő változók értékei...) megadásáról. Ezekről tájékozódhatunk a könytár működésének ismertetőjéből.
  • A programunkhoz használható telepített könyvtárakról tájékozódhatunk a "Vázlat" menüsor "Könyvtár tartalmazza" menüpontban, ahol a megjelenő listában először az Ardiuno telepítésekor beépülő könyvtárak címei jelennek meg, a list alján pedig az utólag általunk telepített -ha van ilyen- könytárelemeket találjuk.
Nézzünk egy példát, az aktuális LCD-t vezérlő könyvtár használatára. A LquideCristal nevű könyvtárelem oly gyakori, hogy az, az Arduino program telepítésekor automatikusan megjelenik a könytárunkban.
// LiquidCrystal  LCD fuggvenykonyvtar  2x16 karakteres LCD vezérléshez
#include "LiquidCrystal.h" // A LiquidCrystal könytár meghívása
LiquidCrystal lcd(40, 41, 42, 26, 27, 28, 29);  // Az LCD bekotese
// RS(40), R/W(41), E(42), D4(26) ,D5(27), D6(28), D7(29)

void setup() {
pinMode(8, OUTPUT);
digitalWrite(8, HIGH); // Hatter bekapcsol
lcd.begin(16, 2); //Az LCD 16 oszlop, 2 sor,  
lcd.print("Hello, World!");  //szöveg kiírása LCD-re
}
void loop() {
lcd.setCursor(0, 1);  //A kiiras helye: 0. oszlop, 2. sor
lcd.print(millis()/1000);  //eltelt masodperc a bekapcsolas ota
}
LCD kijelző programozása
Könyvtárhívás
A mintapélda első sora mutatja a könyvtárhívás utasítása a #include "LiquidCrystal.h". Több könyvtárelem is meghívható egy programhoz, viszont minden elem meghívásához külön-külön használni kell  a #include könyvtárnév.h utasítást!
Alapbeállítás
A könyvtárelemként meghívott lcd vezérlő alapbeállításához az LiquidCrystal lcd() utasítás szükséges. Itt lehet beállítani a kijelző üzemmódját. Többféle üzemmódban is lehetséges működtetni. A formátum beírásával  az üzemmód automatikusan beáll.
Üzemmódok
LiquidCrystal lcd(rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd(rs, rw, enable, d4, d5, d6, d7)
LiquidCrystal lcd(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7)
LiquidCrystal lcd(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7)
Példáinkban  a 2-ként szereplő un. 4 bites beállítást használjuk. Alapvetően használható a 4 bites, vagy a 8 bites  beállítás. Előbbi kevesebb csatlakozási pontot igényel, az utóbbi viszont gyorsabb kiírást biztosít.
Megjegyzés, további 1 port csökkentését érhetünk el, ha a kijelző "rw"  lábát földpontra kötjük, A fejlesztő panelon az "rw" láb a 41-s portra csatlakozik, így ha a legegyszerűbb 1-s üzemmódot választanának, úgy gondoskodnunk kell a 41-s port LOW szintre való beállításáról.
Ha szeretnénk háttérvilágítást, azt a 8. port HIGH szintre állításával érhetjük el.
Az alapbeállításokat a void setup () utasítás elé kell írni!

Az lcd.begin(16, 2); utasítás is része az alapbeállításnak, a használt kijelző milyenségét deklarálja. Az argumentum első száma a kijelző oszlopainak-, a második szám a sorok számát jelenti. A fejlesztő panelon 2 soros, 16 karakteres LCD található! Az utasítás elhelyezése a void setup()-ba kerül!
LCD kezelő könyvtár vezérlő utasításai
lcd.clear ();
Funkció: Kijelző kiírásainak törlése, kurzor 0,0 pozicióba (bal felső sarok) állítása.

lcd.home ();
Funkció: A kurzor 0,0 pozicióba (bal felső sarok) állítása.

lcd.setCursor (oszlop, sor);
Funkció: A kurzor oszlop, sor pozicióba állítása. A sor- és oszloppozició 0 értékkel kezdődik!

lcd.write (adat);
Funkció: Karakter kiírása az aktuális kurzor poziciótól kezdődően.

lcd.print (adat);
Funkció: Tetszőleges adat (char, byte, int, long vagy string) kiírása az aktuális kurzor poziciótól kezdődően. Ezt használjuk adatkiírásra!

lcd.cursor ();
Funkció: A következő karakter helyének kurzorpozició alsó vonással való megjelenítése.

lcd.noCursor ();
Funkció: A kurzorpozició elrejtése.

lcd.blink ();
Funkció: A kurzorpozició villogtatása.

lcd.noBlink ();
Funkció: A kurzorpozició villogás kikapcsolása.

lcd.display ();
Funkció: A kikapcsolt display visszakapcsolása, ha azt előtte ki lett kapcsolva (korábbi adatok újra megjelennek).

lcd.noDisplay ();
Funkció: Kikapcsolja a displayt, a kijelzett adatok maradnak.

lcd.scrollDisplayLeft ();
Funkció: Egy szóközzel balra lépteti a  display tartalmát és a kurzort.

lcd.scrollDisplayRight ();
Funkció: Egy szóközzel jobbra lépteti a  display tartalmát és a kurzort.

lcd.noAutoscroll ();
Funkció: Kikapcsolja a folyamatos görgetést

lcd.leftToRight ();
Funkció: Az utasítástól kezdődően a kiírt új szöveg balról jobbra lép be a kijelzőn, a korábbi kiírások változatlansága mellett.

lcd.rightToLeft ();
Funkció: Az utasítástól kezdődően a kiírt új szöveg jobbról balra lép be a kijelzőn, a korábbi kiírások változatlansága mellett.
Egy példa a számok eltolására
// include the library code:
#include <LiquidCrystal.h>

// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 40, rw = 41, en = 42, d4 = 26, d5 = 27, d6 = 28, d7 = 29;
LiquidCrystal lcd(rs, rw, en, d4, d5, d6, d7);

void setup() {
 // set up the LCD's number of columns and rows:
 lcd.begin(16, 2);
 pinMode (8, OUTPUT);
 digitalWrite (8, HIGH);
}

void loop() {
 // set the cursor to (0,0):
 lcd.setCursor(0, 0);
 // print from 0 to 9:
 for (int thisChar = 0; thisChar < 10; thisChar++) {
   lcd.print(thisChar);
   delay(200);
 }

 // set the cursor to (16,1):
 lcd.setCursor(16, 1);
 // set the display to automatically scroll:
 lcd.autoscroll();
 // print from 0 to 9:
 for (int thisChar = 0; thisChar < 10; thisChar++) {
   lcd.print(thisChar);
   delay(200);
 }
 // turn off automatic scrolling
 lcd.noAutoscroll();

 // clear screen for the next loop:
 lcd.clear();
}
Vissza a tartalomhoz | Vissza a főmenühöz