Faire avancer doucement et arrêter un moteur pas à pas

Bonjour tout le monde, je viens vers vous car je suis en prise de tête avec moi même mdr,
J'ai eu mon arduino il n'y à pas longtemps et j'essaye de comprendre le fonctionnement pour des futures projets. Mais avant de me lancer je veux vraiment comprendre le pourquoi et du comment, mais voilà à force de trop regarder des tutos sur le net, je comprend plus grand chose bref je me mélange les pinceaux.

Je voudrais que mon moteur pas à pas avance et s'arrête à chaque pas, dans le sens contraire d'une aiguille d'une montre,
comme cet exemple trouver sur youtube, ce n'est pas ce projet que je veux faire mais le fonctionnement et le même Super 8 Scan Raspberry Pi - 1 - YouTube
voici mon code

#include <Stepper.h>

const int stepsPerRevolution = 200;  


Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

void setup() {
  // set the speed at 60 rpm:
  myStepper.setSpeed(60);
  // initialize the serial port:
  Serial.begin(9600);

}

void loop() {
  myStepper.step(-4);
  delay(500);

  
}

Le moteur tourne bien dans le sens que je lui demande, il avance doucement pratiquement comme je le souhaite malgré que cela ne sois pas très précis mais impossible de lui dire de s'arrêter de xxx seconde,
on ma parlé de Accelstepper qui est apparemment beaucoup plus précis, mais pour l'instant je comprend pas grande chose, il faut d'abord que je pratique il y a que comme cela que j'apprend.

désolé de demandé cela mais si l'un de vous veux bien m'expliquer le pourquoi cela ne marche pas, parlé moi comme un gosse je m'en fiche je veux comprendre et arrêté d'avoir mal à la tête car je suis partis sur de mauvaise base.

si vous faites

void loop() {
  myStepper.step(-1);
  delay(2000);
}

quel comportement voyez vous ?

et si vous faites

void loop() {
  myStepper.step(-1);
  delay(50);
}

qu'est-ce que ça change?

pour s'arrêter bien sûr il suffit de ne plus lui dire de faire des pas

1 Like

Bonjour en mettant mystepper.step sur -1 j'entend le moteur mais il ne tourne pas, il commence seulement à bouger quand je suis sur -4.
Le moteur s'arrête toutes les secondes mais je voudrais changer pour que le temps sois plus long au moment de l'arrêt.

Pour le delay rien ne change.

Excusé moi mais je me rend compte que je formule mes phrases comme un pied et jai pas parlé du fonctionnement actuel de ma machine.

Avec le code actuel le moteur tourne et s'arrête indéfiniment donc c'est l'effet que je recherche.
Mon souci c'est que justement je ne peut pas mette une valeur en-dessous de -4 à mystepper.step et impossible de rallonger le temps d'arret moteur.

c'est bizarre qu'il ne sache pas faire un seul pas.. vous êtes sûr que c'est un 200 pas par tour?

pour que ce soit plus long, vous mettez un délai plus long... si le redémarrage doit dépendre d'un appui sur un bouton ou un autre événement alors il faut attendre que ça arrive avant de continuer la boucle

si vous voulez aller doucement puis vous arrêtez vous pouvez faire une boucle dans la boucle

void loop()
{
  for (int i = 0; i < 10; i++)   { // on va faire 40 pas
    myStepper.step(-4);
    delay(50); // petit délai entre "chaque" 4 pas
  }
  delay(2000); // long délai ensuite 
}

J-M-L:
c'est bizarre qu'il ne sache pas faire un seul pas.. vous êtes sûr que c'est un 200 pas par tour?

Peut-être une alim un peu limite en courant

Bonjour et bonne Année à vous, surtout merci de votre aide.

Alors je me suis bien renseigné sur le moteur c'est bien à 200 tours, et pour l'alimentation c'est celle d'origine que j'ai récupéré de l'appareil ou il y avait le moteur.

Pour le code donné par J.M.L voici le fonctionnement que fait ma machine.

Le moteur avance puis force pendant 5 seconde (c'est comme si il voulait tournait mais rien ne ce passe) puis il redémarre comme ça en boucle.

Mon moteur est branché sur un module L298n j'ai encore vérifier les branchements qui pour moi son bon.

Ce que j'arrive pas à comprendre c'est cela, jai déjà utiliser plusieurs code et c'est toujours pareil au moment de l'arrêt le moteur essaye quand même de tourné au lieu de rester inactif. Et impossible de faire 1 seul pas.

Un L298n ne tient que 2A et les Shields classiques ont une déperdition de 2V entre l’entrée pour le moteur et la sortie effective qui alimente le moteur.

Quel composant pilotait le moteur dans le produit d’origine ?

Avez vous essayé avec un peu plus de Volts en entrée ? (Les Shields L298n avec radiateurs tiennentgénéralement plus de 30v sous 2A)