24
Laagri Kool Pärli Kilusk 5.a Praktiline töö Arduino arendusplatvormiga Uurimistöö Juhendajad: Sven Kilusk, Aet Mikli Harjumaa 2017

Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

Laagri Kool

Pärli Kilusk

5.a

Praktiline töö

Arduino arendusplatvormiga Uurimistöö

Juhendajad: Sven Kilusk, Aet Mikli

Harjumaa 2017

Page 2: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

Sisukord

1. Sissejuhatus 3

2. Arvutid ja programmeerimine 4

3. Arendusplatvorm Arduino 6 3.1 Tutvustus 6 3.2 Ajalugu ja populaarsus 6 3.3 Erinevad Arduino tooted 7 3.4 Arduino programmeerimiskeel 7

4. Autoparkla automaatika 8 4.1 Lähteülesanne 8 4.2 Makett ja riistvara 8

4.2.1 Autoparkla 8 4.2.2 Sisendid 9 4.2.3 Väljundid 9 4.2.4 Juhtelektroonika 9 4.2.5 Elektriskeem 10

4.3 Programmeerimine 10 4.3.1 Algoritm 10 4.3.2 Programm 12 4.3.3 Kasutatud käsud 12

5. Kokkuvõte 14

6. Kasutatud kirjandus 15

7. Lisa (programmi väljatrükk, autoparkla automaatika) 16

2

Page 3: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

1. Sissejuhatus

Tänapäeval on raske ette kujutada inimest, kes ei oska arvutit kasutada. Arvuti on praegu

hädavajalik pea kõikidel ametikohtadel. Aga et arvuti töötaks, on arvutile loodud programmid.

Programme on igasuguseid. On olemas erinevaid programmeerimiskeeli, millega programmi

kirjutada ja ka erinevaid seadmeid, mille peal programmi katsetada. Üks neist on arendusplatvorm

Arduino.

Selle uurimistöö teema on Arduino programmeerimine. Kuna koostaja käib robootikaringis, kus

tegeldakse LEGO Mindstorms’iga, siis sooviti tutvuda ka muude robotite/arendusplatvormidega.

Kõigepealt räägitakse töös üldiselt programmeerimisest ja robootikast, siis tutvustatakse Arduino

arendusplatvormi - selle ajalugu, populaarsust, erinevaid Arduino tooteid ja programmeerimiskeelt.

Praktiliseks osaks on programmeeritud autoparkla automaatika.

Töö käigus õpiti C++ keeles programmeerima. Saadi teada, et see programmeerimiskeel on väga

erinev graafilisest LEGO Mindstorms’ist.

3

Page 4: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

2. Arvutid ja programmeerimine

Esimeseks programmeerijaks loetakse Ada Lovelace’i, kes sündis Inglismaal kakssada aastat tagasi.

Ta taipas, et masin on suuteline lahendama probleeme, kui sellele ette anda üksikasjalik juhis -

programm (1,8).

Kahjuks polnud sel ajal arvuteid, millel ta oma mõtet oleks katsetada saanud.

Programmeerimine on koodi kirjutamine, mis ütleb arvutile, mida teha. Programm ongi see kood,

mis luuakse. Kõik sülearvutid, tahvelarvutid, telefonid ja lauaarvutid vajavad programme, et neid

saaks kasutada. Mõnikord on programmi vaja kindla ülesande lahendamiseks. Selleks on vaja läbi

mõelda, milliseid samme peab programm tegema - neid samme kutsutakse algoritmiks (1,8).

Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et

arvuti käsust aru saaks ja selle täidaks, tuleb leida keel, mille abil on võimalik inimese ja arvuti

suhtlus. Seda keelt nimetatakse programmeerimiskeeleks. Esimene programmeerimiskeel oli

assembler. Seda keelt oli väga ebamugav kasutada. See keel oli mõeldud käskude jada

ühendamiseks. Aja jooksul keeled arenesid. Praegu on olemas väga palju erinevaid keeli, näiteks

Phyton, Java, C++ (2,86).

C keele arendas välja Dennis Ritchie aastal 1970. Kuigi see oli loodud UNIX

operatsioonisüsteemile, kasvas õige pea ka teiste operatsioonisüsteemikasutajate huvi

C keele vastu. C keel on suurepärane keskkond, koodi lihtsuse ja laia võimaluste hulga tõttu. Selle

tõttu on ta esimene kõrgtaseme keel saadaval kõikidele uutele arvutitele, mikrokontrolleritest kuni

suurarvutiteni (3).

Igal arvutil on sisendid ja väljundid. Sisendite abil on võimalik arvutisse sisestada andmeid.

Sisendid on näiteks arvutihiir, klaviatuur ja puutetundlik ekraan. Väljundid on selleks, et arvuti

saaks midagi öelda/näidata. Väljundid on näiteks kõlar ja arvuti ekraan (1,9).

4

Page 5: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

Arvutil on vaja mälu, et seal informatsiooni hoida. Programm loetakse mälust ja muudetakse

kodeeritud käskudeks. Mälus salvestatud juhiste abil töödeldakse sisendina vastu võetud teave.

Seda teeb seade, mida nimetatakse protsessoriks, mis on arvuti aju. Protsessor töötab

kahendsüsteemis esitatud numbrite järgi. Kahendsüsteemis öeldakse numbri 1 kohta “tõene” ja

numbri 0 kohta “väär” (4).

5

Page 6: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

3. Arendusplatvorm Arduino

3.1 Tutvustus

Arduino on mikroprotsessori arendusplaat (Pilt 1). Selle külge saab panna igasuguseid sisendeid,

näiteks valgus-, heli- ja teisi andureid. Edasi reageerib Arduino vastavalt koodile ja käivitab

väljundi, näiteks mootori, ekraani jne (8).

Arduino on avatud lähtekoodiga, seetõttu on nende arendusplaatide hind väga soodne võrreldes

LEGO Mindstorms’iga. Samas eeldab Arduino kasutamine rohkem teadmisi elektroonikast.

Pilt 1. Arendusplaat Arduino UNO (foto tootja kodulehelt)

3.2 Ajalugu ja populaarsus

Arduino loodi 2005. aastal Itaalias Ivera linnas. Idee sai alguse vajadusest piisava võimekuse ja

odava hinnga arendusplaadi järele, mille abil õpilased saaksid teha elektroonikaprojekte (5).

6

Page 7: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

Arduino populaarsus tõuseb ning on praegu väga heal tasemel. Sellest annab ettekujutuse “Google”

otsingupopulaarsus (Joonis 1).

Joonis 1. Arduino/Lego Mindstorms otsingupopulaarsus (allikas Google Trends)

3.3 Erinevad Arduino tooted

Arduino arendusplaatidest on saadaval palju mudeleid, mille abil on võimalik koostada erineva

eesmärgi ja raskusega projekte.

Arduinoga alustajatele sobivad odavamad ja lihtsamad UNO, 101, Pro ja neile sarnased, kuid

väiksemad Mini, Micro ja Nano. Suuremate projektide jaoks sobivad Mega, Zero ja Due (5).

3.4 Arduino programmeerimiskeel

Arduino programmeerimiskeel on lihtsustatud C++ keel. Selle abil luuakse mikroprotsessorile kood

(6).

7

Page 8: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

4. Autoparkla automaatika

4.1 Lähteülesanne

Praktiliseks osaks uurimistööst oli autoparkla automaatika programmeerimine. Koostaja tegi

algoritmi ja tööprogrammi, mille testimiseks valmistas juhendaja autoparkla mudeli.

● Autoparkla automaatika ülesandeks on pidada arvestust parklas olevate vabade kohtade üle

ning näidata vastavat numbrit ekraanil.

● Vabade kohtade arvu muudetakse vaid siis, kui auto on värava täielikult läbinud.

● Süsteem ei tohi reageerida väravat läbivatele jalakäijatele.

● Kui vabu kohti pole, peab tõkkepuu sulguma.

● Tõkkepuu peab avanema väljuvatele autodele.

● Vabade kohtade arv peab olema parklaoperaatori poolt muudetav.

4.2 Makett ja riistvara

4.2.1 Autoparkla

Tööprogrammi testimiseks valmistas juhendaja autoparkla mudeli.

Parkla mudel koosneb parkla-alast kuuele autole, parklamajast, haljasalast ja tänavaosast.

Parklamaja sisse on paigutatud Arduino arendusplaat ning enamik elekroonikast. Kasutatud on ka

mudelautosid ja nukku (Pilt 2).

8

Page 9: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

Pilt 2. Autoparkla makett (Foto autor - Pärli Kilusk)

4.2.2 Sisendid

Autoparkla mudelil on 4 sisendit. Need on 2 optilist andurid, mis jälgivad autosid ja 2

parklaoperaatori nuppu.

4.2.3 Väljundid

Mudelil on 11 väljundit. Need on: 2 LED lampi (näitavad andurite olekut), valjuhääldi, tõkkepuu

servomootor, infotabloo 7 segmenti.

4.2.4 Juhtelektroonika

Juhtelektroonikana kasutatakse arendusplaati Arduino UNO. Arendusplaadil on sisendite/väljundite

klemmid, mikroprotsessor ning mälu, kus hoitakse tööprogrammi.

9

Page 10: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

4.2.5 Elektriskeem

Juhendaja koostas autoparkla mudeli elektriskeemi, kus on märgitud kõik sisendid ja väljundid ja

nende nimetused (Joonis 2). Elektriskeem oli vajalik programmi koostamiseks, et määrata sisendeid

ja väljundeid.

Joonis 2. Autoparkla elektriskeem (koostaja Sven Kilusk)

4.3 Programmeerimine

4.3.1 Algoritm

Enne programmeerimist koostati algoritm, et oleks lihtsam programmeerida. Algoritm on lihtne

tegevuste jada, mis näitab täpselt, mida programm tegema peab (1,12). Alguses koostati algoritm

autode sisenemise ja väljumise puhul. Seejärel lisati tõkkepuu juhtimine ning vabade kohtade

kuvamine ekraanil. Lisati ka operaatori nuppude võimalus ning helisignaalid. Algoritmi

joonistamiseks kasutati programmi Draw.io (Joonis 3).

10

Page 11: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

Joonis 3. Autoparkla automaatika algoritm (koostaja Pärli Kilusk)

11

Page 12: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

4.3.2 Programm

Et autoparkla mudel töötaks, on koostatud programm, kasutades Arduino IDE tarkvara (Pilt 3).

Autoparkla tööprogramm on uurimistöö lõpus toodud välja eraldi lisana.

Pilt 3. Aduino IDE ekraanitrükk (autor Pärli Kilusk)

4.3.3 Kasutatud käsud

Programmis on kasutatud erinevaid käske. Käsud on täpsed juhised mingi ülesande täitmiseks. Siin

on mõned tavalisemad käsud lahti seletatud.

Programmis on kasutatud käsku “tone”. Selle käsuga saab panna Arduino helisignaali tegema, kui

selle küljes on valjuhääldi. Selle käsu juurde on lisatud helikõrgus hertsides ja heli kestvus

millisekundites.

Veel on programmis käsk “void”. Sellega saab määrata alamprogramme. Almprogramm on väike

eraldi programm programmis.

12

Page 13: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

Tihti on kasutatud käske “if” ja “else” (“kui” ja “muidu”). Nende käskudega saab kontrollida mingi

sisendi või väljundi olekut.

Programmis on veel käsk “DigitalWrite(A2,HIGH)”. Selle käsuga saab panna väljundis 2 LED

lambi põlema. Sellele käsule on vastupidine käsk “DigitalWrite(A2,LOW)”, mis kustutab lambi.

Programmis on kasutatud ka käsku “switch”. See käsk on nagu pikk if-else käskude jada, kus

kontrollitakse ühe ja sama muutuja olekut (7,21). On kasutatud ka käsku “delay”. Selle käsuga saab panna mudeli pausile, mille kestvus määratakse

millisekundites.

13

Page 14: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

5. Kokkuvõte

Uurimistöös räägiti Arduino arendusplatvormist, selle ajaloost, populaarsusest, erinevatest Arduino

toodetest ja Arduino programmeerimiskeelest.

Praktiliseks osaks uurimistööst oli autoparkla automaatika programmeerimine. Selles osas on kirjas,

mida peab automaatika tegema, protsessi sisenditest ja väljunditest, juhtelektroonikast ja

elektriskeemist.

Uurimistöö tulemusena õpiti koostama algoritme, kasutades “Draw.io” tarkvara.

Samuti õpiti kasutama Arduino IDE tarkvara, mille abil koostati autoparkla automaatika

tööprogramm.

Koostaja leidis ka, et Arduino arendusplaat on soodsa hinnaga. Seetõttu võib selle jättagi

valmistatud autoparkla mudelisse.

14

Page 15: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

6. Kasutatud kirjandus

1. Max Wainewright “Noor progeja. Üksikasjalik programmeermisõpik.”, 2016

2. Larousse’i noorteentsüklopeedia “Matemaatika ja informaatika”,2001

3. http://digi.physic.ut.ee/mw/images/9/99/Progemine.pdf

4. http://mikroprotsessoridjakontrollerid.weebly.com/mikroprotsessor.html

5. Selena Lubi “Arduino stardikomplekti õppematerjalid”, 2016

6. https://www.am.ee/node/2193

7. Leivo Sepp “Robootika?... See on imelihtne!”, 2013

8. http://kodu.ut.ee/~alop/Arduino_Robot.pdf

15

Page 16: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

7. Lisa (programmi väljatrükk, autoparkla automaatika) #include <Servo.h> // Lae "servo" teek (library) Servo myservo; // Anna servomootorile nimi "myservo" int ValAndAnaloog; // Defineeri muutuja (välimine andur, analoog) int SisAndAnaloog; // Defineeri muutuja (sisemine andur, analoog) int Vabukohti; // Defineeri muutuja (vabade kohtade arv parklas) int ServoAsend; // Defineeri muutuja (tõkkepuu asend kraadides) boolean ValAnd; // Defineeri muutuja (välimine andur, digitaal) boolean SisAnd; // Defineeri muutuja (sisemine andur, digitaal) void setup() { pinMode(2, OUTPUT); // Määra pin 2 digitaalväljundiks, displei segment pinMode(3, OUTPUT); // Määra pin 3 digitaalväljundiks, displei segment pinMode(4, OUTPUT); // Määra pin 4 digitaalväljundiks, displei segment pinMode(5, OUTPUT); // Määra pin 5 digitaalväljundiks, displei segment pinMode(6, OUTPUT); // Määra pin 6 digitaalväljundiks, displei segment pinMode(8, OUTPUT); // Määra pin 8 digitaalväljundiks, displei segment pinMode(9, OUTPUT); // Määra pin 9 digitaalväljundiks, displei segment pinMode(10, OUTPUT);// Määra pin 10 digitaalväljundiks, piezo summer myservo.attach(11); // Määra pin 11 digitaalväljundiks (servole) pinMode(12, INPUT); // Määra pin 12 digitaalsisendiks (nupp+) pinMode(13, INPUT); // Määra pin 13 digitaalsisendiks (nupp-) pinMode(A0, INPUT); // Määra pin A0 analoogsisendiks (välimine andur) pinMode(A1, INPUT); // Määra pin A1 analoogsisendiks (sisemine andur) pinMode(A2, OUTPUT); // Määra pin A2 digitaalväljundiks (välimine LED) pinMode(A3, OUTPUT); // Määra pin A3 digitaalväljundiks (sisemine LED) Vabukohti = 6; // Määra vabade kohtade algarv parklas KuvaVabukohti(); // Mine alamprogrammi "KuvaVabukohti" ServoAsend = 90; // Määra tõkkepuu algasend (üleval myservo.write(ServoAsend); // Paiguta servo) delay(1000); Meloodia(); // Mängi algusmeloodiat (alamprogramm "Meloodia") } void loop() { myservo.write(ServoAsend); // Paiguta servo KuvaVabukohti(); // Mine alamprogrammi "KuvaVabukohti" KontrolliAndureid(); // Mine alamprogrammi "KontrolliAndureid" Tingimus1(); // Kontrolli algoritme alamprogrammis "Tingimus1" }

16

Page 17: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

void Tingimus1 () // Määra alamprogramm "Tingimus1" { KontrolliAndureid(); // Kutsu välja alamprogramm "Kontrolli andureid" switch (ValAnd) // Kontrolli muutuja "ValAnd" olekut { case true: // juhul kui (true), siis Tingimus2(); // kutsu välja alamprogramm "Tingimus2" break; case false: // juhul kui (false), siis Tingimus3(); // kutsu välja alamprogramm "Tingimus3" break; } } void Tingimus2 () { KontrolliAndureid(); switch (SisAnd) { case true: Tingimus5(); break; case false: Tingimus1(); break; } } void Tingimus3 () { KontrolliAndureid(); switch (SisAnd) { case true: Tingimus4(); break; case false: Tingimus10(); break; } } void Tingimus4 () { KontrolliAndureid(); switch (ValAnd) { case true:

17

Page 18: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

Tingimus11(); break; case false: Tingimus3(); break; } } void Tingimus5 () { KontrolliAndureid(); switch (!ValAnd) { case true: Tingimus6(); break; case false: Tingimus2(); break; } } void Tingimus6 () { KontrolliAndureid(); switch (!SisAnd) { case true: Vabukohti = Vabukohti - 1; // vähenda vabade kohtade arvu tone(10, 500, 100); // tee 1 piiks if (Vabukohti < 0) { // kui vabu kohti on alla nulli, Vabukohti = 0; // anna väärtuseks 0 } Tingimus9(); break; case false: Tingimus5(); break; } } void Tingimus7 () { KontrolliAndureid(); switch (!SisAnd)

18

Page 19: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

{ case true: Tingimus8(); break; case false: Tingimus4(); break; } } void Tingimus8 () { KontrolliAndureid(); switch (!ValAnd) { case true: Vabukohti = Vabukohti + 1; // suurenda vabade kohtade arvu tone(10, 500, 100); // tee 1 piiks delay(150); // tee paus 150 millisekundit tone(10, 500, 100); // tee 1 piiks if (Vabukohti > 6) // kui vabu kohti on üle kuue, { Vabukohti = 6; // anna väärtuseks } break; case false: Tingimus7(); break; } } void Tingimus9 () { switch (Vabukohti) { case 0: // Kui vabu kohti on 0, for (ServoAsend = 90; ServoAsend >7; ServoAsend -= 1) { // lase tõkkepuu alla myservo.write(ServoAsend); delay(15); } break; } }

19

Page 20: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

void Tingimus10 () { switch (Vabukohti == 0 && ServoAsend == 90) { case true: // Kui vabu kohti pole ja tõkkepuu on üleval, for (ServoAsend = 90; ServoAsend > 7; ServoAsend -= 1) { //lase tõkkepuu alla myservo.write(ServoAsend); delay(15); } break; case false: Tingimus16(); break; } } void Tingimus11 () { switch (ServoAsend == 7) { case true: // Kui tõkkepuu on all, for (ServoAsend = 7; ServoAsend < 90; ServoAsend += 1) { //tõsta tõkkepuu üles myservo.write(ServoAsend); delay(15); } myservo.write(ServoAsend); Tingimus7(); break; case false: Tingimus7(); break; } } void Tingimus12 () { switch (digitalRead(13)) // Kui nupp1 vajutatakse alla, { case true: Tingimus13(); break;

20

Page 21: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

case false: Tingimus14(); break; } } void Tingimus13 () { switch (!digitalRead(13)) // Kui nupp1 läheb algasendisse, { case true: Vabukohti = Vabukohti - 1; // Vähenda vabade kohtade arvu tone(10, 500, 100); // tee 1 piiks if (Vabukohti < 0){ // kui vabu kohti on alla nulli, Vabukohti = 0; // anna väärtuseks 0 } break; case false: Tingimus13(); break; } } void Tingimus14 () { switch (digitalRead(12)) // Kui nupp2 vajutatakse alla, { case true: Tingimus15(); break; } } void Tingimus15 () { switch (!digitalRead(12)) // kui nupp2 läheb algasendisse, { case true: Vabukohti = Vabukohti + 1; // suurenda vabade kohtade arvu tone(10, 500, 100); // tee 1 piiks delay(150); // tee paus 150 millisekundit tone(10, 500, 100); // tee 1 piiks if (Vabukohti > 6){ // kui vabu kohti on üle kuue, Vabukohti = 6;// anna väärtuseks 6

21

Page 22: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

} break; case false: Tingimus15(); break; } } void Tingimus16 () { switch (Vabukohti > 0 && ServoAsend == 7) // Kui vabu kohti on rohkem kui 0 ja tõkkepuu on all, { case true: for (ServoAsend = 7; ServoAsend < 90; ServoAsend += 1) { // tõsta tõkkepuu üles myservo.write(ServoAsend); delay(15); } break; case false: Tingimus12(); break; } } void KuvaVabukohti () // Määra alamprogramm "KuvaVabukohti" { switch (Vabukohti) // kontrolli muutuja "Vabukohti" väärtust { case 0: // juhul kui vabu kohti on 0: digitalWrite(2, HIGH); // displei segmendi lülitamine digitalWrite(3, HIGH); // displei segmendi lülitamine digitalWrite(4, HIGH); // displei segmendi lülitamine digitalWrite(5, HIGH); // displei segmendi lülitamine digitalWrite(6, HIGH); // displei segmendi lülitamine digitalWrite(8, HIGH); // displei segmendi lülitamine digitalWrite(9, LOW); // displei segmendi lülitamine break; case 1: // juhul kui vabu kohti on 1: digitalWrite(3, HIGH); // displei segmendi lülitamine digitalWrite(4, HIGH); // displei segmendi lülitamine digitalWrite(5, LOW); // displei segmendi lülitamine digitalWrite(2, LOW); // displei segmendi lülitamine digitalWrite(6, LOW); // displei segmendi lülitamine digitalWrite(8, LOW); // displei segmendi lülitamine digitalWrite(9, LOW); // displei segmendi lülitamine break;

22

Page 23: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

case 2: // juhul kui vabu kohti on 2: digitalWrite(2, HIGH); // displei segmendi lülitamine digitalWrite(3, HIGH); // displei segmendi lülitamine digitalWrite(9, HIGH); // displei segmendi lülitamine digitalWrite(6, HIGH); // displei segmendi lülitamine digitalWrite(5, HIGH); // displei segmendi lülitamine digitalWrite(8, LOW); // displei segmendi lülitamine digitalWrite(4, LOW); // displei segmendi lülitamine break; case 3: // juhul kui vabu kohti on 3: digitalWrite(2, HIGH); // displei segmendi lülitamine digitalWrite(3, HIGH); // displei segmendi lülitamine digitalWrite(9, HIGH); // displei segmendi lülitamine digitalWrite(4, HIGH); // displei segmendi lülitamine digitalWrite(5, HIGH); // displei segmendi lülitamine digitalWrite(8, LOW); // displei segmendi lülitamine digitalWrite(6, LOW); // displei segmendi lülitamine break; case 4: // juhul kui vabu kohti on 4: digitalWrite(2, LOW); // displei segmendi lülitamine digitalWrite(8, HIGH); // displei segmendi lülitamine digitalWrite(9, HIGH); // displei segmendi lülitamine digitalWrite(3, HIGH); // displei segmendi lülitamine digitalWrite(4, HIGH); // displei segmendi lülitamine digitalWrite(6, LOW); // displei segmendi lülitamine digitalWrite(5, LOW); // displei segmendi lülitamine break; case 5: // juhul kui vabu kohti on 5: digitalWrite(2, HIGH); // displei segmendi lülitamine digitalWrite(8, HIGH); // displei segmendi lülitamine digitalWrite(9, HIGH); // displei segmendi lülitamine digitalWrite(4, HIGH); // displei segmendi lülitamine digitalWrite(5, HIGH); // displei segmendi lülitamine digitalWrite(3, LOW); // displei segmendi lülitamine digitalWrite(6, LOW); // displei segmendi lülitamine break; case 6: // juhul kui vabu kohti on 6: digitalWrite(2, HIGH); // displei segmendi lülitamine digitalWrite(8, HIGH); // displei segmendi lülitamine digitalWrite(6, HIGH); // displei segmendi lülitamine digitalWrite(5, HIGH); // displei segmendi lülitamine digitalWrite(4, HIGH); // displei segmendi lülitamine digitalWrite(9, HIGH); // displei segmendi lülitamine digitalWrite(3, LOW); // displei segmendi lülitamine

23

Page 24: Praktiline töö Arduino arendusplatvormiga · 2019. 10. 15. · Et panna arvuti mingit ülesannet teostama, peab andma talle täpse info, kuidas seda teha. Selleks, et arvuti käsust

break; } } void KontrolliAndureid () { ValAndAnaloog = analogRead(A0); // Anna muutujale väärtus analoogsisendist SisAndAnaloog = analogRead(A1); // Anna muutujale väärtus analoogsisendist if (ValAndAnaloog > 120) { digitalWrite(A2, HIGH); // Välimise LEDi lülitamine ValAnd = true; } else { digitalWrite(A2, LOW); // Välimise LEDi lülitamine ValAnd = false; } if (SisAndAnaloog > 120) { digitalWrite(A3, HIGH); // Sisemise LEDi lülitamine SisAnd = true; } else { digitalWrite(A3, LOW); // Sisemise LEDi lülitamine SisAnd = false; } } void Meloodia () // Määra alamprogramm "Meloodia" { tone(10, 262, 250); // Mängi noot delay(325); // Tee paus tone(10, 196, 125); delay(162); tone(10, 196, 125); delay(162); tone(10, 220, 250); delay(325); tone(10, 196, 250); delay(900); tone(10, 247, 250); delay(325); tone(10, 262, 250);

24