IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

Moteur pas à pas et bouton


Sujet :

Arduino

  1. #1
    Candidat au Club
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Février 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Moteur pas à pas et bouton
    Salut tout le monde, je me présente je m'appelle samuel j'ai 16 ans et je suis en première S SI. Je suis passionné de modélisme et encore plus quand il est fonctionnel. C'est pour ça que j'ai commencé l'arduino à Noël et pour l'instant c'est un peu la galère niveau code.
    A ce sujet, j'ai créé avec mon kit arduino de base un montage qui permet de déclencher un cycle de 4 tours d'un moteur pas a pas en appuyant sur un bouton.
    Mais, comme c'est étrange, quand je branche l'arduino le moteur se met à tourner sans s'arrêter. J'ai utilisé un moteur ref STEP MOTOR 28BYJ-48 avec 5 fils de sortie et un contrôleur associé où l'on branche le plug du moteur et après on branche les 4 int du contôleur à l'arduino.Le moteur fonctionne donc il est correctement câblé mais le bouton est inactif. Je l'ai pourtant bien relié du 5V au pin 2 mais ça change en rien les mouvements du moteur.
    J'ai réussi a rassembler de quoi faire un code et c'est celui-ci qui fait tourner mon moteur mais qui se contrefiche du bouton:

    Code c++ : 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     #include <Stepper.h>
         #define STEPS 100
         const int boutonp = 2;
     
          //Le moteur (fils 1 2 3 4) est branché sur les sorties 8 9 10 11 de l'Arduino (et sur GND, +V)
          Stepper small_stepper(STEPS, 8, 10, 9, 11);     // Sens horaire
     
     
          int  Steps2Take = 0;  //Nombre de pas de rotation demandé au moteur
          long temps =4;          //Durée de rotation pour un tour
     
    int buttonState = 0;
        void setup()
         {               
          Serial.begin(9600);     // 9600 bps
          Serial.println("Test de moteur pas a pas"); 
          pinMode(boutonp, INPUT);
     
          }
     
        void loop()
          {
     
         if (buttonState == HIGH)
         {
           small_stepper.setSpeed(350);
             buttonState = digitalRead(boutonp);
     
          Steps2Take  = 2048;  // Une rotation complète avec 2048 pas (1 tour environ 4.5sec)
          temps = millis();
          small_stepper.step(Steps2Take);  //Ca tourne
          delay (1);
            }                                                                                                                                                                                                                             
          else (buttonState == LOW);{
             small_stepper.setSpeed(350); 
             buttonState = digitalRead(boutonp);
     
          Steps2Take  = 0;  
     
          temps = millis();
          small_stepper.step(Steps2Take);  //Ca tourne pas
          }
     
         }
    Voilà j'espère que vous pourrez aider un bidouilleur en détresse!! Merci!

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    bonsoir
    Citation Envoyé par Samfire54 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    else (buttonState == LOW);
    euh
    Tu es sûr que ton programme compile ?
    if...else


    Citation Envoyé par Samfire54 Voir le message
    ]contrôleur associé
    tu peux nous donner la référence du contrôleur ?
    De même, peux-tu nous dire comment tu as branché ton bouton sur l'Arduino ?

  3. #3
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 267
    Points : 4 829
    Points
    4 829
    Par défaut
    Bonsoir à tous

    Je suppose qu'il n'y a pas de pull-down sur l'entrée. Donc l'entrée reste à High que le bouton soit pressé ou pas.
    Le mieux c'est de brancher le bouton sur la masse au lieu de VCC, d'activer la pull-up interne et d'inverser le test.

    Tu commences, tu devrais faire un peu mieux attention à la qualité du code!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    buttonState = digitalRead(boutonp);
    devrait être placé une seul fois juste avant le if.
    Et vu que l'état de l'entrée n'est utilisé que pour le if, les lignes peuvent être combinées:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (digitalRead(boutonp) == LOW)
    le type doit être un boolean ou un int sur 8 bits (char, unsigned char ou byte), histoire de ne pas calculé sur 4 octets. Comme la valeur sera écrite avant la première lecture (en prenant en compte ma précédente remarque) l'affectation n'est pas nécessaire ici.

    En l'état du code ces lignes ne servent à rien puisque temps n'est pas utilisé.
    Dans le cas où on l'utilise, ces lignes devraient être retirée de la structure if et placée une seule fois après la structure if.

    Au sujet de la remarque d'Auteur, parfaitement pertinente, je suppose que le compilo interprète le test comme étant l'instruction à effectuer en cas de else, puis le bloc else est effectué systématiquement. Normalement il devrait y avoir au moins un warning à la compilation.

    Et encore le bloc du else, n'est pas indenté proprement, avec les trois dernières lignes qui sont pas assez décalée.

    Bonne nuit

    Delias

  4. #4
    Candidat au Club
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Février 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Ok, je vais voir ce que je peux changer.
    Merci beaucoup en tout cas!

  5. #5
    Candidat au Club
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Février 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Parfait!
    Génial! C'était le bouton qui posait problème. Maintenant ça marche au poil!!
    Merci beaucoup!!!

Discussions similaires

  1. [FLASH MX] J'arrive pas à activer les boutons
    Par gil51 dans le forum Flash
    Réponses: 20
    Dernier message: 02/08/2006, 08h39
  2. Réponses: 7
    Dernier message: 03/03/2005, 11h36
  3. Pas soumettre un bouton submit quand "enter" press
    Par novastar dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/03/2005, 18h16
  4. Réponses: 27
    Dernier message: 25/08/2004, 22h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo