Hallo Bernd,
der NIBO2 kann nicht erkennen, dass er z.B. unter einem Schrank mit höheren Füßen nicht durchfahren kann. Wenn er bei einem solchen Hindernis stecken bleibt, steigen die Motorströme an und das Programm stoppt bei der Überschreitung eines von dir festgelegten Werts die Motoren. Durch die Trägheit der Motoren treten aber auch beim Anfahren höhere Werte auf und deshalb fängt er gar nicht erst an loszufahren.
Entweder kommentierst du folgenden Codeabschnitt in evadeObstacles.c aus
if (current_right>MAX_CURRENT||current_left>MAX_CURRENT) { //wenn die Motorströme zu hoch sind
//TCCR0&=~(1<<CS01); //Timer0 ausschalten
copro_stop(); //beide Motoren anhalten
delay(50); //50ms warten
copro_ir_stop(); //Aussenden von IR-Licht stoppen, nur noch Empfang
gfx_draw_headFoot(); //Display leeren und Kopf- und Fußzeile auf dem Display anzeigen
gfx_set_proportional(1); //Schrift proportional setzten
gfx_move(0,0);
gfx_print_text("Warnung"); //Text der Kopfzeile auf dem Display ausgeben
gfx_move(0,11);
gfx_print_text("Zu hohe Motorstroeme."); //Warnung auf dem Display ausgeben
gfx_move(0,56);
gfx_print_text("Reset durchfuehren"); //Text der Fußzeile auf dem Display ausgeben
while (1) { //Endlosschleife: Programm anhalten
delay(250); //250ms warten
sound_tone(255/4,10000); //Warnton ausgeben
//alle LEDs orange einschalten
PORTC=0xFF;
PORTE=0xFF;
delay(250); //250ms warten
//alle orangen LEDs ausschalten
PORTC=0x00;
PORTE=0x00;
}
}
oder - wie du es gemacht hast - erhöst du den Wert bei
#define MAX_CURRENT 0x0010
Mit freundlichen Grüßen
Marcel Claudio Binder