Irgendetwas war mal mit dem Stop() nicht so einfach zu lösen:
https://www.roboternetz.de/community...eAtSpee-Befehl
Irgendetwas war mal mit dem Stop() nicht so einfach zu lösen:
https://www.roboternetz.de/community...eAtSpee-Befehl
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Also ich habe es abgeändert. Der Robby erkennt das Hinderniss und rotiert schön, jedoch hört er nicht mehr auf. Dann hat ja radbruch den Link gepostet, mit dem Stop. Ich habe mir den Durchgelesen & nicht alles verstanden aber dann habe ich das mit der move - Funktion versucht.
Der folgende Code beinhaltet die "Stop();" - Funktion:
Und dieser die move(); - Funktion:Code:if(obstacle_left){ //wollen wir rechts drehen stop(); //mal anhalten setMotorDir(FWD,BWD); //Rechtsdrehung einstellen while (obstacle_left){ //solange wir das Hindernis haben moveAtSpeed(80,80); //Geschwindigkeit einstellen task_motionControl(); //Motoren Starten } stop(); //dann wieder anhalten, sonst wird moveAtSpeed(); beibehalten, glaube ich zumindest =) }
Habe ich da ein fehler im Code, oder warum hört er nicht auf zu drehen... der dreht Kreise wie wildCode:if(obstacle_left){ //wollen wir rechts drehen stop(); //mal anhalten setMotorDir(FWD,BWD); //Rechtsdrehung einstellen while (obstacle_left){ //solange wir das Hindernis haben moveAtSpeed(80,80); //Geschwindigkeit einstellen task_motionControl(); //Motoren Starten } move(0,FWD,0,BLOCKING); //Stop mSleep(1500); //dann wieder anhalten, sonst wird moveAtSpeed(); beibehalten, glaube ich zumindest =) }
Beste Grüße
Crystal Eye
Wer braucht Fenster, um an einem Rechner zu arbeiten?
while (obstacle_left){
obstacle_left wird vom task_motionControl() nicht aktuallisiert.
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Ok, aber ich rufe doch immer die task_motionControl() auf (im Hauptprogramm = task_RP6System()auf, oder?
Oder stehe ich gerade auf dem Schlauch?
Wer braucht Fenster, um an einem Rechner zu arbeiten?
Das macht task_RP6System:
Du willst drehen und gleichzeitig das ACS auswerten. Also musst du auch beide Tasks ausführen:Code:// System control routine /** * Calls all important system tasks. */ void task_RP6System(void) { task_ADC(); task_ACS(); task_Bumpers(); task_motionControl(); }
ungetestetCode:while (obstacle_left){ //solange wir das Hindernis haben moveAtSpeed(80,80); //Geschwindigkeit einstellen task_motionControl(); //Motoren Starten task_ACS(); //ACS auswerten }
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Ach, jetzt verstehe ich was Du mit......meinst. Ist ja i-wie klar jetzt. Ich habe schon überlegt, wie bekomme ich das task_motionControl() dazu die obstacle(s) zu aktuallisieren... OMGwhile (obstacle_left){
obstacle_left wird vom task_motionControl() nicht aktuallisiert.
*Sorry*
Crystal Eye
Nachtrag:
Da ich mit Eurer Hilfe es geschafft habe Hindernissen noch besser auszuweichen, hier das "Beweisvideo" in meinem Youtube Kanal
http://www.youtube.com/user/Robottechnik90
Mal sehen wann ich mich dann an die LED´s mache...
Beste Grüße
Crystal Eye
Geändert von Crystal Eye (10.08.2011 um 15:08 Uhr)
Wer braucht Fenster, um an einem Rechner zu arbeiten?
Klasse Video! BTW: mein zufäliges-Fliehen ist auch fertig. Leider weiß ich (noch) nicht wie ich ein Video herstelle und hier zeigen kann (Smartphone wackelt zu sehr, und zu einem youtube-Account kann mich noch nicht durchringen).
viele Grüße
Andreas
Lesezeichen