Hallo Pinsel
Versuche es mal so:
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;
}
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.
Gruß
mic
Lesezeichen