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; } } }







Zitieren

Lesezeichen