Arvutiteaduse instituut
  1. Esileht
  2. Noored Koodi
EN
Logi sisse

Noored Koodi

<- Kõik kursused

  • Arduino kursus
  • 1. Sissejuhatus: millist Arduinot valida, programmeerimiskeskkond Arduino IDE
  • 2. Töötamine Arduino IDE-ga, Arduino ühendamine arvutiga ja sisseehitatud LEDi vilgutamine
  • 3. Vooluahela koostamine (LED, takistid, maketeerimislaud, juhtmed) ja värvikood
  • 4. LED-ide vilgutamine FOR tsükliga, lokaalmuutuja kasutamine
  • 5. Lüliti ühendamine ja LEDi vilgutamine vastavalt lüliti asendile: IF/ELSE tingimuse kasutamine
  • 6. RGB ledi ühendamine ja RGB võimaluste katsetamine analogWrite() abil
  • 7. Valgustundliku takisti ja ADC abil valguse mõõtmine ja kuvamine arvuti ekraanil—Serial monitor
  • 8. UART liidese abil andmete vahetamine Arvuti ja Arduino vahel, ASCII tabel
  • 9. Potentsiomeeter: töö-põhimõte, ühendamine, juhtkang (joystick)
  • 10. Servomootori juhtimine—pulsilaiusmodulatsioon ja joystick
  • 11. Ekraani ühendamine ja teksti kuvamine 1602 LCD ekraanil
  • 12. USART ja 1602 LCD: Serial monitorist ekraanile!

  • 13. IDE-s programmeerimisest kokkuvõtvalt
  • 14. LED heleduse muutmine vastavalt keskkonna valgustugevusele
  • 15. Ohmi seadus, multimeetri kasutamine

  • 16. Kordamisküsimused
  • 17. Kontrolltöö

  • 18. LED juhtimine infrapuna-saatjaga ja -vastuvõtjaga
  • 19. HC-SR04 ultrahelisensori ühendamine ja näitude kuvamine LCD ekraanil
  • 20. Joonistame ise programmi Fritzing abil korrektse vooluringi skeemi
  • 21. Sissejuhatavalt sünkroonsest ühendusest (I2C ning SPI) õhurõhu anduri BMP280 näitel
  • 22. CSV—Comma Separated Values
  • 23. Kujundite kuvamine 1602 LCD ekraanil
  • 24. Ekraani ühendamine ja teksti kuvamine 1602 LCD ekraanil
  • 25. Arduino ühendamine bluetooth seadmega
  • 26. Relee juhtimine

  • 27. Digispark: netist tarkvara leidmine, installeerimine ja esimese lihtsa programmi töölepanek
  • 28. ESP32: tarkvara ja lihtsa esimese programmi töölepanek
  • 29. ESP32: jõuame sisse-ehitatud LED vilgutamiseni

  • 30. Kordamine
  • 31. Teooria esitlus
  • 32. Projektiesitlus

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:

1) Arduino Uno;
2) USB ühenduskaabel;
3) arvuti;
4) internetiühendus;
5) luup;
6) juhtmed;
7) maketeerimislaud;
8) LCD ekraan;
9) takisti;
10) potentsiomeeter;
11) õhutemperatuuri ja -niiskuse andur;
12) arvutist sõltumatu vooluallikas.

24.3. Tegevused:

24.3.1.LCD ühendamine Arduinoga, potentsiomeetriga, ning temperatuuri ja niiskuse anduriga

LCD ühendused:

* Tärniga tähistatud viigud on vaja deklareerida programmis LCD-ekraanile vastavat objekti luues. 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

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.



<- eelmine peatükk järgmine peatükk ->

  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Tartu Ülikooli arvutiteaduse instituudi kursuste läbiviimist toetavad järgmised programmid:
euroopa sotsiaalfondi logo