ich habe hier schonmal ein Thema gepostet: https://www.roboternetz.de/community...s&goto=newpost
dieses Thema hat sich erledigt, da jetzt alles funktioniert, doch ich würde jetzt gerne was in meinem jetztigen Programm ändern, ich würde gerne die zuerst gemessenen Odometriedaten nochmal verwenden ich müsste also wissen, wie das aussehen muss hier ist dan Programm,
Code-Tags verwenden ! (mod)Code:#include "asuro.h" #include "myasuro.h" int main(void) { unsigned int odata[2]; unsigned int ldata[2]; // Speicherplatz für Odo- und Linedaten int i; Init(); FrontLED(ON); // Linienbeleuchtung einschalten Msleep(200); // warten bis LED volle Helligkeit erreicht hat LineData(ldata); // ADC anwärmen while(1) { MotorDir(FWD,FWD); while(PollSwitch() == 0) // folge der Linie bis zum ersten Hinderniss { LineData(ldata); if (ldata [0] > ldata [1]) { MotorSpeed(200,100); } else { MotorSpeed(100,200); } Sleep(20); // Regelung etwas dämpfen } MotorSpeed(0,0); // anhalten weil Hinderniss erkannt wurde Msleep(500); OdometrieData(odata); // Becherfarbe ermitteln if (odata[0] > 1000) { for (i=0; i<20; i++) // Becher aufnehmen (Servoimpuls 20x senden) { BackLED(OFF,ON); Msleep(1); // Impulslänge 1ms BackLED(OFF,OFF); Msleep(19); // Impulspause 19 } MotorDir(RWD,RWD); MotorSpeed(0,200); // hell bedeutet nach links abbiegen } else { for (i=0; i<20; i++) // Becher aufnehmen (Servoimpuls 20x senden) { BackLED(OFF,ON); Msleep(1); // Impulslänge 1ms BackLED(OFF,OFF); Msleep(19); // Impulspause 19ms } MotorDir(RWD,RWD); MotorSpeed(200,0); // dunkel bedeutet nach rechts abbiegen } Msleep(900); // eine Sekunde drehen MotorSpeed(0,0); MotorDir(FWD,FWD); while(PollSwitch() == 0) // folge der Linie bis zum zweiten Hinderniss { LineData(ldata); if (ldata [0] > ldata [1]) { MotorSpeed(200,100); } else { MotorSpeed(100,200); } Sleep(20); } MotorSpeed(0,0); // nochmals anhalten Msleep(500); for (i=0; i<20; i++) // und Becher wieder ablegen { BackLED(OFF,ON); Msleep(2); // Impulslänge 2ms BackLED(OFF,OFF); Msleep(18); // Prima! } OdometrieData(odata); // HIER MUSS ICH WISSEN, WIE MAN DIE ZUVOR ERMITTELTEN DATEN NOCHMAL ABRUFEN KANN if (odata[0] > 1000) { MotorDir(RWD,RWD); MotorSpeed(200,200); Msleep(500); MotorDir(FWD,RWD); MotorSpeed(200,200); // hell bedeutet nach links abbiegen } else { MotorDir(RWD,RWD); MotorSpeed(200,200); Msleep(500); MotorDir(RWD,FWD); MotorSpeed(200,200); // dunkel bedeutet nach rechts abbiegen } Msleep(400); // eine Sekunde drehen } return(0); }
Sowie ich schon erfahren habe geht dass nur weiß ich eben nicht wie
Vielen Dank







Zitieren


Lesezeichen