-         
Ergebnis 1 bis 3 von 3

Thema: Programmdefinition?!?

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

    Programmdefinition?!?

    Anzeige

    Hey Leute ich hab nen Programm im Internet gefunden, kann mir mal jemand die genaue Definition vom Programm mit jeglichen Funktionen erklären?

    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?   if(t1 0x07)*/
           {
             MotorRwdL();       /* Rückwärtskurve links fahren */
             FrontLED(OFF);
             BackLED(ON,OFF); 
           }
           if (t1 & 0x38) /* Tasten rechts gedrückt?   if (t1 & 0x38) */
           {
             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;
     }
    MfG, The-BooN-[/b]

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.08.2004
    Ort
    Zwolle
    Alter
    61
    Beiträge
    531
    Hallo,

    Code:
    unsigned char t1 = PollSwitch();
    
     In 't1' befindet sich dass resultat vom gedruckten
     (oder nicht gedruckten) Tastern.
    
        +----+----+----+----+----+----+----+----+
     t1 |  7 |  6 |  5 |  4 |  3 |  2 |  1 |  0 | bitnummers
        +----+----+----+----+----+----+----+----+
        |    |    | K1 | K2 | K3 | K4 | K5 | K6 | bit und zugehorende Taster
        +----+----+----+----+----+----+----+----+
        | (0)| (0)|  1 |  1 |  1 |  0 |  0 |  0 | 0x38 = alle drie linker tasten K1/K2/K3 gedruckt
        +----+----+----+----+----+----+----+----+
        | (0)| (0)|  0 |  0 |  0 |  1 |  1 |  1 | 0x07 = alle drie rechter tasten K4/K5/K6 gedruckt
        +----+----+----+----+----+----+----+----+
    
     K1 = Linker Taste beim Infrarot Empfanger

    Gruss

    Henk

  3. #3
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.952
    Code:
     #include "asuro.h" //Die definitionen werden eingebunden
     
     /* 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) //immer wenn diese funktion im programm aufgerufen wird,...
     {
       MotorDir(FWD,FWD); //...werden die motoren auf vorwärts gestellt
       MotorSpeed(150,150); //...und auf 150
     }
     
     /* Motor rückwärts */
     void MotorRwd(void) //bei dieser funktion..
     {
       MotorDir(RWD,RWD);//gehts rückwärts
       MotorSpeed(50,50);//mit 50
     }
     
     /* Motor rückwärts links */
     void MotorRwdL(void) //bei dieser funktion...
     {
       MotorDir(RWD,RWD);//gehts rückwärts
       MotorSpeed(175,100);//und zwar links schneller als rechts (kurve)
     }
     
     /* Motor rückwärts rechts */
     void MotorRwdR(void) //hier nochmal das gleiche nur andersrum
     {
       MotorDir(RWD,RWD);
       MotorSpeed(100, 175);
     }
     
     /* Motor stop */
     void MotorStop(void) //bei dieser funktion...
     {
       MotorSpeed(0,0); //werden die motoren angehalten
     }
     
     int main(void) //DIES HIER IST DAS HAUPTPROGRAMM
     {
       unsigned char t1, t2;
     
       Init(); //"start deas asuro"
       while(1) //endlosschleife
       {
         t1 = PollSwitch(); //in t1 wird der tasterwert gespeichert (siehe einen post höher)
         t2 = PollSwitch(); //in t2 auch, um fehler zu vermeiden
         if(t1 == 0 && t2 == 0)         wenn der wert null ist, also kein taster gedrückt wurde...
         {
           MotorFwd();         //dann vorwärts fahren
           FrontLED(ON); //und licht anmachen
           BackLED(OFF,OFF); //hintan licht ausmachen
         }
         else if (t1 && t2 && t1 == t2) //wenn der wert nicht null ist,...
         {
           MotorStop(); //erstmal anhalten
           if(t1 & 0x07) //  wenns die linken tatsen sind...
           {
             MotorRwdL();       /* Rückwärtskurve links fahren */
             FrontLED(OFF);
             BackLED(ON,OFF);
           }
           if (t1 & 0x38) //wenns die rechten tasten sind...
           {
             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;
     }
    das programm fährt also vorwärts, und wenn der asuro anstößt, wird ein eine bestimmt reichtung ausgewichen.
    kleinschreibung ist cool!

Berechtigungen

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