Ohjeita
Jos luette antureita heti ohjelman alussa, niin alkuun kannattaa laittaa noin sekunnin odotus, jotta anturien arvot ehtivät asettua.
Tehtävä 1.
Tee ohjelma, joka saa robotin ajamaan eteenpäin 75% teholla sekunnin ajan, jonka jälkeen moottorit pysäytetään.
Tehtävä 2.
Lisää ohjelmaan ominaisuus, joka saa robotin palaamaan lähtöpaikkaansa. Eli ajat moottoreilla saman ajan, mutta negatiivisella teholla.
Tehtävä 3.
a) Tehkää ohjelma, jossa moottorin teho riippuu etäisyysanturin lukemasta.
b) Muuttakaa ohjelmaa siten, että nopeus riippuu kaikkien anturien arvojen summasta. Muuttakaa summan arvo välille -100...100.
Tehtävä 4.
a) Tehkää ohjelma, jossa robotti ajaa yhteen suuntaan, jonka jälkeen se kääntyy 180 astetta, palaa lähtöpaikkaansa, kääntyy 180 astetta ja jatkaa samaa uudestaan.
b) Lisätkää ohjelmaan ominaisuus, jossa se ilmoittaa kuinka monta kertaa se on kääntynyt (joko näytölle tai debugPrint:in avulla).
Tehtävä 5.
a) Tehkää ohjelma, jossa robotti käynnistyy kun taputatte käsiänne (painatte kosketusanturia) ja myös pysähtyy kun taputatte käsiänne (painatte kosketusanturia). flipflop muistaa tilan eli oliko robotti liikkeessä vai pysähdyksissä.
b) Lisätkää ohjelmaan ominaisuus, että robotti ensin hidastaa ja lopulta pysähtyy, jos jokin esine tulee liian lähelle. Käyttäkää etäisyysanturia tähän.
Tehtävä 6.
Tehkää ohjelma, jossa robotti lähtee liikkeelle kun taputatte käsiänne (painat kosketusanturia) ja hidastaa kun pallo tulee vastaan. Robotti pysähtyy kun kosketusanturi osuu palloon. Nappaa pallon kyytiin ja palaa lähtöpaikkaan (tunnistetaan valoanturilla), pysähtyy ja vapauttaa pallon.
Tehtävä 7.
a) Tehkää ohjelma, jossa ajatte robottia sekunnin eteenpäin. Tehkää robotin ohjaus omaan funktioon. Eli task main()
:iin ei muuta koodia kuin funktion kutsu.
b) Lisätkää ohjelmaan funktio, joka ottaa moottorin nopeuden ja ajettavan ajan parametrina sisään funktioon. Käyttäkää niitä.
Tehtävä 8.
Tehkää tehtävästä 6 uusi versio, missä on omissa funktioissaan seuraavat toiminnot:
- eteenpäin ajaminen, kunnes pallo tulee vastaan
- pallon nappaaminen kyytiin
- kääntyminen 180 astetta
- loppupaikkaan palaaminen
Muuten ohjelma toimii samalla tavalla kuin tehtävässä 6.
Tehtävä 9.
Tehkää ohjelma, jossa robotti ajaa 40000 pulssia (muista pulssilaskurin maksimiarvo on 32767, eli tapahtuu moottorin laskurin ylivuoto).
Vihje: tutustu nMotorEncoder-muuttujaan. (Help>NXT Functions>Motors)
Tehtävä 10.
a) Tehkää ohjelma, joka tulostaa moottorien nopeuden debugPrint:in avulla. Kopioikaa tulostukset Exceliin ja piirtäkää kuvaaja siitä.
Vihje: tutustu nMotorEncoder-muuttujaan. (Help>NXT Functions>Motors)
b) Testatkaa moottoreiden synkronointikäsky nSyncedMotors, sekä moottorien PID-säätö. Sen voi laittaa päälle koodissa tai sitten Motors and Sensors setup -ikkunasta. Tehkää sama exceliin siirto a)-kohdassa. Mitä havaitsette?
Tehtävä 11.
Tehkää ohjelma, jossa robotti tekee kolmea eri toimintoa, riippuen siitä mikä heräte robotille annetaan. Herätteenä toimii sormen napsutus (tai kosketussensori). Tehkää toiminnot omiin funktioihinsa.
- Yhdellä napsautuksella robotti pyörähtää puoli kierrosta vasemmalle.
- Kahdella napsautuksella robotti pyörähtää puoli kierrosta oikealle.
- Kolmella napsautuksella robotti ajaa sekunnin suoraan.
Tehtävä .
Tee ohjelma, joka lukee etäisyyssensorin arvoja ns. raakadatana SensorRaw[]:n avulla. Tehkää funktio joka tallentaa arvoja int-taulukkoon ja toinen funktio, jolla voidaan hakea keskiarvo halutulta ajalta (tyyliin keskiarvo viimeisistä viidestä arvosta).
Tehtävä ?.
Tehkää ohjelma, jossa robotti seuraa lattialle asetettua teippiä. Arvostelu ? pistettä saavutetusta kiertoajasta riipuen.