Vaja t.: 1
Datum: 20.12.2001
Besedilo naloge:
Za mobilnega est-nogega robota ( robotsko mravljo ) zapii program za hojo robota v Basic-u, programskem jeziku.
1.)Oglejte si gibanje robota (predvsem premikanje vseh estih nog ) pri
delovanju ( gibanje naprej, gibanje nazaj, levo, desno ) !
2.)>Natančno si oglejta obstoječi program: mravlja.bas in ugotovite niz
ukazov, ki povzroči gibanje naprej!
3.)Dodate program, ki bo omogočal gibanje nazaj, po tistem, ko je ena
izmed tipk zaznala dotik z okoljem ( oviro ).
4.) Dodajte program, ki bo po pritisku na levo tipko el 5 korakov nazaj, nato
se zasukal za 90° v desno in nadaljeval z gibanjem naprej do naslednje
ovire.
5.)Dodajte program, ki bo po pritisku na desno tipko el 5 korakov nazaj,
nato se zasukal za 90° v levo in nadaljeval z gibanjem naprej do naslednje
ovire.
6.) Naredite kaj kompliciranega!
'MRAVLJA.BAS
'Stamp Bug Program -modificiran za projekt iz Robotike 1 VIS 3. letnik Avtomatika
'Milford Instruments; England
'+44-1977-683665; Fax +44-1977-681465
'E-Mail- Info@Milinst.demon.co.uk
'This version for use with board bug41.pcb and4.2: March 1998
' lokacija variabel:
Symbol dotaknjeno=bit0 'zastavica, ki kaze ce je bila tipalka dotaknjena
Symbol stevec=b2 'stevec v zanki v >korak< delu programa
Symbol stevec2=b3 'stevec v zanki za druge dele programa
Symbol Center_pos=b4 'polozaj centralne noge
Symbol Right_pos=b8 'polozaj desne noge
Symbol Left_pos=b9 'polozaj leve noge
if pin0=1 then skok 'selektiraj mode za delovanje na preprogi ali na gladki povrsini
b10=165:b11=135 'preproga-mode (visji dvig nog)- jumper nataknjen
goto start
skok:
b10=157:b11=143 'gladka_povrsina-mode (manjsi dvig nog)- jumper ni montiran
start:
' Konstante
Symbol Rleg_max=185 'maksimalni odklon v smeri naprej za desni nogi
Symbol Rleg_min=130 'maksimalni odklon v smeri nazaj za desni nogi
Symbol Lleg_max=185 'maksimalni odklon v smeri naprej za levi nogi
Symbol Lleg_min=130 'maksimalni odklon v smeri nazaj za levi nogi
Symbol cleg_max=b10 'maksimalni odklon centralni nogi
Symbol cleg_min =b11 'minimalni odklon centralni nogi
Symbol pulses=20 'stevilo pulzov za vsak korak
Symbol pulses1=3 'st pulzov za nazaj
Symbol zakasnitev=10 'Pavza ned pulzi za vse servo-pogone v ms
Symbol center=150
'Lokacija pin-ov
Symbol Left_servo=5 'Levi servo na pinu 5
Symbol Center_servo=6 'Centralni servo na pinu 6
Symbol Right_servo=7 'Desni servo na pinu 7
Symbol Levo_oko=3 'Levo oko na pinu 3
Symbol Desno_oko=1 'Desno oko na pinu 1
Symbol Desna_tipalka=pin2 'Desna tipalka na pinu 2
Symbol Leva_tipalka=pin4 'Leva tipalka na pinu 4
'Inicializacija
dirs=%11101010
pins=%00001000 'levo oko prizgano, desno oko ugasnjeno
'Preveri, ce je leva tipalka pritisnjena, ce je izvedi servo
'set-up podprogram... uporabi samo med sestavljanjem robotske mravlje
if leva_tipalka=0 then kalibriraj
Main:
toggle levo_oko
toggle desno_oko
center_pos=cleg_min 'desna stran gor
left_pos=Lleg_max 'pojdi naprej
right_pos=Rleg_max
gosub korak
toggle levo_oko
toggle desno_oko
center_pos=cleg_max 'desna stran dol
left_pos=Lleg_min
right_pos=Rleg_min 'pojdi naprej
gosub korak
goto main
tipalke: 'Del programa, kjer se testira, ce se je katera od tipalk dotaknila ovire
if dotaknjeno=1 then preskoci
if leva_tipalka=0 then levo
if desna_tipalka=0 then desno
return
levo:
'Del programa, ce se je desna tipalka dotaknila ovire
gosub nazaj 'najprej izvedi nekaj korakov nazaj
for stevec2=1 to 4 ' stevilo korakov
center_pos=cleg_min 'desna stran gor
left_pos=Lleg_max 'pojdi desno
right_pos=Rleg_min
gosub korak
center_pos=cleg_max 'desna stran dol
left_pos=Lleg_min
right_pos=Rleg_max 'pojdi desno
gosub korak
next
goto main
'Del programa, ce je leva tipalka se dotaknila ovire
desno:
'Del programa, ce se je desna tipalka dotaknila ovire
gosub nazaj 'najprej izvedi nekaj korakov nazaj
for stevec2=1 to 4 'stevilo korakov
center_pos=cleg_min 'desna stran gor
left_pos=Lleg_min 'pojdi levo
right_pos=Rleg_max
gosub korak
center_pos=cleg_max 'desna stran dol
left_pos=Lleg_max
right_pos=Rleg_min 'pojdi levo
gosub korak
next
goto main
korak: 'Podprogram za izvajanje samo enega koraka
for stevec=1 to pulses 'stevilo pulzov
pulsout center_servo,center_pos
gosub tipalke 'preveri tipalke
pause zakasnitev 'pavza med pulzi
next
for stevec=1 to pulses
pulsout right_servo,right_pos
pulsout left_servo,left_pos
pulsout center_servo,center_pos
gosub tipalke 'preveri tipalke
pause zakasnitev
next
return
nazaj: 'podprogram za hojo nazaj
dotaknjeno=1 'postavi zastavico (ne citas tipalk!)
for stevec2=1 to 5 'stevilo korakov
center_pos=cleg_max 'leva stran gor
left_pos=Lleg_max 'pojdi nazaj
right_pos=Rleg_max
gosub korak
center_pos=cleg_min 'leva stran dol
left_pos=Lleg_min
right_pos=Rleg_min 'pojdi nazaj
gosub korak
next
dotaknjeno=0 'zbrisi zastavico
return
kalibriraj: 'Za pomoc pri nastavitvi nog
pulsout right_servo,center
pulsout left_servo,center
pause zakasnitev
goto kalibriraj
| Avtor: tumberger Andrej |
|







