Intel Galileo in LCD display
LCD prikazovalniki (Liquid cristal display - prikazovalniki na tekoče kristale) omogočajo izpisovanje črk, številk in ostalih znakov. Uporabljamo jih kot vmesnike med uporabnikom in elektronsko napravo. Uporabili bomo dvovrstične LCD prikazovalnike z lastno osvetlitvijo, ki imajo v vsaki vrstici po 16 znakov. Vsak znak je sestavljen iz 5 x 8 pik.
LCD prikazovalniki brez možnosti osvetlitve zaslona imajo 14 priključkov, taki z možnostjo osvetlitve zaslona pa imajo 2 priključka več, torej 16 priključkov. Funkcija posameznega priključka je standardna, vedeti moramo le, kje se nahaja prvi priključek.
Slika 1: LCD prikazovalnik 2x16.
Priključki od 7 do 14 LCD prikazovalnika so namenjeni podatkovnim linijam (od D0 do D7). Preko njih se prenašajo podatki od Intel Galilea do LCD-ja, če pišemo v LCD in od LCD-ja do Intel Galilea, če beremo iz LCD-ja. LCD prikazovalniki lahko delujejo v 8-bitnem ali 4-bitnem načinu. Mi bomo izbrali 4-bitni način, saj s tem privarčujemo pri pinih razvojne plošče Intel Galileo. Ker iz LCD-ja ne bomo ničesar brali, bomo priključek 5 (R/W) povezali z maso. Podatki se pri 4-bitnem načinu delovanja prenašajo po 4 bite hkrati, zato moramo poslati obe polovici bajta posebej, pošiljamo pa jih po podatkovnih linijah od D4 do D7. Tretji priključek LCD-ja služi nastavitvi kontrasta. Kontrast reguliramo z napetostjo na tem priključku.
LCD krmilimo tako, da mu pošiljamo ukaze ali podatke. Če postavimo priključek 4 (RS) v stanje logične 0, bo LCD sprejel podatek kot ukaz, če pa ga postavimo na nivo logične 1, bo LCD sprejel navaden podatek. Priključek 6 (E) je namenjen vklopu prikazovalnikove logike. Ko pošiljamo neki podatek na LCD, ga moramo nekako obvestiti, da je na podatkovnih linijah nov podatek. To storimo tako, da ta priključek vklopimo (postavimo na 1) in izklopimo (postavimo na 0). Ob tem prehodu bo LCD sprejel nov podatek.
Večina opisanega je narejeno in shranjeno v knjižnici, ki jo na začetku vključimo v naš program s predprocesorsko direktivo: #include <LiquidCrystal.h>. Mi v programu enostavno določimo pine, na katere bomo priključili LCD in vrsto LCD-ja.
Program za krmiljenje LCD prikazovalnika:
Napisali bomo program, ki bo krmilil LCD prokazovalnik po naslednjih zahtevah:
Po vklopu se naj na LCD prikazovalniku izpiše v prvo vrstico SERS, v drugo pa Maribor. Napis se naj prikazuje 2 sekundi.
Po 2 sekundah se naj napis izbriše in prikaže novi napis: v prvi vrstici Jesenska sola, v drugi pa elektronike. Tudi ta napis se naj prikazuje 2 sekundi.
Napis se naj po 2 sekundah izbriše in pojavi novi napis, v prvi vrstici Drzi na tipko v drugi vrstici pa za vklop LED.
Po dveh sekundah naj program stalno preverja, ali je tipka, ki je priključena na pin 12 sklenjena. Če je tipka sklenjena, se naj vklopi LED dioda, ki je priključena na pin 13 in na LCD prikazovalniku prikaže napis, v prvi vrstici LED dioda je in v drugi vrstici vklopljena. Če tipka ni sklenjena, se naj LED dioda izklopi, na LCD prikazovalniku pa prikaže napis, v prvi vrstici LED dioda je in v drugi vrstici izklopljena.
Priključitev posameznih elementov na razvojno ploščo Intel Galileo:
Slika 2: Priključitev elementov na razvojno ploščo Intel Galileo.
/*
Krmiljenje LCD prikazovalnika.
Avtor: MIlan Ivič, oktober 2014
*/
#include <LiquidCrystal.h> //Vključitev knjižnice za LCD
/*
Priključitev LCD displaya:
RS (Priključek 4 na LCD-displayu): Pin2
EN (Priključek 6 na LCD-displayu): Pin3
D4 (Priključek 11 na LCD-displayu): Pin5
D5 (Priključek 12 na LCD-displayu): Pin6
D6 (Priključek 13 na LCD-displayu): Pin8
D7 (Priključek 14 na LCD-displayu): Pin:9
*/
//Deklariranje spremenljivk
int Tipka = 12; //Tipka je priključena na pin 12
int LED = 13; //LED dioda je priključena na pin 13
LiquidCrystal lcd(2,3,5,6,8,9); //Inicializacija LCD
int Stanje_tipke = 0; //Inicializacija spremenljivke Stanje_tipke
//Zapis setup finkcije:
void setup()
{
pinMode(Tipka, INPUT); //Pin 12 je vhodni pin
pinMode(LED, OUTPUT); //Pin 13 je izhodni pin
lcd.begin(16,2); //LCD 2x16 => dve vrstici, vsaka po 16 znakov
lcd.setCursor(5,0); //Začni pisati od 5 znaka naprej (prvi znak je znak 0, prva vrstica je vrstica 0)
lcd.print("VAJA"); //Izpiši VAJA
lcd.setCursor(3,1); //Piši v drugo vrstico od znaka 3 naprej
lcd.print("Slovenija"); //Izpiši Slovenija
delay(2000); //Počakaj 2 sekundi (2000 ms)
lcd.clear(); //Pobriši LCD display
lcd.setCursor(1,0);
lcd.print("Jesenska sola");
lcd.setCursor(2,1);
lcd.print("elektronike");
delay(2000);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Drzi na tipko");
lcd.setCursor(1,1);
lcd.print("za vklop LED");
delay(2000);
lcd.clear();
}
//Zanka za krmiljenje
void loop()
{
Stanje_tipke = digitalRead(Tipka); //Branje tipke
if (Stanje_tipke == HIGH) //Ali je tipka sklenjena?
{
digitalWrite(LED, HIGH); //Ja, tipka je sklenjena, vklopi LED diodo
lcd.setCursor(2,0); //Prva vrstica, znak 2 (prvi znak je znak 0)
lcd.print("LED dioda je");
lcd.setCursor(2,1); //Druga vrstica, znak 2
lcd.print("vklopljena "); //Za vklopljena izpiši še presledek
}
else
{
digitalWrite(LED, LOW); //Ne, tipka ni sklenjena, izklopi LED diodo
lcd.setCursor(2,0);
lcd.print("LED dioda je");
lcd.setCursor(2,1);
lcd.print("izklopljena");
}
delay(10); //Počakaj 10 ms
}
Električna shema priključitve elementov na razvojno plošči Intel Galileo:
Slika 3: Shema povezav elementov in priključitve na razvojno ploščo Intel Galileo.
Slika 4: Prikaz sestave na eksperimentalni ploščici in povezava z razvojno ploščo Intel Galileo.