So Leute,
Ich habe heute auch mal etwas probiert, und hier ist meine Linienverfolgung:
Code:
#include "asuro.h"
int main(void) {
#define SPEED 150
Init();
FrontLED(ON);
/*char ergebnis[10];*/
int links ;
int rechts;
int ADCoffset;
unsigned int daten[2];
int a;
MotorDir(FWD,FWD);
for (a = 0; a < 254; a++) {
LineData(daten);
}
LineData(daten);
ADCoffset = daten[0] - daten[1];
links = SPEED;
rechts = SPEED;
while (1) {
int b;
LineData(daten);
b=daten[0] - daten[1] -ADCoffset;
/*itoa(b,ergebnis,10);
SerWrite(ergebnis,strlen(ergebnis));
SerWrite("\n\r",2);*/
if (b > 4) {
StatusLED(RED);
rechts = rechts - 2 ;
if (rechts < 1) rechts = 0;
}
else if (b < -4) {
StatusLED(GREEN);
links = links - 2 ;
if (links < 1) links = 0;
}
else{
StatusLED(OFF);
links = SPEED;
rechts = SPEED;
}
MotorSpeed(links,rechts);
}
return 0;
}
Die Klappt recht gut, der Asuro fährt noch etwas unsicher, aber bleibt auf der Linie.
Man sollte allerdings schonmal drauf achten, daß der beim Kalibrieren ziemlich genau auf dem Klebeband steht.
P.S. Meine Frau hat mich schon für bekloppt erklärt, weil ich die ganze Diele mit Isolierband vollgepappt habe; Brauche mehr Isoband!!
Gruß Sebastian
Lesezeichen