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?
Das Linienverfolgungsprog funktioniert einwandfrei, wie auf dem Video zu sehen ist!!! D.h die Kalibrierung der Bodensensoren ist richtig gemacht worden.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; }
http://www.youtube.com/watch?v=vOPQUw7_Bsc
Vielen Dank







Zitieren

Lesezeichen