Gurkenmesser
17.06.2009, 14:23
Hi,
ich bin grade dabei für für ein projekt einen asuro zu programmieren...nun wollte ich gerne das er es schafft durch ein unbekanntes labyrinth zu kommen,hab auch schon eine idee wie das klappen sollte nur happert es bei einem punkt der umstezung
erstmal meine idee
Unser labyrinth soll nur einen weg haben,also keine sackgassen usw...meine idee war deshalb wenn er einmal aneckt dreht er sich nach rechts und versucht weiter zu fahren,wenn er hier gleich wieder aneckt dreht er sich um 180 grad,da das ja nun nurnoch der einzigste weg ist bei dem es weiter gehen kann
Nun happert es bei der umsetzung an folgendem:
Ich weiß nicht genau wie ich es anstelle das der kleine kerl erkennt das er 2mal ganz kurz hintereinander angeeckt ist und sich dann um 180 grad drehen muss.Ich würde das jetzt irgendwie über timer lösen weiß aber noch nicht so richtig wie :(
Hier ist mal mein code bis jetzt
Hier ist noch ein Fehler drinne,der asuro dreht sich beim 2. anecken immer 180 grad :(
EXT_INT1:
push r16 // alles auf Stack retten!
push R20
push r21
in r16, SREG
push r16
ldi r20, MOSP // Motorgeschwindigkeit einstellen
ldi r21, MOSP
rcall Motorspeed
cpi r25, 0 // 1. Interrupt Drehen 90 grad
breq Drehen
cpi r25, 1 // 2. Interrupt Drehen 180 grad
breq Drehen180
Drehen:
Motorschnelldrehenrechts
ldi r18, KUZeit
rcall wait
inc r25
rjmp Ende
Drehen180:
Motorschnelldrehenrechts
ldi r18, KUZeit
rcall wait
Motorschnelldrehenrechts
ldi r18, KUZeit
rcall wait
clr r25
rjmp Ende
Ende:
Motorvor
ldi r16, 0x80
out GIFR, R16
pop r16
out SREG, r16
pop r21
pop r20
pop r16
reti
hat jemand einen tipp wie ich das mit nem timer hinbekomme oder von mir aus auch ne andere lösung :)
mfg
ich bin grade dabei für für ein projekt einen asuro zu programmieren...nun wollte ich gerne das er es schafft durch ein unbekanntes labyrinth zu kommen,hab auch schon eine idee wie das klappen sollte nur happert es bei einem punkt der umstezung
erstmal meine idee
Unser labyrinth soll nur einen weg haben,also keine sackgassen usw...meine idee war deshalb wenn er einmal aneckt dreht er sich nach rechts und versucht weiter zu fahren,wenn er hier gleich wieder aneckt dreht er sich um 180 grad,da das ja nun nurnoch der einzigste weg ist bei dem es weiter gehen kann
Nun happert es bei der umsetzung an folgendem:
Ich weiß nicht genau wie ich es anstelle das der kleine kerl erkennt das er 2mal ganz kurz hintereinander angeeckt ist und sich dann um 180 grad drehen muss.Ich würde das jetzt irgendwie über timer lösen weiß aber noch nicht so richtig wie :(
Hier ist mal mein code bis jetzt
Hier ist noch ein Fehler drinne,der asuro dreht sich beim 2. anecken immer 180 grad :(
EXT_INT1:
push r16 // alles auf Stack retten!
push R20
push r21
in r16, SREG
push r16
ldi r20, MOSP // Motorgeschwindigkeit einstellen
ldi r21, MOSP
rcall Motorspeed
cpi r25, 0 // 1. Interrupt Drehen 90 grad
breq Drehen
cpi r25, 1 // 2. Interrupt Drehen 180 grad
breq Drehen180
Drehen:
Motorschnelldrehenrechts
ldi r18, KUZeit
rcall wait
inc r25
rjmp Ende
Drehen180:
Motorschnelldrehenrechts
ldi r18, KUZeit
rcall wait
Motorschnelldrehenrechts
ldi r18, KUZeit
rcall wait
clr r25
rjmp Ende
Ende:
Motorvor
ldi r16, 0x80
out GIFR, R16
pop r16
out SREG, r16
pop r21
pop r20
pop r16
reti
hat jemand einen tipp wie ich das mit nem timer hinbekomme oder von mir aus auch ne andere lösung :)
mfg