Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Servo moteur commandé par HC SR04


Sujet :

Arduino

  1. #1
    Nouveau membre du Club
    Servo moteur commandé par HC SR04
    Bonjour,

    Je viens de faire un montage avec une carte uno et un moteur sg90 commandé par un module ultra sons hc sr04, une idée de passage à niveau, la barrière se baisse reste 5 secondes en bas puis se reléve s'il n'y a pas de détection ( train )

    Mon code est bien compilé mais voila que la barriére se baisse bien mais reste en bas

    Si vous avez une idée
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    #include <Servo.h>
    #include <Ultrasonic.h>
     
    const int Trig = 5; // pin trigger HC-SR04
    const int Echo = 6; // pin echo HC-SR04
    Servo servoBarriere;
     
    long cm; // variable de stockage de distance de l'objet en cm
     
    Ultrasonic HCSR04 (Trig, Echo);
     
     
    void setup() 
    { 
      servoBarriere.attach(3); // servo leve barriere
     
    } 
     
    void loop() 
    { 
     
     
     
       if(cm >0 && cm < 20) // un train passe
       {
         servoBarriere.write (0); // La barrière est baissée (ajustez la valeur en fonction de la calibration de votre servo pour avoir la barrière à l'horizontale)
          delay(5000); // Temps de traitement du baisser de barrière en millisecondes (15000 millisecondes = 15 secondes). Changez cette valeur si vous voulez rallonger ou raccourcir la durée.
       }
       else if(cm >= 20)  // Il n'y a pas de présence du train. Ici la valeur du rayonnement des ultrasons est d'environ 20 cms.
       {
         servoBarriere.write(90); // Lève la barrière à 90² (ajustez la valeur en fonction de la calibration de votre servo pour avoir la barrière à la verticale)
       }  
    }



    Cordialement

    Stéphanie

  2. #2
    Membre éprouvé
    Bonjour Stéphanie
    Citation Envoyé par Stéphanie13000 Voir le message

    Mon code est bien compilé mais voila que la barriére se baisse bien mais reste en bas
    Parce que "un train peut en cacher un autre"

    Tu est toujours en procès avec les balises de code, c'est très facile, tu copies et colles ton sketch dans l'article, tu sélectionnes ton code et clique sur l'icône #

    Tu te lances dans le train électrique?
    Pour ton problème, je n'ai pas vu où tu mesures la distance pour enseigner la variable CM.

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  3. #3
    Nouveau membre du Club
    Bonjour,

    Oui c'est pour un ami qui fabrique un réseau, j'ai récupéré ce code est l'ai modifié, mais il doit y avoir une erreur ou il manque un morceau

    Le train est censé passer à moins de 20 cms, le détecteur active le servo moteur rests 15 secondes et devrait se relevé en position 90 °si plus rien dans cette distance


    Cordialement

    Stéphanie

  4. #4
    Membre éprouvé
    Bonjour Stéphanie
    Citation Envoyé par Stéphanie13000 Voir le message

    il manque un morceau
    Oui, tu ne vas jamais mesurer la distance pour mettre à jour ta variable cm.

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  5. #5
    Nouveau membre du Club
    Bonjour,

    tu pourrais m'en dire un peu plus

    Cordialement

    Stéphanie

  6. #6
    Membre éprouvé
    Bonjour Stéphanie
    Citation Envoyé par Stéphanie13000 Voir le message

    tu pourrais m'en dire un peu plus
    Dans tonm programme, tu as:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(cm >0 && cm < 20) // un train passe
    // et
    else if(cm >= 20)  // Il n'y a pas de présence du train. Ici la valeur du rayonnement des ultrasons est d'environ 20 cms.


    Où, dans ton programme, sont mesurés ces cm?

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  7. #7
    Nouveau membre du Club
    Bonjour jpbricole,

    D'accord, j ai trouvé ce code sur un tuto sur you tube il semblait fonctionner, je vais revoir ça, c est pas gagné

    En te remerciant

    Stéphanie

  8. #8
    Membre éprouvé
    Tu peux me donner le lien?

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  9. #9
    Nouveau membre du Club
    Bonjour jpbricole

    Avec plaisir


    Cordialement

    Stéphanie

  10. #10
    Membre éprouvé
    Salut Stéphanie

    Dans loop(), tu as oublié ça!
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void loop()
    {
    
    	cm = HCSR04.convert(HCSR04.timing(), 1);
    
    	if(cm >0 && cm < 20) // un train passe
    	{


    Bon week-end
    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  11. #11
    Nouveau membre du Club
    Bonjour,

    J'ai modifié le code mais j'ai cette erreur

    'class Ultrasonic' has no member named 'convert'
    En te remerciant

    Stéphanie

  12. #12
    Membre éprouvé
    Salut Stéphanie

    Chez moi ça se compile très bien.
    Peut-être un problème de version de bibliothèque.
    Charge celle du tuto ici.

    Bon dimanche
    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  13. #13
    Nouveau membre du Club
    Bonjour jpbricole,

    Je viens de compiler sur mon portable et tout passe bien, par contre sur mon pc bureau en suivant la même procédure pas moyen de compiler , pourtant les 2 IDE sont à jour, il me reste juste à réaliser le montage dés que je reçois les servo

    En te remerciant

    Cordialement

    Stéphanie