Bonjour les amis ,
je débute avec mon Starter-Kit Arduino , j essaye de commander mon moteur pas a pas via Serial Monitor d Arduino .( CW CCW STOP )
J ai essayer avec ce code la :
//Include the Arduino Stepper Library
#include <Stepper.h>
// Number of steps per internal motor revolution
const float STEPS_PER_REV = 32;
// Amount of Gear Reduction
const float GEAR_RED = 64;
// Number of steps per geared output rotation
const float STEPS_PER_OUT_REV = STEPS_PER_REV * GEAR_RED;
// Number of Steps Required
int StepsRequired;
// Create Instance of Stepper Class
// Specify Pins used for motor coils
// Connected to ULN2003 Motor Driver In1, In2, In3, In4
// Pins entered in sequence 1-3-2-4 for proper step sequencing
Stepper steppermotor(STEPS_PER_REV, 8, 10, 9, 11);
void setup()
{
Serial.begin(9600);
}
void loop()
{
while (Serial.available())
char Direction=Serial.read();
Serial.println(Direction);
if (Direction=='R')
{
Serial.println(" CW");
StepsRequired = STEPS_PER_OUT_REV ;
steppermotor.setSpeed(700);
steppermotor.step(StepsRequired);
}
if (Direction== 'V')
{
Serial.println("CCW");
// Rotate CCW 1/2 turn quickly
StepsRequired = - STEPS_PER_OUT_REV*2;
steppermotor.setSpeed(700);
steppermotor.step(StepsRequired);
}
if (Direction== 'S')
{
Serial.println("Stop");
StepsRequired = 0;
steppermotor.setSpeed(700);
steppermotor.step(StepsRequired);
}
}
}
mais le problem c est que j arrive pas a stopper spontanément le moteur ! En tapant ' S ' ca ne sort pas de la boucle en stoppant le moteur !
Quelqu un aurait des suggestions et j aimerais bien definir la vitesse a chaque fois que je met la direction que je veux !
Editer le titre pour faire référence au sujet sur lequel l'aide est demandée.
Le titre actuel est du genre 'titre à la con' selon les termes du modérateur et pourrait occasionner une mise à la poubelle du message : Prendre connaissance de Règles du Forum, y compris son message #1
éliminer les balises color du code publié, tel quel il est illisible
Salut Kamil ,
j apprécie ton aide !
Mais le moteur ne s arrête toujours pas spontanément .
j aimerai bien controller le moteur comme ci j avais 3 buttons de commande (CW,STOP, CCW)mais dans mon cas via le Serial.Monitor. Le moteur s arrête seulement quand le moteur aurait fait le nombre donner des Steps ( StepsRequired ).
quands vous appelez steppermotor.step(StepsRequired);c'est un appel bloquant. Donc vous n'écoutez pas le port série pendant ce temps là.
==> il faut traiter le déplacement en asynchrone, soit vous écrivez votre petite machine à état et faites des pas de 1 de temps en temps jusqu'à avoir effectué le bon nombre de pas, soit vous prenez une bibliothèque qui sait faire cela -> AccelStepper pourrait vous aider