-         

Ergebnis 1 bis 5 von 5

Thema: ACS Code funktioniert nicht

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    10.01.2009
    Alter
    22
    Beiträge
    20

    ACS Code funktioniert nicht

    Anzeige

    Hallo,
    ich habe meinen Robby RP6 am Freitag gekauft und habe jetzt mein 2. Programm geschrieben:
    Code:
    #include "RP6RobotBaseLib.h"
    #define M 60
    #define T 50
    void acsStateChanged(void)
    {
    if(obstacle_left)
    {moveAtSpeed(M,0);}
    if(obstacle_right)
    {moveAtSpeed(0,M);}
    if(obstacle_right && obstacle_left && bumper_left && bumper_right)
    {move(M,BWD,DIST_MM(50),BLOCKING);
    rotate(T,RIGHT,180,BLOCKING);}
    changeDirection(FWD);}
    void bumpersStateChanged(void)
    {if(bumper_left)
    {moveAtSpeed(M,0);}
    if(bumper_right)
    {moveAtSpeed(0,M);}}
    
    int main(void)
    {
      initRobotBase(); 
      setLEDs(0b111111);
      BUMPERS_setStateChangedHandler(bumpersStateChanged);
    ACS_setStateChangedHandler(acsStateChanged);
      powerON();
      setACSPwrMed();
        while(true)
        {
    	moveAtSpeed(M,M);
    	task_RP6System();
    }	
     
    return 0;}
    Der Roboter sollte also eine Geschwindigkeit von (50,50) haben und auf Bumper sowie ACS reagieren.
    Leider fährt er nur gerade aus.
    Kann mir jemand helfen?
    Danke im vorraus
    Grüße honighamster

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    if(obstacle_right && obstacle_left && bumper_left && bumper_right)

    || sollte das wohl sein, oder?

    Ich bin mir nicht sicher ob man in den Eventhandlern blockierende Funktionen aufrufen sollte. Besser wäre hier ein Flag das in Main() geprüft werden kann.

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    10.01.2009
    Alter
    22
    Beiträge
    20
    ja da sollte || hin allerdings hat er das nicht akzeptiert^^
    und meinst du ich soll z.B.

    if(bumper_left || bumper_right)
    BumperAktion();

    ?

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    10.01.2009
    Alter
    22
    Beiträge
    20
    hallo?
    kann mir mal bitte jemand helfen?
    ich wäre sehr dankbar...

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    07.11.2008
    Alter
    22
    Beiträge
    47
    Hi Honighamster

    Wenn man

    if(bumper_left || bumper_right)
    {
    bumperAktion;
    .........
    }

    verwendet dann macht der RP6 was wenn mindestens ein Bumper gedrückt wird(also das "||" bedeutet "oder")

    wenn man aber

    if(bumper_left && bumper_right)
    {
    Bumperaktion;
    ......
    }

    dann macht der RP6 nur was wenn beide Bumper gleichzeitig gedrückt sind(Das "&&" steht also für"und")


    mfg Panzerfan
    Ich war´s nicht!!


Berechtigungen

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