Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali...
-
Upload
hoangtuyen -
Category
Documents
-
view
224 -
download
0
Transcript of Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali...
![Page 1: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/1.jpg)
8.-12. julij 2013
Prosojnice iz poletne šole FRI
“Naredil bom kar želiš” aliKako vzgojiti ubogljivega robotka?
![Page 2: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/2.jpg)
Lego Mindstorms NXT
2
![Page 3: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/3.jpg)
Lego Mindstorms NXT
• Programirljiva kocka (brick)– Računalnik
• Procesor: 48 MHz, 32 bit (ARM7)• Pomnilnik: 256 kB flash, 64 kB RAM
– Uporabniški vmesnik• LCD zaslon 64 x 100 točk• 4 tipke• Zvočnik
– Vmesniki• USB, Bluetooth
– Baterije (6 x AA)– Vhodi in izhodi
• Motorji A, B, C• Senzorji 1, 2, 3, 4
3
![Page 4: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/4.jpg)
Lego Mindstorms NXT
• Motorji– 2 načina upravljanja
• Nastavitev hitrosti• Nastavitev kota zasuka
– Merjenje položaja• 360 pulzov na obrat
4
![Page 5: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/5.jpg)
Lego Mindstorms NXT
• Senzorji v paketu– Senzor dotika– Zvočni senzor (mikrofon)– Svetlobni senzor (črno-bel)– Ultrazvočni senzor (sonar)
• Dodatni – Kompas– Merilnik pospeška (žiroskop)– Svetlobni senzor (barvni) – Infrardeči senzor
5
![Page 6: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/6.jpg)
Lego Mindstorms NXT
• Senzor dotika– Z njim robot otipa stvari– Vrača vrednosti
• 1 pritisnjen• 0 sproščen
6
![Page 7: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/7.jpg)
Lego Mindstorms NXT
• Zvočni senzor – Robot z njim sliši– Meritev v decibelih– Vrača vrednosti od 0 do 100
• 4 – 5 mirno okolje• 5 – 10 govor iz razdalje• 10 – 30 normalni govor v bližini senzorja• 30 – 100 kričanje, glasna glasba
– Začetek izvajanja akcij na vašo zahtevo (plosk, vzklik)
7
![Page 8: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/8.jpg)
Lego Mindstorms NXT
• Svetlobni senzor– Robot z njim loči temno in svetlo – Intenziteta svetlobe
• Barve, sivine– Vrača vrednosti od 0 do 100
• 0 temno• 100 svetlo
– Vgrajen vir svetlobe• Vklop po želji• Boljše meritve (manj senc)
8
![Page 9: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/9.jpg)
Lego Mindstorms NXT
• Ultrazvočni senzor – Senzor za vid, z njim zazna objekte– Primeren za detekcijo ovir na poti– Kako deluje
• Netopir• Oddajnik in sprejemnik• Računanje razdalje iz časa med oddajanjem
zvoka in sprejemom odboja– Vrača razdaljo v centimetrih (zelo približno)
• 0 – 255 • 255 pomeni neskončno
9
![Page 10: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/10.jpg)
Lego Mindstorms NXT
• Programiranje– Program se izvaja
na kocki• LEGO: NXT-G• Ostali programski jeziki
– C: RobotC, nxtOSEEK,Next Byte Codes & Not eXactly C, …
– Java: LeJOS NXJ (Java)– Ada, Lua, Ruby, URBI, …
• Prednosti: boljša odzivnost, robot je samostojen
– Komunikacija preko vmesnikov USB ali Bluetooth• Python, Matlab, …• Prednosti: poljubni programski jeziki, boljša razvojna okolja
10
![Page 11: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/11.jpg)
Prijava v računalnik
• Zbudite/prižgite računalnik• Pritisnite Ctrl+Alt+Delete, da se pojavi prijavno
okence• Vnesite naslednje:
– Uporabniško ime FRI1\priprave00
– Geslostudij
11
![Page 12: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/12.jpg)
RobotC
12
![Page 13: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/13.jpg)
RobotC
• Zmogljivo razvojno okolje – Grafični vmesnik– Programiranje v jeziku C– Razhroščevalnik– MS Windows Vista, 7, 8– http://www.robotc.net– 30 dnevno preizkusno obdobje
• Posebna programska oprema– Firmware za programirljivo kocko– Gonilnik za operacijski sistem
• Programiranje preko vmesnikov USB ali Bluetooth13
![Page 14: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/14.jpg)
RobotC
• Nalaganje firmware-a– Povezava USB– Postopek
• Refresh Lists• Rename NXT• F/W
Download
14
![Page 15: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/15.jpg)
RobotC
• Prvi program– Glavni meni– Orodna vrstica– Levo okno – pomoč– Desno okno – urejevalnik programske kode
15
![Page 16: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/16.jpg)
RobotC
• Prenos programa na programirljivo kocko– Compile and Download Program – F5
16
![Page 17: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/17.jpg)
RobotC
• Vzpostavitev povezave Bluetooth– Communication Link Setup
17
![Page 18: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/18.jpg)
RobotC
• Spremljanje vrednosti na kocki– Poll Brick: motorji in senzorji
18
![Page 19: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/19.jpg)
Lego Mindstorms NXT
• Težave ko se programirljiva kocka ne odziva več– Kratek pritisk na gumb, skrit v kocki,
jo resetira– Kocka mora biti prižgana
• Povezava Bluetooth– Omogočite povezavo preko vmesnika na kocki– Dela samo z Microsoftovimi Bluetooth gonilniki: če ima
vaš računalnik drugačnega, uporabite USB Bluetooth
19
![Page 20: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/20.jpg)
Lego Mindstorms NXT
• Izgubljena brezžična povezava Bluetooth– Ugasnite kocko– Odstranite USB Bluetooth iz računalnika– Ponovno vstavite USB Bluetooth– Prižgite kocko
20
![Page 21: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/21.jpg)
Naloga 1
• Vzemite programirljivo kocko • Priklopite vse senzorje in motorje • Naložite firmware• Prepišite “Prvi program” iz prosojnice 34
– Prevedite program – Prenesite ga na kocko in zaženite (USB)
• Oglejte si delovanje motorjev in senzorjev (Poll brick)
21
![Page 22: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/22.jpg)
8.-12. julij 2013
Osnove programiranja
v RobotC
![Page 23: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/23.jpg)
Kako se programira?
• Programer in stroj (robot)– Roboti so namenjeni za opravljanje uporabnih nalog– Vsak je zgrajen za reševanje določenih nalog na
določen način
• Kako robot opravlja svoje delo?
Problem Cilj?
23
![Page 24: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/24.jpg)
Kako se programira?
• Kako naj robot napiše številko 5?– Širina 20 cm– Višina 40 cm
• Rešitev:Pojdi naprej za 20 cmObrni se za pravi kot v levoPojdi naprej za 20 cmObrni se za pravi kot v levoPojdi naprej za 20 cmObrni se za pravi kot v desnoPojdi naprej za 20 cmObrni se za pravi kot v desnoPojdi naprej za 20 cm
24
![Page 25: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/25.jpg)
Kako se programira?
• Dosežen cilj je skupno delo človeka in robota– Človek
• Določi problem • Določi postopek reševanja• Razloži postopek robotu
– Robot• Izvrši zadane ukaze
priprava rešitve
izdelava programa
sledenjeprogramuProblem Cilj
človek robot
25
![Page 26: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/26.jpg)
Kako se programira?
• Težava: ljudje in stroji ne govorimoistega jezika!
• Za komunikacijo uporabljamo posebne (programske) jezike– Obstaja mnogo programskih
jezikov (Java, PHP, Python, C, …)
• Ukazi robotu, ki jih napišemo v programskem jeziku, so programi.
01000001
???
26
![Page 27: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/27.jpg)
Kako se programira?
• Program je zaporedje akcij– Napišemo kot besedilo
v izbranem okolju (RobotC)– To besedilo imenujemo
programska koda– Kodo je potrebno pretvoriti v robotu
razumljivo obliko (prevajanje)• Prevajalnik prevede program
v strojni jezik, ki ga razumeračunalnik
• Zaporedje enic in ničel, 110101010101
27
![Page 28: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/28.jpg)
• Pri pisanju programa se moramo držati "slovničnih" pravil– Velike in male črke!– Ločila: ;,{},(),[]– Besede se vedno začnejo s črko– Presledki in prazne vrstice za
preglednost– Rezervirane besede so barvno
označene, na primer task main()
Kako se programira?
28
![Page 29: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/29.jpg)
Kako se programira?
• Komentarji– Prevajalnik jih ignorira– Pomoč za programerja– Pomagajo pri berljivosti kode– Začasno izključijo del kode
– Dve vrsti• Enovrstični //• Večvrstični /* ... */
29
![Page 30: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/30.jpg)
Kako se programira?
• Prevajanje– V meniju izberemo
Robot | Compile Program (tipka F7)
• Rdeč križ označuje napako– Pod programsko kodo so
opisane napake– Prevajalnik ne razume akcije naprej()
– Akcijo naprej() je potrebno definirati
30
![Page 31: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/31.jpg)
Akcije
• Definiranje akcije naprej()– Združimo dva ukaza
• motor[oznaka] = hitrost;
• wait1Msec(število);
• Slovnična pravila– Z besedo void napovemo akcijo– V [] oklepajih navedemo želeni
motor (motorB, motorC)– V () oklepajih navedemo čas v
milisekundah
31
![Page 32: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/32.jpg)
Akcije
• Ukazi motorjem in akcije robota– Naprej hitro– Naprej počasi– Nazaj hitro– Stop– Vrtenje okrog
središča– Vrtenje okrog
kolesa
32
![Page 33: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/33.jpg)
Poimenovanje motorjev
• Ukazi s prejšnje strani delujejo samo, če sta– motorC levi motor– motorB desni motor
• Definiramo spomenke za motorC, motorB– #define motorLevi motorC– #define motorDesni motorB
• V nadaljevanju uporabljamo samo sopomenke– Namesto: motor[motorC] = 100;
– Raje: motor[motorLevi] = 100;
33
![Page 34: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/34.jpg)
Naloga 2
• Prepišite program in ga zaženite
• Odstranite komentarje vtask main()
• Dopišite akciji– zavijLevo()
– zavijDesno()
• Preizkusite, če vaš robot napiše številko 5
34
![Page 35: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/35.jpg)
Naloga 2 (rešitev)
35
![Page 36: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/36.jpg)
Spremenljivke
• So deli spomina – "predalčki" za shranjevanje vrednosti (števil)
• Zakaj jih rabimo?– Večkrat moramo stvari shraniti za kasnejšo uporabo
• Izračunavanje vmesnih rezultatov• Shranjevanje starih vrednosti
• Definicija spremenljivke– Podatkovni tip in poljubno ime– Primer: int mojaStevilka;
36
![Page 37: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/37.jpg)
• Podatkovni tipi– Različni tipi zaradi različnih zapisov podatkov v
pomnilniku računalnika
• int cela števila• float decimalna števila• string niz znakov (besedilo)• bool logični vrednosti
• resnično (1, true)• neresnično (0, false)
Spremenljivke
37
![Page 38: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/38.jpg)
Spremenljivke
• Področje delovanja
– Globalne spremenljivke• Definiramo jih nad task main()• Vidne so povsod
– Lokalne spremenljivke• Definiramo jih znotraj akcije • Vidne so samo v akciji, v kateri so
definirane
38
![Page 39: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/39.jpg)
Spremenljivke
• Prirejanje vrednosti (dva načina)
– Deklaracija in priredbaint pot;
pot = 20;
– Oboje skupajint pot = 20;
39
![Page 40: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/40.jpg)
• Primer uporabe:– Robot gre naprej in nazaj za cas milisekund
Spremenljivke
40
![Page 41: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/41.jpg)
Naloga 3
• Nalogo 2 popravite tako,da bo številka 5 velika:– 40 cm x 80 cm– 30 cm x 60 cm
• Uporabite spremenljivke
41
![Page 42: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/42.jpg)
Naloga 3 (rešitev)
Različica 1
Različica 2
42
![Page 43: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/43.jpg)
• So akcije, sestavljene iz enega ali več ukazov• Proceduri: naprej() in naprejDalec()
– Dve različici akcije vožnja naprej– Razlikujeta se samo v času čakanja
Procedure
43
![Page 44: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/44.jpg)
Procedure
• Deklaracija Parametra– Podatkovni tip– Ime, ki ga nato uporabljamo
znotraj procedure– void naprej(int razdalja)
– Premik za razdalja centimetrov
• Klic procedure– Določi se vrednost razdalja
44
![Page 45: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/45.jpg)
• Procedure samo izvršujejo ukaze– Ne vračajo vrednosti, zato pred imenom nastopa void
• Funkcije vračajo določeno vrednost– Primeri: abs(stevilo), sqrt(stevilo), sin(kot), …– Podatkovni tip vrednosti,
ki jo funkcija vrne,povemo pred imenom funkcije
– Vrednost iz funkcijevrnemo z ukazom return
Funkcije
45
![Page 46: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/46.jpg)
• V programu za pisanje številke 5– Uporabite proceduro naprej(int razdalja), v kateri
naj se robot vsakič premakne za razdalja centimetrov
– Napišite proceduri, s katerima se robot zavrti za poljuben kot (v stopinjah):
• zavijLevo(int kot)
• zavijDesno(int kot)
Naloga 4
46
![Page 47: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/47.jpg)
Naloga 4 (rešitev)
47
![Page 48: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/48.jpg)
Premikanje robota
• Merjenje razdalje
– Na podlagi časa• Kaj se zgodi, če spremenimo hitrost?
– S pomočjo merilnika položaja motorja (enkoder)• V enem obratu nameri 360 impulzov• Ne pozna začetnega položaja
48
![Page 49: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/49.jpg)
Premikanje robota
• Merjenje razdalje– Nastavimo vrednost enkoderja na nič
• nMotorEncoder[motorC] = 0;
– Nastavimo ciljni premik v številu impulzov• nMotorEncoderTarget[motorC] = 1000;
– Gibanje motorjev sprožimo z željeno hitrostjo• motor[motorC] = hitrost;
– Počakamo, da se premik konča• wait1Msec(10000);
49
![Page 50: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/50.jpg)
Premikanje robota
• Merjenje razdalje (primer)
50
![Page 51: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/51.jpg)
Mali triki velikih mojstrov
• Ukaz wait1Msec(…) lahko nadomestimo z ukazom– while(nMotorRunState[motorLevi] != runStateIdle){}
• Motor ima pri hitrosti nič dva načina delovanja:– Lebdenje: bFloatDuringInactiveMotorPWM = 1;
– Zaviranje: bFloatDuringInactiveMotorPWM = 0;
– Z vklopljenim zaviranjem so premiki natančnejši– Ukaz začne veljati šele ob naslednji nastavitvi hitrosti
na 0!
51
![Page 52: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/52.jpg)
Mali triki velikih mojstrov
• Razhroščevanje
– Spremljanje izvajanja programa, po korakih• Step Into
– Uporabno za iskanje napak v programu (hroščev)
52
![Page 53: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/53.jpg)
Naloga 5
• Izboljšajte proceduro za premikanje naprej– Dopolnite jo s prvim trikom iz prosojnice 66– Kot parameter dodajte še hitrost (negativna hitrost je
premikanje nazaj)• Napišite proceduro zavij(int kot, int hitrost), s
katero robota obrnemo na mestu z dano hitrostjo za zahtevani kot– Negativna hitrost naj pomeni obračanje v nasprotno stran
• Robota čim bolj natančno umerite• Poskusite, kako sprememba hitrosti vpliva na izvajanje
ukazov naprej in zavij• Namig: premer kolesa je 5,4 cm, medosno razdaljo pa
izmerite
53
![Page 54: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/54.jpg)
Naloga 5 (rešitev)
54
![Page 55: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/55.jpg)
Naloga 6 – dodatna
• Robot naj z "eno potezo" nariše hišico s podano stranico a
a
55
![Page 56: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/56.jpg)
Naloga 6 – dodatna (rešitev)
56
![Page 57: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/57.jpg)
Pisanje na zaslon
• Pisanje besedila– nxtDisplayString(vrstica, "Pozdravljena Poldka!");
– Številka vrstice od 0 (zgornja) do 7 (spodnja)– Šumniki ne delujejo
• Brisanje zaslona– eraseDisplay();
57
![Page 58: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/58.jpg)
Pisanje na zaslon
• Pisanje besedila in števil (primer)– float b = 3.14;
nxtDisplayString(0, "Stevilo %d ni enako %f", 3, b);
• Razlaga– nxtDisplayString(vrstica, format, p1, p2, p3, …);
– format lahko vsebuje oznake za parametre• %d celo število (int)• %f decimalno število (float)• %s niz znakov (string)
– p1, p2, p3 so vrednosti ali imena spremenljivk, katerih vrednosti želimo izpisati na zaslon.
• Ukaz, ki sproti pobriše neuporabljeni del vrstice:– nxtDisplayTextLine(vrstica, format, p1, p2, p3, …);
58
![Page 59: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/59.jpg)
Naloga 7
• Preverite kaj naredi naslednji program
59
![Page 60: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/60.jpg)
Piskanje
60
• Igranje vgrajenih zvokov– PlaySound(sound)
– sound je lahko soundBeepBeep , soundBlip, soundLowBuzz, soundFastUpwardTones, soundShortBlip,…
• Igranje poljubnih tonov– PlayImmediateTone(frekvenca, trajanje)
– Frekvenca v Hz– Trajanje v stotinkah sekunde
• Frekvence tonovTON C’ Cis’
Des’D’ Dis’
Es’E’ F’ Fis’
Ges’G’ Gis’
As’A’ Ais’
B’H’ C’’
FREK-VENCA
261.626
277.183
293.665
311.127
329.628
349.228
369.994
391.995
415.305
440.000
466.164
493.883
523.251
![Page 61: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/61.jpg)
• Preverite, če naslednji program pravilno zaigranapisane note
Naloga 8
61
![Page 62: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/62.jpg)
Zaznavanje
• Lego Mindstorms kocka ima štiri vhode, na katere lahko priklopimo različne senzorje (S1, S2, S3, S4)
• Senzorje je pred uporabo potrebno pravilno nastaviti
62
![Page 63: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/63.jpg)
Zaznavanje
• Delo s senzorji v programski kodi– #define oznakaSenzorja S1
• Poljubno ime senzorja povežemo z oznako senzorja S1, …, S4
– SensorType[oznakaSenzorja] = …• Programsko nastavi tip senzorja
sensorTouch, sensorLightActive, sensorLightInActive, sensorSONAR, sensorSoundDB, sensorSoundDBA, …
– SensorMode[oznakaSenzorja] = …• Programsko nastavi kakšne vrednosti naj senzor vrača
modeBoolean, modePercentage, modeRaw, …
– SensorValue(oznakaSenzorja) • Funkcija, ki vrne trenutno vrednost (stanje) senzorja
63
![Page 64: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/64.jpg)
Izvajanje programa
• Enostaven program– Izvajanje ukazov od
začetka do konca
64
Začetek
Zvoni budilka
Splezaj iz postelje
Konec
Ugasni budilko
![Page 65: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/65.jpg)
Vejitve
• Program se glede na pogoj nadaljuje po različnih poteh
• if (če)
65
Začetek
Zvoni budilka
Splezaj iz postelje
Konec
Počitnice?
Ugasni budilko
Da Ne
Spi še kako uro
Samo še pet
minutk…
![Page 66: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/66.jpg)
Zanke
• Ponavljanje določenihukazov
• while (dokler)• for (za)
66
Začetek
Zvoni budilka
Splezaj iz postelje
Konec
Bi še malo
poležal/a?
Vključi dremež
Ne Da
![Page 67: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/67.jpg)
Zanka WHILE
• Trije sestavni deli– Ključna (rezervirana) beseda
while
– Pogoj• Napisan mora biti v obliki logičnih izjav, na katere vedno
obstaja odgovor RESNIČNO ali NERESNIČNO• Primer: "Vrednost senzorja dotika je enaka 0"
» Izjava je RESNIČNA (1), če vrednost senzorja je 0» Izjava je NERESNIČNA (0), če vrednost senzorja ni 0
– Telo zanke – sestavljajo ga ukazi znotraj zavitih oklepajev ukaz1, … ukazN
• Telo zanke se izvaja dokler je pogoj izpolnjen
67
while( pogoj ){
ukaz1;…ukazN;
}
![Page 68: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/68.jpg)
Pogoji
• Primerjalni operatorji== vrednost na levi in desni sta enaki
dvojni enačaj preverjanje enakostienojni enačaj prireditev vrednosti
!= vrednost na levi je različna od vrednosti na desni< vrednost na levi je manjša od vrednosti na desni<= vrednost na levi je manjša ali enaka vrednosti na desni> vrednost na levi je večja od vrednosti na desni>= vrednost na levi je večja ali enaka vrednosti na desni
• Primeri1 == 1 je 1 enako 1?, vedno resnično1 == 0 je 1 enako 0?, vedno neresnično
68
![Page 69: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/69.jpg)
Pogoji
• Enostavni pogoji– senzorSvetlobe > 45
– sezorDotika == 1
• Sestavljeni pogoji– (senzorSvetlobe > 45) && (senzorDotika == 1)
– Enostavne pogoje zavijemo v oklepaje• Logični operatorji za povezovanje enostavnih
pogojev:
– ! negacija (not) – && in (and)– || ali (or)
69
![Page 70: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/70.jpg)
Logični operatorji
• Negacija!Pogoj
• In(Pogoj1 ) && (Pogoj2)Sestavljeni pogoj JE RESNIČEN samo, če sta OBAenostavna pogoja RESNIČNA
• Ali(Pogoj1) || (Pogoj2)Sestavljeni pogoj JE RESNIČEN, če je VSAJ EDEN od enostavnih pogojev RESNIČEN
70
Pogoj !Pogoj
0 11 0
Pogoj 1 Pogoj 2 && ||0 0 0 00 1 0 11 0 0 11 1 1 1
![Page 71: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/71.jpg)
Zanke (primer)
• Dokler se robot ne zaleti v steno naj se s polnohitrostjo premika naravnost naprej. Po trku naj vozi 0,5 sekunde vzvratno.
– Nastavitev senzorja– Branje senzorja– Zanka WHILE
71
![Page 72: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/72.jpg)
Naloga 9
• Senzor dotika zamenjajte s svetlobnim senzorjem in ponovite prejšnji primer– Na mizo nalepite košček črnega lepilnega traku– Robot naj se ustavi, ko senzor zazna lepilni trak– Senzor ustrezno nastavite
• Luč v senzorju naj bo aktivna bolj natančno delovanje ob spremenljivih pogojih
• Senzor naj vrača vrednosti v odstotkih– Nizka vrednost senzor zaznava temno podlago– Visoka vrednost senzor zaznava svetlo podlago
• Glede na meritve na obeh podlagah nastavite prag za zaznavanje temne podlage
– Preverite delovanje programa
72
![Page 73: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/73.jpg)
Zanke (primer)
• Robot naj se vozi naravnost naprej dokler se ne zaleti– Med vožnjo naj na svoj
zaslon izpisuje ali se vozi po temni ali po svetli podlagi
– Gnezdenje zank while– Rešitev ni najbolj
elegantna• Ukazi za premikanje
se ponavljajo v obeh zankah
73
![Page 74: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/74.jpg)
Vejitve
• V prejšnjem primeru je primernejša uporaba vejitev• Stavek if-else
– Običajno programiramo tako, da v eno vrstico napišemo en ukaz
– Temu stilu bolj ustreza desniprikaz vejitve
74
![Page 75: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/75.jpg)
Stavek if-else
• Če je pogoj izpolnjen, seizvršijo samo ukaziukazDA
• Če pogoj ni izpolnjen, se izvršijo samo ukaziukazNE
• Zamikanje povečapreglednost kode
75
if( pogoj ){
ukazDA1;…ukazDAn;
}else{
ukazNE1;…ukazNEn;
}
![Page 76: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/76.jpg)
Stavek if
• Kadar je potrebnoukrepati samo obizpolnjenem pogoju, del else… izpustimo
76
if( pogoj ){
ukazDA1;…ukazDAn;
}
![Page 77: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/77.jpg)
Vejitve (primer)
• Robot naj se vozi naravnost naprej dokler se ne zaleti– Med vožnjo naj na svoj
zaslon izpisuje ali se vozi po temni ali po svetli podlagi
– Izboljšava prejšnjegaprimera
77
![Page 78: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/78.jpg)
Vejitve (primer)
• Robot naj se vozi dokler se ne zaleti– Pri vožnji po
temni podlagi naj piska
78
![Page 79: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/79.jpg)
Naloga 10
• Robot naj se s pomočjo ultrazvočnega senzorja ali sonarja postavi na oddaljenost približno 20 cm od ovire– Če oviro oddaljimo, naj se ji približa– Če oviro približamo, naj se od nje ustrezno oddalji– Program zaključimo s pritiskom na senzor dotika
79
![Page 80: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/80.jpg)
Zanke (štetje ponovitev)
• Kako bi s splošnimi proceduramiza premikanje in zavijanje narisali kvadrat?– Zaporedje funkcij naprej() in zavij() se ponovi štirikrat
– Boljša rešitev (psevdokoda)• Kako prepričati robota, da
ukaza 4-krat ponovi?
80
![Page 81: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/81.jpg)
Zanke (štetje ponovitev)
• Ponavljanje ukazov lahkodosežemo z zanko while– Števec i– Kaj naredi i = i + 1?
81
![Page 82: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/82.jpg)
Naloga 11
• Napišite proceduro, ki bo robota vozila po stranicah poljubnega enakostraničnega n-kotnika (n>2)
• Namigi– Robot se mora vrniti v isto točko. – Skupaj mora zaviti za 3600
– Procedura naj ima dva parametra:• Število kotov n in • Dolžino stranice a
82
![Page 83: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/83.jpg)
Naloga 12
• Robot naj pri vožnji naravnost naprej šteje kolikokrat je prešel iz svetlega področja na temno področje– Uporabite
• Senzor za merjenje svetlosti podlage in• Senzor za dotik, da robota ustavite
– S črnim lepilnim trakom si na mizi naredite nekaj različno debelih črt
– Prehod zaznamo tako, da se stara vrednost in nova vrednost senzorja močno razlikujeta
83
![Page 84: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/84.jpg)
Sledenje črti
• Uporaba enega senzorja• Robot naj sledi enemu od robov črte
84
![Page 85: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/85.jpg)
Sledenje črti
• Sledimo levemu robu– Če vidi temno, je na črti, rob je levo
• Približa se mu z gibanjem naprej in v levo– Če vidi svetlo, ni na črti, rob je desno
• Približa se mu z gibanjem naprej in desno
85
![Page 86: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/86.jpg)
Naloga 13
• Napišite program, ki bo z uporabo enega senzorja za svetlobo sledil črti– Sledite prej opisani ideji– Robot naj bo kar najhitrejši– Sledenje sprožite in prekinete
s pritiskom na senzor dotika
86
![Page 87: Prosojnice iz poletne šole FRI “Naredil bom kar želiš” ali ...laspp.fri.uni-lj.si/roboliga/2014/files/RobosolaFRI2013-prosojnice.pdf · Lego Mindstorms NXT • Ultrazvočni](https://reader034.fdocument.pub/reader034/viewer/2022042517/5a788f357f8b9a77438ecd1a/html5/thumbnails/87.jpg)
Naloga 14 - dodatna
• Sledenje črti – nadaljevanje– Zanesljivost robota in njegovo hitrost poskusite
izboljšati z dodatnim senzorjem za svetlobo
87