24. Ekraani ühendamine ja teksti kuvamine 1602 LCD ekraanil
<- eelmine peatükk
järgmine peatükk ->
24.0. Eelmiste peatükkide meenutuseks
Oleme kordi harjutanud LCD ühendamist. Oleme ka juba LCD-d kasutanud andmete kuvamiseks. Teame, mis on sõltumatu toide ja kuidas seda Arduinole ühendada.
Oskame kuvada Serial monitorile mistahes anduri infot, ent mugavam oleks, kui saaksime ehitada midagi, mis ei peaks tingimata olema kogu aeg stabiilses järjestikühenduses (serial connection) meie personaalarvutiga.
Näiteks termomeetri puhul oleks asjalik, kui saaksime lugeda infot sõltumatult meie põhiarvutist. Ühtlasi kordame üle seda, mida tegime ultraheli abil kaugust mõõtes ja mõõtmistulemusi LCD ekraanile kuvades.
24.1. Eesmärk ja selgitused
Kuna tegemist on suures osas eespool omandatut kordava osaga, siis eeldame, et eespoolsed teemad on tuttavad—eriti LCD ühendamine, potentsiomeetri roll LCD ekraani taustavalguse reguleerimise ja et ollakse kursis teegi väljakutsumisega programmi alguses.
Vooluahelat koostades oskab õpilane programmist leida info, mis vajalik programmi ja vooluahela vastavusse viimiseks—ja oskab vajalikud kohad korrigeerida.
Vajadusel tuleb aga vaadata eelnenud teemades öeldut.
Selle teema läbi tegemise järel on väga tõenäoline, et õpilane on saavutanud juba töökiiruse tõusu, lihvinud välja mõned väärt harjumused—nagu näiteks oskuse vältida lühiühendust ning ka oskuse kommenteerida oma tööd—ning saavutanud sisemise vajaduse dokumenteerida tehtavat.
Kuigi räägime edaspidiseski veel märkmete tegemise vajadusest, tegelik eesmärk on hakata tunnetama, et see on tegelikult ettevalmistus millekski hoopis tõsisemaks—dokumentatsiooni koostamiseks.
Õpilane on vajadusel kiirelt valmis aitama ka kaaslast, kes on juhtumisi mõne nüansi unustanud—meeskonnatöö on saanud harjumuseks.
Oleme juba viidanud koostööle. Ka edaspidi selles programmis väidame, et Eesti IT-sektori edu vaid erinevate oskustega inimeste koostööst tulla saabki. Paneme selle edu tunnetusele aluse. Veidi etteruttavalt, ent eesmärgikindlalt—selles kursuses me lubame koostööd ka eksamil. Me ei tolereeri koostööd neil juhtudel reaalses elus, kui tõesti keerukas ongi—miks mitte siis teha esimene harjutus väikse eksamistressi tingimustes.
24.2. Töövahendid:
24.3. Tegevused:
24.3.1.LCD ühendamine Arduinoga, potentsiomeetriga, ning temperatuuri ja niiskuse anduriga
LCD ühendused:
Potentsiomeetri ühendused: vt
DHT-22 temperatuuri- ja niiskusanduri ühendused:
NB! 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.
24.3.2. Programm: kontrollige, kas kõik viigud sobivad?
Harjutus A
Vajadusel korrigeerige programmi.
#include <LiquidCrystal.h> /*laeme LCD ekraani library */ #include <DHT.h> /*laeme DHT 22 anduri library--leitav otsisõnadega "DHT library" näiteks siit: https://www.arduinolibraries.info/libraries/dht-sensor-library */ LiquidCrystal LCD_ekraan(10, 9, 5, 4, 3, 2); /*loome objekti LCD_ekraan, millel deklareerime ühendused Arduino viik idele järgmises järjekorras: RS (10), E (9), D4(5), D5(4), D6(3), D7(2). Vaata eespool ka kommentraari LCD viik ide ühendamist puudutavas värvilises tabelis--tegemist on antud värvilises ühendamistasbelis tärniga tähistatud viik ideg--st nendega, mis ei ole GND või toide. Objekti LCD_ekraan deklareerimisel on oluline viik ide järjekord. Näiteks: kui anname ette teistsuguse järjekorra, siis tuleb ka tõsta ümber juhtmed LiquidCrystal LCD_ekraan(10, 9, 5, 3, 4, 2); puhul vaheta omavahel kollane ja roheline--peale uuesti käivitamist hakkab tööle äravahetatud 3 ja 4 viik ide. */ #define DHTviik 7 /* defineerime DHT viik i: st temperatuuri ja õhuniiskuse anduri ühendame Arduinol digi-viik iga 7.*/ #define DHTnimi DHT11 /* defineerime DHT tüübi.*/ DHT temperatuuri_niiskuse_Andur(DHTviik , DHTnimi); /* loome programmni jaoks temperatuuri ja õhuniiskuse anduri*/ /* Pikem kommentaar #define kasutamise olulisusest: võime huvi pärast ka üritada ülejärgmisel real kirjeldatut: jättes ära kohustuslikud #define programmilõigud ning asendades need otseinfoga--DHT11 ning viik inumbriga 7: DHT temperatuuri_niiskuse_Andur(DHT11, 7); Katsetage! mis juhtub? Miks ei tohi eksida library-s etteantud defineerimisviisi vastu?*/ void setup() { Serial.begin(9600); temperatuuri_niiskuse_Andur.begin(); /* käivitasime temperatuuri ja õhuniiskuse anduri */ 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) Temperatuuri kuvamine LCD-le*/ 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("temperatuur:"); LCD_ekraan.print((int)temperatuuri_niiskuse_Andur.readTemperature()); /*prindime LCD ekraanile andurilt loetud temperatuuri*/ LCD_ekraan.print((char) 223); /*lisame kraadi-tähise detsimaalkujul, selleks vajaliku teabe leiame aga LCD fact sheeti abiga*/ LCD_ekraan.print("C "); /*kraadi-tähisele lisame C--et saaks sümboilitega väljendada "kraadi Celsiuse järgi"*/ /*B) Õhuniiskuse kuvamine LCD-le*/ 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 detsimaalkujul: kuna õ-d ei õnnestunud LCD fact sheet abiga käivitada*/ LCD_ekraan.print("huniiskus:"); /*jätkame eelmisel programmireal alustatud sõna*/ LCD_ekraan.print((int)temperatuuri_niiskuse_Andur.readHumidity()); /*prindime LCD ekraanile andurilt loetud õhuniiskuse*/ LCD_ekraan.print("% "); /* prindime ekraanile sõnena protsendimärgi ja kolm tühja märki--et erineva pikkusega temperatuuri korral ei ilmuks kogemata kahte %-märki*/ delay(10); /*imepisike delay vajalik süsteemil alguspunkti naasmiseks--nii väikest viivitust inimsilm vaevalt et tähele paneb*/ }
Kas saite sarnase vaate oma töölauale?
Kui asi kenasti töötab ja olete piisavalt katsetanud, siis ühendage USB kaabel lihtsalt skeemi küljest lahti. Mis juhtub—kas ekraani helesinine valgus kustub?
Nüüd aga ühendage Arduinol asuvasse musta kontakti arvutiväline toide: Teie loodu võibki nüüd mõneks ajaks kuhugi temperatuuri näitama jääda.
Olete selles kursuses teinud olmes vajaliku seadme.