so, jetzt habe ich mir mal etwas genauer das RP6_Move_04_FSM2 beispielprogramm angeschaut.
bei diesem wird die move- funktionen ja in switch cases abgearbeitet. nach diesem vorbild habe ich jetzt auch mein programm abgeändert.
hier der ausschnitt:
obwohl ich meiner meinng nach nach dem gleichem schema wie in diesem beispielprogramm programmiert habe, funktioniert es nicht im beispielprogramm.Code:void RP6_Bewegung(void) {if (ir_hindernis) { if (!(ir_ende)) {stopStopwatch3(); writeString_P("ir ende gleich false\n");} else {startStopwatch3();} if (getStopwatch3() <1000 || getStopwatch3() >6000) {move_state= 0; } if ((getStopwatch3() >1000 && getStopwatch3() <2000)||(getStopwatch3()>5000 && getStopwatch3() <6000)) {move_state=1; } switch(move_state) {case 0: rotate(50,RIGHT,90,NON_BLOCKING); move_state= 2; break; case 1: rotate(50,RIGHT,45,NON_BLOCKING); move_state= 2; break; case 2: if(isMovementComplete()) {ir_ende= true; startStopwatch3(); writeString_P("ir ende gleich true\n"); } break; }}}
ich habe nun das problem, dass der rp6 sich ständigt dreht, d.h. er dreht nicht eine bestimmte gradzahl sondern er dreht sich permanent auf der stelle.
außerdem wird ir_ende= true immer noch nicht gesetzt.
woran liegt das?
mfg







Zitieren
Lesezeichen