Egon schrieb:
Hallo Georg
Ich habe bei mir beim Geradeausfahren (vorwärts oder rückwärts) so eine "Gleichlaufregelung" implemetiert, funktioniert sehr gut (mein NIBO fuhr beim Geradeausfahren sonst immer einen "Großkreis") - anbei Codschnipsel, wie ich es gemacht habe:
/* speed[0] = Motor links vorwaerts */
/* speed[1] = Motor rechts vorwaerts */
/* speed[2] = Motor links rueckwaerts */
/* speed[3] = Motor rechts rueckwaerts */
diff_ticks = copro_ticks_l - copro_ticks_r; /* diff_ticks > 0 => links schneller*/
if((diff_ticks >= 1)||(diff_ticks <=-1))copro_setSpeed(speed[0] - diff_ticks,speed[1]); /* wenn NIBO vorwaerts faehrt */
if((diff_ticks >= 1)||(diff_ticks <=-1)) copro_setSpeed(speed[2] - diff_ticks,speed[3]); /* wenn NIBO rueckwaerts faehrt */
im Prinzip ganz simpel, funktionert aber sehr gut!
Egon
Hallo Egon,
deinen Vorschlag werde ich mal ausprobieren. Die beiden if-Anweisungen werde ich um eine grafische Ausgabe (zeichnet Balken bei jeden Regeln) erweitern:
if((diff_ticks >= 1)||(diff_ticks <=-1)) {
copro_setSpeed(speed[2] - diff_ticks,speed[3]);
gfx_move(x1++,y1);
gfx_pixel(1);
}
Lg Georg