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

23. Kujundite kuvamine 1602 LCD ekraanil

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

23.0. Seosed eelnenud peatükkidega

Oleme tutvunud LCD ekraaniga 11. ja 12. peatükis ning 19. peatükis pannud LCD tööle koos sensoriga—kuvama sensori infot. Sama skeem on meile taas vajalik, et mõista kujundite kuvamise teemat.

23.1. Eesmärk ja selgitused

Kuivõrd eelmised peatükid on olnud mahukamad, siis sedakorda midagi veidi lihtsamat töövõtete kordamiseks.

Kui eelmistele peatükkidele kulus rohkem aega, siis selle peatükiga suudame ehk ajagraafikut siluda—see osa siin peaks olema kergem, kinnistama töövõtteid ja tõstma töökiirust. Ent kui tunde tõsiselt napib, siis võime selle peatüki jätta õpilasele iseseisvaks uurimiseks. Kujundeid on tore teha, rõõmus joonistamine maatriksite abil võib osutuda nakkavaks…

Selle peatüki järel õpilane juba valdab LCD 16X2 ümberkäimist ning oskab:

a) kuvada 1602 LCD-le kujundeid.

23.2. Töövahendid:

1) Arduino Uno;
2) USB ühenduskaabel;
3) arvuti;
4) juhtmed (nii mõlemast otsas metallist ühendusega kui ka ühest otsast metallist ühendusega kui ka mõlemast otsast tühja otsaga);
5) maketeerimislaud;
6) LCD ekraan;
7) takisti;
8) potentsiomeeter—et saaksime reguleerida heledust-tumedust ekraanil.

23.3. Tegevused:

23.3.1.LCD ühendamine Arduinoga, potentsiomeetriga, temperatuuri ja niiskuse anduriga

Anname meenutuseks eelmiste LCD peatükkide kohta juurde nii skeemi kui ka tabelid.

Harjutus A

Enne vooluahela koostamisele asumist:

1) Palun loetlege lühiühenduse vältimise võimalusi.
2) Miks me alati elektriga töötades väldime lühiühendusi?
3) Vastake (enda jaoks) ausalt küsimusele, et kas lülitan alati vooluringi välja enne kui asun viikusid-juhtmeid ühendama või ümber tõstma?
4) Kuidas ma tegelikult töötan siis, kui on väga kiire? On see mõistlik?
5) Kas võiks juhtuda, et mingi suvaline juhe vajub ja jääb ühest otsast lahti-ühendatult ent nt 5V pinge all oma metall-otsaga toetuma täpselt sinna, kuhu ei peaks: ja põhjustab näiteks OUTPUT-ina konfigureeritud viigu pealt lühiühendust?
  • 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

23.3.2. Programmist…

Kõigepealt surfake ja leidke ise teema kohta linke.

Mina leidsin selle ja panin kohe ka käima. Teek on meil varasematest LCD-ga töötamise kordadest olemas. https://www.arduino.cc/en/Reference/LiquidCrystalCreateChar

Harjutus B

Tehke mõni teistsugune nägu.

Tõstke smiley-t ekraanil ümber. Kordame peatükis 11 õpitud ekraanil objektide paigutamist. Vajadusel jällegi õpetaja aitab.

Mina tegin mõned märgid ja sain siis alltoodud programmiga sellise pildi. Võite ise ka teha mõned valge taustaga märgid. Uurige näiteks char ’a’ maatriksit—ja tehke sellest valgel taustal „negatiiv“.

#include  <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  /* LCD-l kohad nii: alustuseks püstiste tulpade hulk(kokku 16), seejärel aga ridade hulk (neid on kaks) vaatme, mis numbrid on LCD markeeringul):*/
  lcd.begin(16,2);
  /* teeme puhtaks LCD ekraani meie eelmisest harjutusest: */
  lcd.clear();
}


void loop() {

byte smiley[8] = {
  B00000,
  B10001,
  B00000,
  B00000,
  B10001,
  B01110,
  B00000,
};

byte NONsmiley[8] = {
  B00000,
  B01010,
  B00000,
  B00100,
  B00000,
  B11111,
  B00000,
};

byte kriips[8] = {
  B00000,
  B00000,
  B00000,
  B11111,
  B00000,
  B00000,
  B00000,
};

  byte suurPluss [8] = {
  B00000,
  B00100,
  B00100,
  B11111,
  B00100,
  B00100,
  B00000,
};

byte plussMiinus [8] = {
  B11011,
  B11011,
  B00000,
  B11011,
  B11011,
  B00000,
  B11111,
};


 lcd.createChar(1, smiley);
 lcd.createChar(2, NONsmiley);
 lcd.createChar(3, kriips);
 lcd.createChar(4, suurPluss);
 lcd.createChar(5, plussMiinus);


// süntaks: lcd.setCursor (esiteks teie loodud sümboli koht reas, rea number viimasena)

 lcd.setCursor(0,1);
 lcd.write(1); //
 lcd.setCursor(0,0);
 lcd.write(2);
 lcd.setCursor(5,1);
 lcd.write(3);
 lcd.setCursor(6,0);
 lcd.write(4);
 lcd.setCursor(6,1);
 lcd.write(5);
 lcd.setCursor(7,0);
 lcd.write(3);
 lcd.setCursor(15,1);
 lcd.write(4);
  lcd.setCursor(14,0);
 lcd.write(2);
}

Ju on tore katsetada ise sümbolite loomist. Kustutage minu tehtud sümboleid ja tehke ise uusi. Tehke ka mõni päris tavaline täht või number. Jälgige katsetamisel kuhu täpselt ja kuidas asetate enda loodud sümboli.

23.4. Koduseks tööks

Kuna aga tähtede ja numbritega ümberkäimine on tähtsam, siis kodus kirjutage midagi LCD ekraanile, tehke sellest pilt ja saatke õpetajale. Paljudes projektides tuleb ette ekraanile kirjutamist; seda on mõistlik harjutada.

Kui aga on soov aega kulutada—mõelge, kas saate joonistada pildi, mis ulatuks üle mitme „sümboliasendi? Sellise joonistamisega võiks ekraani-asetused küll eriti hästi meelde jääda?

Abiks on ka see peatükk, mille lõpus saime ekraanile jaapani keeles kirjutatud sõna, mis tähendas Arduinot. Mitte et mul nüüd aega väga palju üle jäi, ent oma õpilaste inspireerimiseks tegin sellise „maali“ jalutavast koerast, kellel on pikk saba ja lühikesed jalad:



<- 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