Hallo Rabenauge,
ich habe bis jetzt das Linienverfolgungsprogramm so weit modifiziert, aber leider ist fährt die Biene immer weiter, die erkennt die schwarze Linie nicht. Kannst du bitte auf mein Programm einen Bilck werfen, ich erkenne meinen Fehler nicht?
Code:
echo
int main() {
activate_output_group(IO_LEDS); // LED bits als Output
motpwm_init();
motpwm_setLeft(0);
motpwm_setRight(0);
analog_init();
line_readPersistent();
set_output_group(IO_SENS); // Pull-ups aktivieren
activate_output_bit(IO_LINE_EN);
int i;
// Countdown: LEDs blinken lassen
for (i=0; i<10; i++) {
led_set(LED_L_RD, 1);
led_set(LED_R_RD, 1);
_delay_ms(10);
led_set(LED_L_RD, 0);
led_set(LED_R_RD, 0);
_delay_ms(990);
}
led_set(LED_L_YE, 1);
led_set(LED_R_YE, 1);
_delay_ms(1000);
led_set(LED_L_YE, 0);
led_set(LED_R_YE, 0);
// Hauptschleife:
while(1) {
sei();
_delay_ms(1);
int16_t lval = line_get(LINE_L);
int16_t rval = line_get(LINE_R);
if (lval < 30) {
led_set(LED_L_RD, 1);
led_set(LED_R_RD, 0);
fahre(2);
fahre(0);
}
else {
led_set(LED_L_RD, 1);
led_set(LED_R_RD, 1);
fahre(1);
}
if (rval < 30) {
led_set(LED_L_RD, 0);
led_set(LED_R_RD, 1);
fahre(2);
fahre(-1);
}
else {
led_set(LED_L_RD, 1);
led_set(LED_R_RD, 1);
fahre(1);
}
if (rval < 30 && lval < 30) { // soll bedeuten, wenn die biene senkrecht auf die Linie fährt
led_set(LED_L_RD, 1);
led_set(LED_R_RD, 1);
fahre(2);
fahre(-1);
}
}
return 0;
}
int fahre(int8_t richtung) {
switch(richtung) {
case 1: {
motpwm_setLeft(400); /* Kreis im Uhrzeigersinn */
motpwm_setRight(350);
led_set(LED_L_RD, 0);
led_set(LED_R_RD, 1);
break; }
case -1: { /* Kreis gegen die Uhr */
motpwm_setLeft(350);
motpwm_setRight(400);
led_set(LED_L_RD, 1);
led_set(LED_R_RD, 0);
break; }
case 0: { /* volle Kraft zurück */
motpwm_setLeft(-1024);
motpwm_setRight(-1024);
led_set(LED_L_YE, 1);
led_set(LED_R_YE, 1);
delay(800);
motpwm_setLeft(1000); /* Drehen */
motpwm_setRight(-1000);
delay(150);
break; }
case 2: { /* Bremsen */
motpwm_setLeft(0);
motpwm_setRight(0);
led_set(LED_L_RD, 1);
led_set(LED_R_RD, 1);
break; }
}
return 0;
}
Das Linienverfolgungsprog funktioniert einwandfrei, wie auf dem Video zu sehen ist!!! D.h die Kalibrierung der Bodensensoren ist richtig gemacht worden.
http://www.youtube.com/watch?v=vOPQUw7_Bsc
Vielen Dank
Lesezeichen