hier noch ein blid zur verdeutlichung
macht er ja ! kannste ja mal ausprobieren !
MFG
hier noch ein blid zur verdeutlichung
Ok langsam habe auch es bergiffen - habe es viel zu kompliziert angestellt -so lernt man
Code:#include "RP6RobotBaseLib.h" #define MOVE_SPEED 110 #define TURN_SPEED 65 int main(void) { initRobotBase(); mSleep(2500); powerON(); uint8_t move_count = 0; uint8_t turn_direction = LEFT; while(true) { move(MOVE_SPEED, FWD, DIST_MM(500), BLOCKING); rotate(TURN_SPEED, turn_direction, 102, BLOCKING); move(MOVE_SPEED, FWD, DIST_MM(100), BLOCKING); rotate(TURN_SPEED, turn_direction, 102, BLOCKING); move(MOVE_SPEED, FWD, DIST_MM(500), BLOCKING); rotate(TURN_SPEED, RIGHT, 102, BLOCKING); move(MOVE_SPEED, FWD, DIST_MM(100), BLOCKING); rotate(TURN_SPEED, RIGHT, 102, BLOCKING); } return 0; }
Hallo carlitoco,
kompliziert ist ja nicht unbedingt schlimm - das trainiert ja auch
Hier mal ein paar allgemeine Fehler in dem alten C Code von oben:
> if(move_count =1 )
In If Bedingungen musst Du immer == verwenden. Sonst wäre es eine normale Zuweisung und kein Vergleich!
Der Compiler meckert hier nicht, da das Ergebnis der kompletten Zuweisung ausgewertet wird (und das ist immer 1, also wahr).
Hier bin ich mir nicht sicher ob die Einrückung so gewollt ist oder ob das Forum das nur anders formatiert hat:
aber mach mal lieber { Klammern } um den Code der bei if und else ausgeführt werden soll....Code:if(turn_direction == LEFT) turn_direction = RIGHT; else // { Soll der Code als ein Block ausgeführt werden?? turn_direction = LEFT; move(MOVE_SPEED, FWD, DIST_MM(100), BLOCKING); rotate(TURN_SPEED, turn_direction, 101, BLOCKING); // }
(Einfach nur einrücken reicht nicht sofern die drei Befehle nach dem else auch nur dann ausgeführt werden sollen wenn die Bedingung nicht erfüllt ist! )
Wenn Du Dir nicht 100%ig sicher bist wo Du Klammern weglassen kannst, mach lieber zwei Klammern zuviel als zuwenig
MfG,
SlyD
da ich meinen rp6 mit Bascom laufen lasse, macht er was ich möchte ohne fehler.
Lesezeichen