-
        

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

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    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.913
    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
  •