Fin de course Accelstepper "runToNewPosition"

Bonjour

Les commandes AccelStepper "runToNewPosition" tourne jusqu'a ce que le moteur atteigne sa position, mais peut on intégrer une fin de course dedans en cas de décalage ou autre problème

Ci dessous trois exemple de mes commandes moteur.

Merci de votre aide

//Code que j'utilise dans les "runToNewPosition"

StepperX.runToNewPosition(PosXToGo);
PosX=PosXToGo;

//ou celui ci avec MoveTo :

StepperY.moveTo(PosYToGo);
while(StepperY.isRunning()>0)
{ 
StepperY.run();
}


//Code que j'utilise pour utiliser un capteur de Fin de course FcXAR mais c'est pas terrible


while(E != 0)
    {
E = digitalRead(FcXAR);
PosX=PosX-1;
StepperX.moveTo(PosX);StepperX.run();
     }

StepperX.setCurrentPosition(0);

Shodan47:
Merci de votre aide

Y’a une question ?

Bonjour, oui, j'avais oublié le point d'interrogation

Les commandes AccelStepper "runToNewPosition" tourne jusqu'a ce que le moteur atteigne sa position, mais peut on intégrer une fin de course dedans en cas de décalage ou autre problème ?

en fait je ne sais lire les fins de courses qu'a l'initialisation ou pour verifier les positions lorsque les axes sont arretés avec cette boucle :

while(E != 0)
    {
E = digitalRead(FcXAR);
PosX=PosX-1;
StepperX.moveTo(PosX);StepperX.run();
}

Ensuite tous mes mouvements se font avec des runToNewPosition, car j'ai cinq moteurs sur ce robot qui travaille sur la position de chaque moteur.

Lorsqu'un moteur est censé être sur une butée je lui fais lire sa position pour la vérifier, afin de sécuriser les déplacements au maximum, car il travaille dans une cave ou il y a 500 bouteilles et faudrait pas qu'il se déplace avec le translateur décalé. :o , a cet effet au milieu du translateur j'ai un capteur qui ne permet pas les déplacements longitudinaux si le contacteur n'est pas fermé...

Je sécurise au max sinon tout marche bien, mais j'aimerai qu'il puisse stoppé s'il y a une erreur, qu'un moteur a perdu des pas sur un déplacement, et donc interrompre une runToNewPosition s'il arrive sur une fin de course

Cet appel de fonction runToNewPosition() est bloquant donc pas celui qu’il faut utiliser si vous voulez pouvoir faire autre chose.

Il faut utiliser moveTo() et ensuite appeler dans une boucle run() ou runSpeed() en vérifiant entre temps vos détecteurs de fin de course