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!
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();
}
}
}
bitte werft mal´nen kurzen blick drauf, wo grob der fehler stecken könnte.
Danke!
Lesezeichen