Zitat von
damaltor
davor.
Ok. :) (Warum? ;P)
Dadurch, das das ned so leer wirken soll. Poste ich mal meinen Code zum Linienverfolgen. :)
Code:
#include "asuro.h"
#define TRUE 1
#define FALSE 0
void pollswitch_richten(unsigned int a)
{int b;
for (b=0;b<=a;b++)
{
PollSwitch();
}
}
int vornefrei(void) //sry fuers abkupfern, is aber ne gute idee so.. habs trotzdem kombiniert
{
char data[3];
data[0]=PollSwitch();
data[1]=PollSwitch();
data[2]=PollSwitch();
if ((data[0] == data[1]) && (data[1] == data[2]))
{return data[0];}
else return 0;
}
void kollision(void)
{unsigned int i;
BackLED(ON,ON);
MotorDir(BREAK,BREAK);
for (i=0;i<=1000;i++) //zu dem zeitpunkt, hatte ich noch ned die neue lib..
{Sleep(72);}
MotorDir (FWD,FWD); //motorkabeln verpolt..
MotorSpeed (120,120);
for (i=0;i<=1000;i++)
{Sleep(72);}
MotorDir(FREE,FREE);
for (i=0;i<=200;i++)
{Sleep(72);}
MotorDir(BREAK,BREAK);
for (i=0;i<=200;i++)
{Sleep(72);}
BackLED(OFF,OFF);
}
int main(void)
{ int linedaten[2],diffR,diffR1,diffR2,diffR3;
char flagL=FALSE;
char flagR=FALSE;
Init();
StatusLED(RED);
Msleep (2000);
pollswitch_richten(20); //zum kondensator entladen
StatusLED (YELLOW);
FrontLED (ON);
while (vornefrei()==0) //hier den asuro auf ein weißes blatt stelln, damit man die liniendingsda kalibriern kann
{
LineData(linedaten); //irgendne taste drücken, wenn er dort war und beginnen kann
diffR1= linedaten[0]-linedaten[1];
diffR2= linedaten[0]-linedaten[1];
diffR3= linedaten[0]-linedaten[1];
diffR=(diffR1+diffR2+diffR3)/3;
PrintInt(diffR);
}
Msleep(1000);
while (1) //jetz auf die linie stellen (asuro muss von linie "wegstarten")
{
StatusLED (GREEN);
MotorDir (RWD,RWD); //motrenkabln sind falschherum angelötet.. ^^
MotorSpeed (150,150);
if ((linedaten[0] < (linedaten[1]+diffR)) && (flagL == FALSE))
{
MotorSpeed (200,150);
flagL = TRUE;
}
if ((linedaten[0] < (linedaten[1]+diffR)) && (flagL == TRUE))
{
MotorSpeed (150,100);
flagL = FALSE;
}
if (((linedaten[1]+diffR) < linedaten[0]) && (flagR == FALSE))
{
MotorSpeed (150,200);
flagR= TRUE;
}
if (((linedaten[1]+diffR) < linedaten[0]) && (flagR == TRUE))
{
MotorSpeed (100,150);
flagR= FALSE;
}
while (vornefrei()!=0)
{
kollision();
}
}
return 0;
}
Verbesserungsvorschläge? :)
Nachtrag:
Das Programm ist Mist. *gg*
Werde mich mal drannsetzen.
Lesezeichen