- Labornetzteil AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: ACS Programm - was ist hier falsch?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    04.11.2008
    Beiträge
    14

    ACS Programm - was ist hier falsch?

    Anzeige

    Powerstation Test
    Hey!
    Habe ein Programm geschrieben:
    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);
    				}
    			
    		}
    
    		
    		
    		
    	}
    leider tut sich GARNICHTS.
    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

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    25.12.2008
    Beiträge
    27
    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

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    04.11.2008
    Beiträge
    14
    Hey!
    Hat leider nicht geholfen...
    trotzdem danke!
    LUca

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    04.11.2008
    Beiträge
    14
    Kommt schon!!! =)

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    09.04.2008
    Beiträge
    384
    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.

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Da fehlt in die Hauptschleife der "task_Motioncontrol()" !!
    ... und die anderen Tasks müssen auch in die Hauptschleife.

    Gruß Dirk

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    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.

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.01.2008
    Ort
    Zürich
    Beiträge
    604
    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

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    04.11.2008
    Beiträge
    14
    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

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    04.11.2008
    Beiträge
    14
    Ok mein code sieht nun so aus:
    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);
    				}
    			
    		
        }
    leider wie gesagt keine reaktion auf veränderte argumente der while-schleifen.
    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

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests