Hallo
In der while(u==0)-Schleife sollten die Linienwerte neu eingelesen werden:
Besser, weil für den asuro schonender, wäre wohl die Ecke in der Linie zu suchen als immer mit Speed gegen ein Hinderniss zu knallen...Code:#include "asuro.h" #include <stdio.h> int main(void) { Init(); while(1) { FrontLED(1); //LED an int lData[2]; // Speicher für die Messwerte zur Verfügung stellen LineData(lData); // Einlesen der Messwerte if (PollSwitch()==0) // wenn kein taster gedrückt { if (lData[1] > lData[0]) // Linienverfolgung { MotorDir(FWD,FWD); MotorSpeed(150,225); } else if (lData[1] < lData[0]) { MotorDir(FWD,FWD); MotorSpeed(225,150); } } else if(PollSwitch()!=0) //Kollisionsfall { int u=0; while(u==0) { LineData(lData); // erneutes Einlesen der Messwerte !!! if (lData[1] > 100 && lData[0]>100) //Linie gefunden? { MotorDir(FWD,RWD); //drehen MotorSpeed(150,0); u=0; } else { u=1; } } } } return 0; }
Gruß
mic






Zitieren
Lesezeichen