-         

Ergebnis 1 bis 6 von 6

Thema: Erstes Programm, brauche Hilfe

  1. #1

    Erstes Programm, brauche Hilfe

    Anzeige

    hallo alle zusammen,
    hab mir am wochenende nen rp6 zugelegt und jetzt ein erstes programm geschrieben.
    es funktioniert auch wie es soll, zumindest bis sich der rp6 einfach"aufhängt"
    also er bleibt einfach stehen und tut nichts mehr.

    immer bei einem"event" also wenn ein objekt erkannt wird oder die bumper betätigt werden.
    mal nach 2 events, mal nach 20 events.

    kann mir jemand nen vorschlag machen das programm eleganter umzusetzen?
    bitte für mich neuling verständlich
    danke im vorraus

    hier das programm:

    Code:
    #include "RP6RobotBaseLib.h"
    
    char x;
    
    void bumpersStateChanged(void)
    {
    if(bumper_left)
    {
    x = 1;
    }
    
    if(bumper_right)
    {
    x = 2;
    }
    
    }
    
    void escape(void)
    {
    switch(x)
    {
    case 1: moveAtSpeed(0,0);
            move(80, BWD, DIST_MM(100), true);
            rotate(70, RIGHT, 80, true);
            x = 3;
          break;
          
    case 2: moveAtSpeed(0,0);
            move(80, BWD, DIST_MM(100), true);
            rotate(70, LEFT, 80, true);
            x = 3;
            break;
    
    case 3: setLEDs(0b000000);
            updateStatusLEDs();
            changeDirection(FWD);
           moveAtSpeed(120,140);   
            break;   
    
    case 4: moveAtSpeed(0,0);
            setLEDs(0b000100);
            updateStatusLEDs();
            rotate(80, RIGHT, 50, true);
            x = 3;
            break;
    
    case 5: rotate(80, LEFT, 50, true);
            moveAtSpeed(0,0);
            setLEDs(0b001000);
            updateStatusLEDs();
            x = 3;
            break;
    case 6: rotate(70, LEFT, 90, true);
            x = 3;
            break;
    }
    
    }
    
    void acsStateChanged(void)
    {
    if(obstacle_left)
          x = 4;
         
    if(obstacle_right)
          x = 5;
    }     
    
    int main(void)
    {
       initRobotBase();
       mSleep(1500);
       x = 3;
       powerON();
       changeDirection(FWD);
       setACSPwrMed();
    
       ACS_setStateChangedHandler(acsStateChanged);
       BUMPERS_setStateChangedHandler(bumpersStateChanged);
       
       while(true)
       {
        escape();
        task_RP6System();
       }
       return 0;
    }
    hoffe man kann den code lesen

    Leerzeilen gelöscht und aktuellen Code von hier eingefügt:
    http://www.arexx.com/forum/viewtopic.php?p=4954#p4954
    von radbruch 16:10

  2. #2
    warum antwortet niemand?

    ps: habe absolut keine erfahrungen was C-programmieren angeht

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Abwarten... nicht alle, die sich mit dem RP6 auskennen, sind zwischen 12:54 und 14:36 online. Das ist ein Forum, keine 24/7-Hotline. Da kanns schon mal etwas dauern.
    #ifndef MfG
    #define MfG

  4. #4
    ja sry, hab nur gesehen das nen paar den thread gelesen haben.
    bin halt so ungeduldig weil alles neu und spannend

    habe jetzt nach einem hinweis in der anleitung die moveAtSpeed befehle aus dem event handler genommen.

    trotzdem gleiches ergebnis

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    09.04.2008
    Beiträge
    375
    Serial debugging ist das Stichwort. Das bedeutet das du auf bestimmte Stelle in ihre Program Variabele / Texte ueber die Serielle Port nach aussen gibt. so kannst du dan genau ueberwachen welche Inhalt bestimmte Variabele haben. Dafur hat der Bedienoberflache von RP6loader diese schone Function "Terminal"
    Ich schlage for das du in jeden Eventhandler eine print macht von "x" . Auch in der switch function kannst du das machen.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    30.12.2009
    Ort
    Koblenz
    Alter
    38
    Beiträge
    78
    Hat das Debuggig ein bestimmtes Ergebnis gebracht?
    Ich habe bereits bis Unendlich gezählt. Zweimal, und zurück

Berechtigungen

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