Hallo Pinsel
Versuche es mal so:
for(;;) ist eine Endlosschleife. Beim Start sollten beide Sensoren etwa den selben Untergrund sehen (beide hell oder beide dunkel) damit der Offset (Empfindlichkeitsunterschied) halbwegs richtig ermittelt wird.Code:#include "asuro.h" #define SPEED 150 int speedLeft,speedRight; unsigned int lineData[2]; int ADOffset; void LineLeft (void) { if (speedLeft < SPEED) speedLeft += 1; else if (speedRight > 0) speedRight -= 1; } void LineRight (void) { if (speedRight < SPEED) speedRight += 1; else if (speedLeft > 0) speedLeft -= 1; } void LineDemo(void) { int i; unsigned char j; Init(); FrontLED(ON); for (j = 0; j < 255; j++) LineData(lineData); LineData(lineData); ADOffset = lineData[0] - lineData[1]; speedLeft = speedRight = SPEED; for(;;) { LineData(lineData); i = (lineData[0] - lineData[1]) - ADOffset; if ( i > 4) { StatusLED(GREEN); LineLeft(); } else if ( i < -4) { StatusLED(RED); LineRight(); } else { StatusLED(OFF); speedLeft = speedRight = SPEED; } MotorSpeed(speedLeft,speedRight); } } int main(void) { LineDemo(); return 0; }
Gruß
mic






Zitieren

Lesezeichen