hallo,
das programm soll eigentlich wie im titel beschrieben ablaufen...
funktioniert aber irgendwie nicht...
bitte werft mal´nen kurzen blick drauf, wo grob der fehler stecken könnte.
Danke!
bitte werft mal´nen kurzen blick drauf, wo grob der fehler stecken könnte.Code:#include "asuro.h" #define SPEED 100 int speedLeft,speedRight; unsigned int lineData[2]; int ADOffset; unsigned char t1, t2; void LineLeft (void) { speedLeft += 5; /* links mehr Gas geben */ speedRight -= 5; /* rechts weniger Gas geben */ if (speedLeft > 200) speedLeft = 200; if (speedRight < 60) speedRight = 60; } void LineRight (void) { speedRight += 5; /* rechts mehr Gas geben */ speedLeft -= 5; /* links weniger Gas geben */ if (speedRight > 200) speedRight = 200; if (speedLeft < 60) speedLeft = 60; } void Dreh (void) { EncoderInit (); StatusLED(RED); MotorDir (BREAK,BREAK); GoTurn (-20, 0, 100); GoTurn (0 ,160, 100); MotorDir (FWD,FWD); speedLeft = speedRight = SPEED; } void Kollision (void) { t1 = PollSwitch(); t2 = PollSwitch(); if (t1 == 0 && t2 == 0) /* keine Taste */ { StatusLED(YELLOW); } else { Dreh(); } } int main(void) { int i; Init(); FrontLED(ON); StatusLED(OFF); LineData(lineData); ADOffset = lineData[LEFT] - lineData[RIGHT]; speedLeft = speedRight = SPEED; for (;;) MotorDir (FWD,FWD); { LineData(lineData); i = (lineData[LEFT] - lineData[RIGHT]) - ADOffset; if ( i >= 4) { BackLED(OFF,ON); LineLeft(); } else if ( i <= -4) { BackLED(ON,OFF); LineRight(); } else { BackLED(OFF,OFF); speedLeft = speedRight = SPEED; } MotorSpeed(speedLeft,speedRight); { Kollision(); } } }
Danke!







Zitieren
Lesezeichen