Aller au contenu


Photo
- - - - -

Probleme de compréhension de ce programme...


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

#1 Stephane Durant

Stephane Durant

    Nouveau membre

  • Membres
  • 4 messages

Posté 15 octobre 2014 - 03:34

  • Bonjour, 

    Je débute sur Arduino avec un châssis roulant de chez EasyRobotics.

    Voici mon premier programme qui fait avancer et reculer sans cesse le robot :

  • int moteurGauche = 3 ; 
    int moteurDroit = 11 ; 
    int dirGauche = 12 ; 
    int dirDroite = 13 ;
    
    void setup()
    {
    pinMode(moteurGauche, OUTPUT) ; 
    pinMode(moteurDroit, OUTPUT) ;
    pinMode(dirGauche, OUTPUT) ;
    pinMode(dirDroite, OUTPUT) ;
    analogWrite(moteurGauche, 175) ;
    analogWrite(moteurDroit, 140) ;
    }
    
    void loop()
    {
    avance() ;
    delay(5000) ;
    recule() ;
    delay(5000) ; 
    }
    
    //fonction pour faire avancer, reculer, etc...
    
    void avance()
    {
    digitalWrite(dirGauche, HIGH) ;
    digitalWrite(dirDroite, HIGH) ;
    }
    
    void recule()
    {
    digitalWrite(dirGauche, LOW) ;
    digitalWrite(dirDroite, LOW) ;
    }

    Après plusieurs essai je me suis aperçu que c'était la fonction delay qui fixer le temps de fonctionnement

  • de chaque moteur donc la distance qu'il allait parcourir.

    Et c'est la que je ne comprend pas pourquoi. La fonction delay est censé arrêter le programme en cours de la valeur entre parenthèse.

  • Donc pourquoi le faite d'arrêté le programme durant 5s fait que ce sont les moteurs qui fonctionne durant 5s.....??????

    Quand j'ai écrit ce programme je me suis dit que sa ne pourrait pas marcher vu que rien n'indiquer au moteur combien de temps devais il tourner et pourtant malgré sa...

    Merci de m'éclairer sourire.png

     


#2 ChristianR

ChristianR

    Membre passionné

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

Posté 15 octobre 2014 - 04:11

Tu allumes les moteurs, donc ils se mettent à tourner, puis le programme ne fait rien pendant 5 sec.

Donc ils continuent de tourner, et le feront tant qu'on ne leur demande pas explicitement de s'arrêter


Christian

#3 Mic*

Mic*

    Habitué

  • Membres
  • PipPip
  • 232 messages
  • Gender:Male
  • Location:Sarthe
  • Interests:électronique, jardin, promenade,bricolage

Posté 22 octobre 2014 - 05:39


Pour arrêter il faut  mettre

digitalWrite(moteurGauche, LOW)  ;

digitalWrite(moteurDroit, LOW)  ;

je pense que tu peux aussi essayer avec  Delay (0) au lieu de 5000 






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

0 members, 0 guests, 0 anonymous users