-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: pollSwitch

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    07.09.2006
    Ort
    Hameln
    Beiträge
    15

    pollSwitch

    Anzeige

    hab mal ne frage.. und zwar hab ich ein programm wo der asuro rückwärts fährt sobald seine taster gedrückt sind... bei den rechten drei tastern fährt er rückwärts links und bei den linken soll er rückwärts rechts fahren... rechts ist ok aber links gehen nur die äußersten und der rechte taster von der linken seite (manoman^^) macht das, was die rechten taster machen! hier mal der code:
    Code:
     #include "asuro.h"
     
     /* Um eventuelle Unterschiede zwischen linken und rechtem Motor auszugleichen 
      * definieren wir 2 Werte für fullspeed links und rechts
      */
     #define FULL_L 250    /* Fullspeed linker Motor */
     #define FULL_R 250    /* Fullspeed rechter Motor */
     
     /* Motor vorwärts */
     void MotorFwd(void)
     {
       MotorDir(FWD,FWD);
       MotorSpeed(150,150);
     }
     
     /* Motor rückwärts */
     void MotorRwd(void)
     {
       MotorDir(RWD,RWD);
       MotorSpeed(50,50);
     }
     
     /* Motor rückwärts links */
     void MotorRwdL(void)
     {
       MotorDir(RWD,RWD);
       MotorSpeed(175,100);
     }
     
     /* Motor rückwärts rechts */
     void MotorRwdR(void)
     {
       MotorDir(RWD,RWD);
       MotorSpeed(100, 175);
     }
     
     /* Motor stop */
     void MotorStop(void)
     {
       MotorSpeed(0,0);
     }
     
     int main(void)
     {
       unsigned char t1, t2;
     
       Init();
       while(1)
       {
         t1 = PollSwitch();
         t2 = PollSwitch();
         if(t1 == 0 && t2 == 0)         /* keine Taste */
         {
           MotorFwd();          /* vorwärts fahren */
           FrontLED(ON);
           BackLED(OFF,OFF);
         }
         else if (t1 && t2 && t1 == t2)
         {
           MotorStop();
           if(t1 & 0x07) /* Tasten links gedrückt?  <<<HIER LIEGT DAS                                                                          _                                                                      PROBLEM!!!*/
           {
             MotorRwdL();       /* Rückwärtskurve links fahren */
             FrontLED(OFF);
             BackLED(ON,OFF);
           }
           if (t1 & 0x38) /* Tasten rechts gedrückt? */
           {
             MotorRwdR();       /* Rückwärtskurve rechts fahren */
             FrontLED(OFF);
             BackLED(OFF,ON);
           }
           Msleep(750);        /* zeit zum rückwärtsfahren egal ob links oder rechts   Msleep(1000) = 1sekunde*/
         }
       }
       return 0;
     }
    BITTE HELFT MIR! MfG, The-BooN-

  2. #2
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.912
    versuchs mal mit der "normalen" schreibweise und mach dir das leben nicht unnötig schwer mit hex-zahlen... da könnte evtl der fehler schon liegen.
    kleinschreibung ist cool!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    07.09.2006
    Ort
    Hameln
    Beiträge
    15
    was muss ich denn stattdessen eintragen???

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hi,

    Ich würde erst mal nachprüfen, was für Tastenwerte beim Drücken von Tasten erkannt werden.
    Siehe http://www.asurowiki.de/pmwiki/pmwik...astSensorTestC

    Evtl. muß man nämlich die PollSwitch Funktion anpassen.
    Siehe dazu http://www.asurowiki.de/pmwiki/pmwiki.php/Main/Tasten

    Gruß m.a.r.v.i.n

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    24.11.2006
    Beiträge
    25
    Wenn ich mich jetzt mit der bitverknüpferei nicht täusche ist die If-Bedingung nur erfüllt wenn alle drei Taster gedrückt wurden, frag doch einfach alle Schalter seperat ab.

  6. #6
    Erfahrener Benutzer Begeisterter Techniker Avatar von Osser
    Registriert seit
    31.10.2006
    Ort
    Köln
    Alter
    47
    Beiträge
    387
    Der Check stimmt schon. Wenn eines der drei ersten Bits gesetzt ist, ist die Bedingung erfüllt.


    O.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    24.11.2006
    Beiträge
    25
    Hm, ok, dann werd ich jetzt nochmal Bitverknüpfungen nachgucken gehen.

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    21.11.2006
    Ort
    Mainz
    Beiträge
    13

    Ausgabe aller AD Wandler Werte via Hyperterminal

    Hallo,

    zum Testen der Schalter und aller anderen Sensoren, die was einlesen, habe ich ein kleines Programm geschrieben, welches die Werte via Hyperterminal ausgibt. Die erleichtert die Tests erheblich. Bei Interesse kann ich den Code posten.

    Gruß
    Angehängte Dateien Angehängte Dateien

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    21.11.2006
    Ort
    Mainz
    Beiträge
    13
    Hallo,

    aus dem Code oben ist zu erkennen, dass das mit PollSwitch so nicht klappen kann. Man liest mit Pollswitch immer alle Taster gleichzeitig zurück.
    Um zu prüfen, ob ein bestimmter Taster gedrückt wurde muß man das Ergebnis bitweise maskieren.

    z.B. taster = PollSwitch();

    if (taster & 0x01) K1 gedrückt
    if (taster & 0x02) K2 gedrückt und so weiter

    Vielleicht hilft dies.

    Gruß

  10. #10
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.912
    ... genau das wird ja gerade erklärt ...
    kleinschreibung ist cool!

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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