r2d2matze
24.10.2005, 16:24
Ich möchte mit Hilfe eines Sensors ein Auto auf Gegenstände reagieren lassen. Es soll, sobald etwas im Weg ist, rückwärts wenden und dann vorwärts weiterfahren..., bis zum nächsten Gegenstand usw...
Hierfür habe ich folgende Schleife mit C programmiert:
while (1)
{
i=0;
while (PIND.6==0) { //PIND.6 ist Ausgang des Sensors
PORTD.0=1; //vorwärts wenn PORTD.0 und .1 =1
PORTD.1=1;
delay_ms(5);
PORTD.0=0;
PORTD.1=0;
delay_ms(4); }
PORTD.4=1; //Lenkung geht nach rechts
while (i<=200) {
PORTD.2=1; //rückwärts wenn PORTD.2 und .3 =1
PORTD.3=1;
delay_ms(5);
PORTD.2=0;
PORTD.3=0;
delay_ms(4);
i++; }
PORTD=0b000000; //alle Ausgänge des Chips aus
};
}
Dies ist ein einfacher Code, aber ich finde den Fehler nicht. Der Wagen reagiert auf den Gegenstand und fährt rückwärts wie geplant. Dann fährt er vorwärts weiter. Soweit ist alles in Ordnung, bloß danach reagiert er auf keinen weiteren Gegenstand mehr, als ob er aus der "Vorwärts-Schleife" nicht mehr rauskäme und ich weiß nicht warum!
Wenn ich die Lenkung rausnehme und ihn also nur vorwärts oder rückwärts fahren lasse, funktioniert alles und er reagiert auch immer wieder auf einen Gegenstand.
Ich finde den Fehler also nicht, kann mir jemand helfen?
Hierfür habe ich folgende Schleife mit C programmiert:
while (1)
{
i=0;
while (PIND.6==0) { //PIND.6 ist Ausgang des Sensors
PORTD.0=1; //vorwärts wenn PORTD.0 und .1 =1
PORTD.1=1;
delay_ms(5);
PORTD.0=0;
PORTD.1=0;
delay_ms(4); }
PORTD.4=1; //Lenkung geht nach rechts
while (i<=200) {
PORTD.2=1; //rückwärts wenn PORTD.2 und .3 =1
PORTD.3=1;
delay_ms(5);
PORTD.2=0;
PORTD.3=0;
delay_ms(4);
i++; }
PORTD=0b000000; //alle Ausgänge des Chips aus
};
}
Dies ist ein einfacher Code, aber ich finde den Fehler nicht. Der Wagen reagiert auf den Gegenstand und fährt rückwärts wie geplant. Dann fährt er vorwärts weiter. Soweit ist alles in Ordnung, bloß danach reagiert er auf keinen weiteren Gegenstand mehr, als ob er aus der "Vorwärts-Schleife" nicht mehr rauskäme und ich weiß nicht warum!
Wenn ich die Lenkung rausnehme und ihn also nur vorwärts oder rückwärts fahren lasse, funktioniert alles und er reagiert auch immer wieder auf einen Gegenstand.
Ich finde den Fehler also nicht, kann mir jemand helfen?