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(); 
  }
}