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 :

Toggle switch avec un moteur pas à pas


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 354
    Par défaut Toggle switch avec un moteur pas à pas
    Bonjour à tous,

    Je souhaiterai faire fonctionner un moteur pas à pas à l'aide d'un switch (push button)

    L'amélioration consisterait à appuyer une seule fois pour le démarrer (+X rotations) et vice versa.

    J'ai essayé le script ci dessous sans succès. La Led interne s'allume et reste fixe lorsque j'appuie une seule fois mais le moteur ne tourne pas.

    Savez-vous me dire pourquoi celui-ci ne tourne pas?

    Merci pour l'aide

    Voici le schéma de montage de base.

    et le script sur lequel se base mon essai:
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    /*
     * Created by ArduinoGetStarted.com
     *
     * This example code is in the public domain
     *
     * Tutorial page: https://arduinogetstarted.com/tutorials/arduino-button-toggle-led
     */
     
    // constants won't change
    const int BUTTON_PIN = 12; // Arduino pin connected to button's pin
    const int LED_PIN    = 13;  // Arduino pin connected to LED's pin
    int smDirectionPin = 3;    //Direction pin
    int smStepPin = 2;         //Stepper pin
     
    // variables will change:
    int ledState = LOW;     // the current state of LED
    int lastButtonState;    // the previous state of button
    int currentButtonState; // the current state of button
     
    void setup() {
      Serial.begin(9600);                // initialize serial
      pinMode(smDirectionPin, OUTPUT);   // set arduino pin to output mode
      pinMode(smStepPin, OUTPUT);        // set arduino pin to output mode
      pinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode
      pinMode(LED_PIN, OUTPUT);          // set arduino pin to output mode
     
      currentButtonState = digitalRead(BUTTON_PIN);
    }
     
    //Motor Forward function
    void SlideForward() {
      // turn motor foward:
      digitalWrite(smDirectionPin, HIGH); //Writes the direction to the EasyDriver DIR pin. (HIGH is clockwise).
      /*turns the motor 1 step*/
      for (int i = 0; i < 400; i++){
      digitalWrite(smStepPin, ledState);  
      delayMicroseconds(70);
      digitalWrite(smStepPin, LOW);
      delayMicroseconds(70);
      }
    }
    void loop() {
      lastButtonState    = currentButtonState;      // save the last state
      currentButtonState = digitalRead(BUTTON_PIN); // read new state
     
      if(lastButtonState == HIGH && currentButtonState == LOW) {
        Serial.println("The button is pressed");
     
        // toggle state of LED
        ledState = !ledState;
     
        // control LED arccoding to the toggled state
        digitalWrite(LED_PIN, ledState);
        SlideForward(); 
      }
    }

  2. #2
    Membre Expert
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 017
    Par défaut
    Bonjour legrandse

    Le problème provient du fait que tu appelles ls séquence qui fait tourner ton moteur (void SlideForward()), seulement quand le bouton est détecté pressé.
    Une fois corrigé, ça roule! je te mets la void loop():
    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
    void loop() {
    Serial.println(ledState);
      lastButtonState    = currentButtonState;      // save the last state
      currentButtonState = digitalRead(BUTTON_PIN); // read new state
     
      if(lastButtonState == HIGH && currentButtonState == LOW) {
        Serial.println("The button is pressed");
    	delay(20);
        // toggle state of LED
        ledState = !ledState;
     
        // control LED arccoding to the toggled state
        digitalWrite(LED_PIN, ledState);
      }
      SlideForward();
    }
    J'ai également ajouté un "léger" anti-rebonds (delay(20);) sur le bouton.

    Cordialement
    jpbbricole

  3. #3
    Membre éclairé Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 354
    Par défaut
    Merci JP

    Ca marche enfin

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Switch case et moteur pas a pas
    Par ylfylf dans le forum Arduino
    Réponses: 11
    Dernier message: 22/03/2020, 18h29
  2. "Toggle-switch" avec changement de couleur
    Par SylvainM dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 01/08/2017, 16h27
  3. Réponses: 0
    Dernier message: 28/01/2016, 12h49
  4. commander deux moteurs pas a pas avec labview
    Par abdelouh dans le forum LabVIEW
    Réponses: 1
    Dernier message: 18/09/2014, 14h33
  5. controller un moteur pas a pas avec labview
    Par freeky07 dans le forum LabVIEW
    Réponses: 5
    Dernier message: 24/03/2012, 21h00

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