hallo,
@matze: also du hast schon recht, da ha ich was übersehen. allerdings klappt das auch nicht, wenn ic hden code entsprechend ändere:
@pinsel: also mein asuro verfolgt ja so eine linie, allerdings nicht mehr wenn ich vresuche mit der variablen distance die strecke zu definieren zu versuche,Code:/*Geradeaus fahren*/ #include "asuro.h" #define TRIGGERLEVEL 390 #define HYSTERESIS 6 #define LOW 0 #define HIGH 1 int main(void) { unsigned int data[2];//Variable für Odometrie signed int status[2]={0,0};//Variable für Status HIGH or LOW signed int difference=0;//Zählvariable unsigned int distance=0; Init(); MotorDir(FWD,FWD); while(1) { //Heligkeitswerte der Lichtschranken auslesen OdometrieData(data); //Wechsel LINKER Sensor von niedrig auf hoch if ((status[0]==LOW) && (data[0]>TRIGGERLEVEL+HYSTERESIS)) { status[0]==HIGH; difference++; distance++;} //Wechsel LINKER Sensor von hoch auf niedrig if ((status[0]==HIGH) && (data[0]<TRIGGERLEVEL-HYSTERESIS)) { status[0]==LOW; difference++; distance++;} //Wechsel RECHTER Sensor von niedrig auf hoch if ((status[1]==LOW) && (data[1]>TRIGGERLEVEL+HYSTERESIS)) { status[1]==HIGH; difference--;} //Wechsel RECHTER Sensor von hoch auf niedrig if ((status[1]==HIGH) && (data[1]<TRIGGERLEVEL-HYSTERESIS)) { status[1]==LOW; difference--;} //Sicherheitssperre für Zählvariable /**********************************************************/ //Wertebereich größer als 255 if (difference>255) { difference=255;} //Wertebereich kleiner als -255 if (difference<-255) { difference=-255;} //Zähldifferenz auswerten: //Motoren passend betreiben /*********************************************************/ //links schneller Drehen ==> links um difference verlangsamen if (difference>0) { MotorSpeed(150-difference,150);} //sonst rechts um difference beschleunigen else {MotorSpeed(150,150+difference);} if (distance>=335){ MotorDir(BREAK,BREAK); MotorSpeed(0,0);} } return 0; }
läuft denn test.hex auf euren asuros?







Zitieren

Lesezeichen