Hey damaltor,
Schau dir das doch mal an ob das so ungefähr C entspricht.
Hab das heute nachmittag mal versucht zu schreiben.
Das ist jetzt meiner Meinung nach NUR die Kantenverfolgung, mit 2 Unterscheidungen, je nach dem wo grade schwarz und weiß ist.
Mit den Schleifen bin ich mir nicht ganz sicher...und auch nicht wo ich die while(1) Schleife setzen muss. Wie ist das mit den if-Anweisungen? Die verlangen doch eigentlich eine reine else-Anweisung? Ich hab da jetzt ne if else Anweisung gemacht, da ich das in irgendeinem Programm in der Asuro Lib gesehen habe.
Code:
#include "asuro.h"
#define SPEED 0x9F
int main(void)
{
unsigned int data[2]; //data[0]->rechts, data[1]->links
Init();
FrontLED(On);
MotorDir(FWD,FWD);
MotorSpeed(SPEED,SPEED);
while(1)
{
LineData(data); //Liniensensoren
if ( data[0]>550 && data[1]<450 ) //RECHTS weiß, LINKS schwarz -> gerade weiterfahren
{
MotorDir(FWD,FWD);
MotorSpeed(SPEED,SPEED);
}
else if ( data[0]>600 && data[1]>600) //RECHTS weiß, LINKS weiß -> weiter LINKS fahren
{
MotorDir(FWD,FWD);
SPEED=SPEED+10;
MotorSpeed(150,SPEED);
}
else if ( data[0]<400 && data[1]<400 ) //RECHTS schwarz, LINKS schwarz -> weiter RECHTS fahren
{
MotorDir(FWD,FWD);
SPEED=SPEED-10;
MotorSpeed(150,SPEED);
}
LineData(data);
if ( data[0]<450 && data[1]>550 ) //RECHTS schwarz, LINKS schwarz -> gerade weiterfahren
{
MotorDir(FWD,FWD);
MotorSpeed(Speed,Speed);
}
else if (data[0]>600 && data[1]>600) //RECHTS weiß, LINKS weiß -> weiter RECHTS fahren
{
MotorDir(FWD,FWD);
SPEED=SPEED-10;
MotorSpeed(150,SPEED);
}
else if (data[0]<400 && data[1]<400 ) //RECHTS schwarz, LINKS schwarz -> weiter LINKS fahren
{
MotorDir(FWD,FWD);
SPEED=SPEED+10;
MotorSpeed(150,SPEED);
}
}
while (1);
return 0;
}
Danke fürs durchschauen!!
Schönen Abend noch
Lesezeichen