. . . . .
25.03.2008, 10:51
Ich hab ein Linienfolgeprogramm geschrieben, aber gewisse Probleme damit er merkt zwar, dass er rechts oder links von der Linie abkommt (dass merk ich weil er die LEDs ändert), aber er ändert die Umdrehungen von den Motoren nicht und dann dreht er sich die ganze Zeit im Kreis.
#include "asuro.h"
#include <stdlib.h>
#include <stdio.h>
#define OFF_LEFT -1
#define ON_LINE 0
#define OFF_RIGHT +1
#define VARIA 400
#define SPEED 254
#define SLOWSPEED 220
unsigned int data[2];
int Offset;
int left,right;
void Left (void)
{
left -= 1;
if (left < SLOWSPEED) left = SLOWSPEED;
}
void Right (void)
{
right -= 1;
if (right < SLOWSPEED) right = SLOWSPEED;
}
int main(void)
{
int inlines;
int j=0;
int position;
Init();
FrontLED(ON);
StatusLED(GREEN);
LineData(data);
Offset = data[0] - data[1];
left = right =SPEED;
MotorDir(FWD,FWD);
MotorSpeed(0,0);
while(1){
LineData(data);
inlines = (data[0] - data[1]) - Offset;
if (inlines > 4)
{
StatusLED(GREEN);
Left();
BackLED(OFF,ON);
position=0;
}
else if (inlines < -4)
{
StatusLED(GREEN);
Right();
BackLED(ON,OFF);
position=1;
}
else {
StatusLED(RED);
left = right =SPEED;
BackLED(OFF,OFF);
position=3;
}
if(position=0){MotorSpeed(left,SPEED);}
else if(position=1){MotorSpeed(SPEED,right);}
else{ MotorSpeed(SPEED,SPEED);}
}
return 0;
}
Hoffentlich könnt ihr mir helfen.
[/code]
#include "asuro.h"
#include <stdlib.h>
#include <stdio.h>
#define OFF_LEFT -1
#define ON_LINE 0
#define OFF_RIGHT +1
#define VARIA 400
#define SPEED 254
#define SLOWSPEED 220
unsigned int data[2];
int Offset;
int left,right;
void Left (void)
{
left -= 1;
if (left < SLOWSPEED) left = SLOWSPEED;
}
void Right (void)
{
right -= 1;
if (right < SLOWSPEED) right = SLOWSPEED;
}
int main(void)
{
int inlines;
int j=0;
int position;
Init();
FrontLED(ON);
StatusLED(GREEN);
LineData(data);
Offset = data[0] - data[1];
left = right =SPEED;
MotorDir(FWD,FWD);
MotorSpeed(0,0);
while(1){
LineData(data);
inlines = (data[0] - data[1]) - Offset;
if (inlines > 4)
{
StatusLED(GREEN);
Left();
BackLED(OFF,ON);
position=0;
}
else if (inlines < -4)
{
StatusLED(GREEN);
Right();
BackLED(ON,OFF);
position=1;
}
else {
StatusLED(RED);
left = right =SPEED;
BackLED(OFF,OFF);
position=3;
}
if(position=0){MotorSpeed(left,SPEED);}
else if(position=1){MotorSpeed(SPEED,right);}
else{ MotorSpeed(SPEED,SPEED);}
}
return 0;
}
Hoffentlich könnt ihr mir helfen.
[/code]