11. Ekraani ühendamine ja teksti kuvamine 1602 LCD ekraanil
<- eelmine peatükk
järgmine peatükk ->
11.0. Seos eelmiste peatükkidega
Kümnendas peatükis juhtisime potentsiomeetriga servomootori tööd. Kas saame potentsiomeetriga veel midagi juhtida? Näiteks LCD ekraanil kuvatava kirja ja taustavalguse kontrastsust?
Ka oleme juba töötanud esimese teegiga. Ka selles peatükkis peame tööle panema teegi.
11.1. Eesmärk ja selgitused
Peatüki eesmärgiks on kuvada LCD ekraanile tekstilist infot. Alustuseks aga peame oskama LCD ekraani ühendada Arduinoga.
Esmapilgul tundub, et on heidutavalt palju juhtmeid—üheski peatükis ei ole olnud vajalik niivõrd suurel hulgal ühendusi. Anname sedakorda info ette pigem tabeli formaadis kasutamiseks—kas nii on kergem? Suurem kogus juhtmeid joonistatuna Fritzing-skeemile ei pruugi mingist hetkest enam kergesti loetav olla.
Selle peatükki järel õpilane oskab
11.2. Töövahendid:
11.3. Tegevused
11.3.1.LCD ühendamine Arduinoga, potentsiomeetriga, temperatuuri ja niiskuse anduriga
Seekord on vooluahelas juhtmeid ja viikusid üksjagu rohkelt. Tundub keerukas. Selle kogemuse tarvis anname 16X2 LCD ekraani ühendamiseks info ette pigem tabeli formaadis. Ülesanne on vastutusrikas—LCD kasutatavuse huvides ärge enne oma töö lõpliku resultaadi kontrollimist Arduinot vooluallikaga ühendage.
Harjutus A
Järgmisel leheküljel asuva tabeli alusel koostage vooluahel. Seejärel aga kontrollime üle—enne vooluallikaga ei ühenda.
LCD ühendused:
* tärniga tähistatud viigud on vaja deklareerida programmis LCD-ekraanile vastavat objekti luues. Ülejäänud, tärniga tähistamata ühendused on kas GND või toide—neid ei ole vaja objekti luues deklareerida. Jälgime, et ühendused ja programm oleks omavahel kooskõlas.
Potentsiomeetri ühendused: vt
11.3.2. Näidisskeem on meelega hästi pisikene
Vajadusel siiski saate ka nii võrrelda oma koostatud skeemi näidisskeemiga.
Kui oleme kontrollinud, kas kõik ikka õigesti paigas, alles siis on ohutu kokkupandud vooluahel USB kaabli abil ühendada oma arvutiga. Alates USB kaabliga ühendamisest on Arduinol ja temaga ühendatud vooluahela elementidel olemas toide.
Kui midagi nüüd muuta soovime, siis võtame kõigepealt toite maha—lihtsaim on eemaldada USB kaabel arvutil asuvast USB-kontaktist. Seejärel teeme vajalikud muudatused ning siis võime taas ühendada Arduino USB kaabli abil oma arvutiga.
11.3.3. Ja lisame ka programmi
#include <LiquidCrystal.h> /*laeme LCD ekraani library */ LiquidCrystal LCD_ekraan(10, 9, 5, 4, 3, 2); /*loome objekti LCD_ekraan, millel deklareerime ühendused Arduino viigudele järgmises järjekorras: RS (10), E (9), D4(5), D5(4), D6(3), D7(2). Vaata eespool ka kommentraari LCD viigude ühendamist puudutavas värvilises tabelis--tegemist on antud värvilises ühendamistasbelis tärniga tähistatud viigudega--st nendega, mis ei ole GND või toide. Objekti LCD_ekraan deklareerimisel on oluline viigude järjekord. Näiteks: kui anname ette teistsuguse järjekorra, siis tuleb ka tõsta ümber juhtmed. Näiteks LiquidCrystal LCD_ekraan(10, 9, 5, 3, 4, 2); puhul vaheta omavahel kollane ja roheline--peale uuesti käivitamist hakkab tööle. */ void setup() { Serial.begin(9600); LCD_ekraan.begin(16,2); /* Ütlesime programmile, et vaja on käivitada kaherealine ja kuuesteist märgiga LCD ekraan --NB! järjekord on oluline: 16, 2! */ LCD_ekraan.setCursor(0,0); /* ütleme LCD ekraani kursorile, kus asub kursori algpunkt*/ } void loop() { /*korduma pidavas osas: /*A) ülemine rida*/ LCD_ekraan.setCursor(0,0); /* esimene null tähistab esimese märgi asukohta, teine null märgib ülemist (st esimest) rida: arvutimaalimas alustame numbrite lugemist nullist!*/ LCD_ekraan.print("harjutus"); LCD_ekraan.print((char) 223); /*lisame midagi huvitavat—näiteks edaspidi läheb meil ka vaja kraadi-tähist. Detsimaalkujul see on 223. Teabe leiame aga LCD fact sheeti abiga*/ /*B) alumine rida*/ LCD_ekraan.setCursor(0,1); /* esimene null tähistab esimese märgi asukohta, üks aga märgib alumist (st teist) rida: arvutimaalimas alustame numbrite lugemist nullist!*/ LCD_ekraan.print((char) 239); /*lisame ö-sümboli */ LCD_ekraan.print((char) 239); /*lisame veel ühe ö-sümboli*/ LCD_ekraan.print("bik"); /*jätkame eelmisel programmireal alustatud sõna*/ delay(10); /*imepisike delay vajalik süsteemil alguspunkti naasmiseks--nii väikest viivitust inimsilm vaevalt et tähele paneb*/ }
Kui olete programmi käivitanud, tutvuge ka potentsiomeetriga: kruttige seda ja jälgige, mis toimub LCD ekraaniga—selgitage, milleks on vajalik potentsiomeeter ja kas ilma potentsiomeetrita võiks ka hakkama saada.
Kas saite samuti ekraanile midagi sellist?
Proovige sõne (string) (vt „bik“, „harjutus“) asemel või siis koodiga tähe väljatoomise (vt ’ö’ andmine koodiga 239) asemel nüüd lisada üksik täht meetodiga LCD_ekraan.print('b');. Kuidas toimis? Mängige, sest nii saab asi selgemaks.
Liquid Crystal Library https://www.arduino.cc/en/Reference/LiquidCrystal töötab nendel LCD-del, mis on rajatud Hitachi HD44780 kiibile või sellega sarnaselt toimivale. Veendusime, et taas tegi teegi kasutamine meie töö lihtsamaks.
Kõrvalepõige
Kuna tegu on jaapani tehnoloogiaga, siis ei ole imestada, et HD44780 „mõistab“ ka jaapani keeles suhelda. Vaata http://www.electronic-engineering.ch/microchip/datasheets/lcd/lcd_data_sheets.html sümbolite tabelit: selles sisalduvad jaapani katakana (https://en.wikipedia.org/wiki/Katakana ) silptähestiku tähed. Mina valin endale LCD-ga mängimiseks nende seast ekraanile järgmisedアルドゥイーノ.
Kusjuures ド (do) olin sunnitud jagama kaheks sümboliks: esiteks kirjutan ト (to) ja siis lisan kaks kriipsukest, mis teeb to-st do. Mida temaatilist olen ma jaapani keeles siia kirjutanud?
11.4. Koduseks tööks
Kui peatükkis ei jõudnud piisavalt katsetada, siis pange kodus skeem taas kokku ja mängige—kirjutage sõnu ja sümboleid. Järgmises peatükkis jätkame LCD võimaluste uurimist.