Hallo,
Weiss jemand warum mein Code nicht richtig funktioniert?
Asuro soll einer schwarzen Linie mit Ecken und Gabelungen folgen.
Beide Lichtsensoren sind bestenfalls ausserhalb der Linie.
Der Asuro fährt einfach immer gerade aus. Was ist das Problem?Code:#include <asuro.h>
#include <stdbool.h>
//Prototyp
bool isBlack(int seite);
//Variable für Vergleichswerte der Lichtsensoren
unsigned int black [2];
unsigned int lineData [2];
int main(void) {
Init ();
FrontLED (ON);
MotorDir(FWD,FWD);
unsigned int speed [2];
unsigned int i;
//255 Messungen auf schwarzem Untergrund
for (i = 0; i < 255; i++) {
LineData(black);
}
GoTurn (30, 0, 150); // Zum Start der Linie fahren
while (1) {
speed[0] = 150;
speed[1] = 150;
//Solange nicht beide Sensoren auf der Linie sind, also auf keiner Gabelung...
while (isBlack(0) == false && isBlack(1) == false) {
MotorSpeed(speed[0], speed[1]);
if (isBlack(0)) {
speed[0] = 100;
speed[1] = 200;
} else if (isBlack(1)) {
speed[0] = 200;
speed[1] = 100;
} else {
speed[0] = 150;
speed[1] = 150;
}
}
//Bei einer Gabelung solange nach rechts drehen bis Asuro gerade auf dem rechten "Ast" steht
if (isBlack(0) && isBlack(1)) {
while (isBlack(0)){
MotorSpeed(250, 0);
}
}
}
return 0;
}
//Wenn Messung dunkler als Anfangsmessung + 10 als Toleranz
bool isBlack(int seite) {
LineData(lineData);
if (lineData[seite] < black[seite] + 10) {
return true;
} else {
return false;
}
}
}