Hi,
bin noch nicht lange dabei... aber kann es sein das es an der fehlenden return 0; Anweisung in deiner main-Methode liegt?
mfg
ben
Hey!
Habe ein Programm geschrieben:
leider tut sich GARNICHTS.Code:#include "RP6RobotBaseLib.h" int main(void) { initRobotBase(); powerON(); uint16_t Licht_L = obstacle_left; uint16_t Licht_R = obstacle_right; void setACSPwrMed(void); void task_ACS(); void task_ADC(); while (true); { void setACSPwrMed(void); while (Licht_L < 1 && Licht_R < 1 && bumper_left == 0 && bumper_right == 0) { moveAtSpeed(50,50); } while (Licht_L > 0 && Licht_R == 0) { moveAtSpeed(75,10); } while (Licht_R > 0 && Licht_L == 0) { moveAtSpeed(10,75); } while (Licht_L > 0 && Licht_R > 0) { moveAtSpeed(-70,-70); } } }
Selbst wenn ich einfach ein programm mit
moveAtSpeed(50,50);
schreibe (ohne bedingungen), dann bleibt er einfach stehen.
Woran liegt das?
Was ist Falsch?
Danke für die Hilfe...
beste Grüße
Luca
Hi,
bin noch nicht lange dabei... aber kann es sein das es an der fehlenden return 0; Anweisung in deiner main-Methode liegt?
mfg
ben
Hey!
Hat leider nicht geholfen...
trotzdem danke!
LUca
Kommt schon!!! =)
Da fehlt in die Hauptschleife der "task_Motioncontrol()" !! Das muss cyclisch aufgerufen werden um die Motoren an zu steuern !! Diese Task regelt die Geschwindigkeit nach die Vorgabe von move(...) und andere Bewegungsauftrage.
... und die anderen Tasks müssen auch in die Hauptschleife.Da fehlt in die Hauptschleife der "task_Motioncontrol()" !!
Gruß Dirk
VOID TASK_ADC(); ist kein Funktionsaufruf, sondern hat den look einer Definition.
Im Code lässt man den Rückgabetyp weg, oder schreibt stattdessen eine Variablenzuweisung, also
TASK_ADC();
oder (falls es INT, nicht void wäre)
Var= TASK_ADC();
Lass einfach die Voids weg und probiers nochmal. Void bedeutet etwa Leere, also einfach frei lassen, nichts hinschreiben.
P.S: Oder hat sich Conrad wieder einen eigenen C dialekt für die RPX Roboterreihe überlegt, wie auch bei der CControl2? Ich habe das Ding gehasst.
Hi,
also erstmal, ghost hat vollkommen recht...
ach ja ghost, nur um das klarzustellen, der rp6 ist von AREXX und nicht von conrad, er wird nur von conrad verkauft
ach ja, soweit ich weiss ist das ganz normales C, du kannst natürlich so proggen wie jeden normalen µC auch, allerdings haben sie einige libs mitgeliefert die einiges erleichtern, ansonsten aber wie gesagt normales C
LG Pr0gm4n
Super!
Vielen Dank für die Hilfe - er fährt jetzt. Zwar geht er nicht auf Bumper oder IC ein, dass liegt jedoch an etwas anderem...
Liebe Grüße
Luca
Ok mein code sieht nun so aus:
leider wie gesagt keine reaktion auf veränderte argumente der while-schleifen.Code:#include "RP6RobotBaseLib.h" int main(void) { initRobotBase(); powerON(); setACSPwrMed(); task_ACS(); task_ADC(); while ((obstacle_left) < 1 && (obstacle_right) < 1 && (bumper_left) == 0 && (bumper_right) == 0) { task_motionControl(); moveAtSpeed(50,50); } while ((obstacle_left) > (obstacle_right)) { task_motionControl(); moveAtSpeed(75,10); } while ((obstacle_right) > (obstacle_left)) { task_motionControl(); moveAtSpeed(10,75); } while ((obstacle_left)>0 && (obstacle_right)>0) { task_motionControl(); moveAtSpeed(-70,-70); } }
scheint mit 50,50 zu fahren und frage mich wie das sein kann, wenn ich einen bumper drücke und meine hand vor die Sensoren halte.
Bg
Luca
Lesezeichen