Aller au contenu


Photo
- - - - -

Probleme code !!!


  • Veuillez vous connecter pour répondre
2 réponses à ce sujet

#1 Mister Uno

Mister Uno

    Membre occasionnel

  • Membres
  • Pip
  • 90 messages

Posté 11 mars 2013 - 04:14

Bonjour

J'ai une nouvelle fois un problème, mon but serai de faire un Roby sans les capteurs de contact mais seulement avec un capteur de distance. Dans Roby c'est un capteur infrarouge, et moi j'ai un capteur US. J'ai donc cherchais à faire le code pour que le robot évite les obstacle moi même mais la je suis bloqué.
Avec ce code les servomoteurs tournent bien et au bout de 8 seconde un des deux fait demi-tour:

     #include <Servo.h>
     
    #define AVANT 1
    #define ARRIERE 0
    #define GAUCHE 2
    #define DROITE 3
     
    #define SERVOG 1
    #define SERVOD 0
     
    #define VMAX 5
     
    Servo servog;
    Servo servod;
     
    int getNeutral(int s)

    {
      if(s == SERVOG)
        return 90;
      else
        return 90;
    }
    
     
    void handleS(int s, int speed)
    {
      //Vitesse :
      // 0 -> 0; 1 -> 1; 2 -> 3; 3 -> 8; 4 -> 10; v => 5 -> 30
      int tab[6] = {0,1,3,8,10,30};
      int pos = getNeutral(s);
     
      int acc;
      if (speed < 0)
        acc = - tab[abs(speed)];
      else
        acc = tab[speed];
       
      if(s == SERVOG)
          servog.write(pos += acc);
      else
          servod.write(pos -= acc);
    }
     
     
    void move(int direction)
    {
      int m1 = 0, m2 = 0;
      switch(direction)
      {
        case DROITE: m1 = 1; m2 = -1; break;
        case GAUCHE: m1 = -1; m2 = 1; break;
        case AVANT: m1 = 1; m2 = 1; break;
        case ARRIERE: m1 = -1; m2 = -1; break;
      }
      handleS(SERVOG, m1*VMAX);
      handleS(SERVOD, m2*VMAX);  
    }  
     
     
     
    void setup()
    {
      servog.attach(9);
      servod.attach(10);
      move(AVANT);
    }
     
    void loop()
    {
      move(AVANT);
      delay(8000);
      move(GAUCHE);
      delay(2000);
    }


J'ai essayer des codes pour que le robot tourne pour évité les obstacles mais je n'y arrive pas mon robot et branché comme ça est-ce bon ?
Voir pièce jointe

Mister Uno

Fichier(s) joint(s)



#2 ChristianR

ChristianR

    Membre passionné

  • Membres
  • PipPipPip
  • 474 messages
  • Gender:Male
  • Location:Isère (38)
  • Interests:Arduino, programmation, électronique...

Posté 11 mars 2013 - 08:56

if(s == SERVOG)
return 90;
else
return 90;


C'est étrange de retourner la même valeur dans les 2 cas??
Christian

#3 Mister Uno

Mister Uno

    Membre occasionnel

  • Membres
  • Pip
  • 90 messages

Posté 12 mars 2013 - 01:29

Se sont les neutres de mes servos. Mais hier j'ai eu un code par un membre et mon robot évite les obstacles.

Mister Uno




0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users