Selles peatükis õpid:
- kasutama kaugusandurit,
- kasutama oota-kuni-plokki,
- õpid kasutama korduse plokki.
Ultraheliga kaugusandur oskab mõõta, kui kaugel asub tema ees olev objekt. Kaugusandurit saad kasutada programmis, kus robot mõõdab vahemaad takistuseni ja sina saad määrata tegevuse, mis juhtub kindlaksmääratud kaugusel enne takistust. Nt 10 cm enne seina jää seisma või pööra ümber jne.

Ülesanne 1
Teeme lihtsa programmi, kus robot jääb 20 cm enne seinani jõudmist seisma.
Selle ülesande jaoks vajad liikumisplokki Move Steering ja oota-kuni-plokki Wait. Esmalt lohista käivitusploki külge Move Steering ja määra olekuks On.

Move Steering ploki On olek tähendab, et järgnema peab mingi tingimusega plokk. Kasutame selleks plokki Wait. Seadista, et see järgima andurit Ultrasonic Sensor, andur kasutab võrdlemist ehk Compare ja mõõdab vahemaad sentimeetrites Distance Centimeters.


Nüüd lisa andmed. Esmalt vali võrdluse tüüp, kas vahemaa peab olema võrdne või suurem või väiksem kui sinu sisestatud mõõt. Mina valin väiksem kui ehk Less Than. Seejärel sisestan mõõdetava pikkuse, praegusel juhul 20 cm.


Viimaseks läheb veel üks Move Steering plokk, mille olekuks on Off. Ehk siis programm paneb roboti liikuma otse seni kui kaugusandur tuvastab, et seinani on jäänud 20 sentimeetrit ja jääb seejärel seisma.
Lahendus

Ülesanne 2
Kui robot on takistusele lähemal kui 20 cm, liigub tagasi. Muul juhul liigub edasi.
Esmalt lohista paika korduse plokk ehk Loop näed, et see on lõputu kordus (küllili 8-kujuline märk).

Korduse sisse lohista tingimuse plokk Switch.

Seadista Switch plokk jälgima Ultrasonic Sensor, Compare ja Distance Centimeters. Muuda kohe ära ka see, et vahemaa on vähem kui ja 20 cm (sarnaselt eelmise ülesandega).
Switch ploki ülaservas näed võimalust liikuda tingimuste vahel. Linnuke tähistab olekut, kus tingimus on täidetud ja ristike, et tingimus ei ole täidetud. Kui tingimus (ehk vahemaa on vähem kui 20 cm) on täidetud, siis tuleb liikuda tagurpidi. Selle saavutamiseks lohista Switch ploki sisse Move Steering ja seadista liikumiseks -50.

Nüüd vali, mis juhtub siis kui tingimus ei ole täidetud. Ehk siis ristikese alla sikuta Move Steering plokk ja seadista see olekusse On ning liikumiskiiruseks 50.

Katseta! Kui hoiad kätt roboti kaugusanduri ees, liigub robot tagurpidi.
Väljakutse
Programm kordub lõputult. Proovi muuta programmi selliselt, et kaugusvahemikus 15-20 cm takistusest robot peatuks. Kas oskad?
Lahendus
Eelmises programmis jääb paika see, mis juhtub siis, kui tingimus ei ole täidetud. Ehk siis kui kaugus vahemikust on suurem kui 20 cm. Sel juhul liigub robot otse edasi.
Muuta tuleb programmi seda osa, kus tingimus on täidetud. Sinna tuleb lisada veel üks Switch plokk. Seega kui tingimus (kaugus on vähem kui 20 cm on täidetud), siis esitatakse uus tingimus: kaugus on vähem kui 15 cm. Seega kui algselt on robot takistusel lähemal kui 20 cm, siis kontrollitakse nüüd lisaks, kas ta on lähemal kui 15 cm.
- Kui tingimus “robot on takistusele lähemal kui 20 cm” ei ole täidetud (st vahemaa on suurem), siis liigub robot edasi.
- Kui tingimus “robot on takistusele lähemal kui 20 cm” on täidetud (st vahemaa on väiksem kui 20 cm), kontrollitakse, kas tingimus “robot on takistusele lähemal kui 15 cm” on täidetud, kui:
- “robot on takistusele lähemal kui 15 cm” on täidetud (st kaugus on vähem kui 15 cm), siis liigub robot tagurpidi.
- “robot on takistusele lähemal kui 15 cm” ei ole täidetud (st kaugus on rohkem kui 15 cm), siis jääb robot seisma.



Allikad:
- Seshan, S., Sheshan, A. (2016). Touch Sensor. EV3 Lessons. https://ev3lessons.com/en/ProgrammingLessons/beginner/Touch.pdf
- Tartu Ülikool. (2017). Koolirobootika. Puuteandur. Tartu Ülikooli arvutiteaduse instituut. https://courses.cs.ut.ee/2018/koolirobootika/Main/Lehtc17