Bonjour ,j'ai une question sur ce code ci dessous .
Quand j'appuis sur le bouton BP Reset le moteur se met bien en route , mais le fin de course devrait stopper le moteur quand il passe sur LOW et ce n'est pas le cas .
C'est pas faute d'avoir chercher ; je me dit que j'emploie mal la boucle while ?
#include <AccelStepper.h>
int switchStateRESET = 0; // BP reset
int FindecourseRESET = 0; // Fin de course
AccelStepper stepper (1, 8, 4);
void setup()
{
pinMode( 7, INPUT_PULLUP);
pinMode( 9, INPUT_PULLUP);
}
void loop() {
FindecourseRESET = digitalRead(7);
switchStateRESET = digitalRead(9);
while ((switchStateRESET == LOW ) && (FindecourseRESET == HIGH))
{
stepper.setMaxSpeed(4000);
stepper.setSpeed(-3000);
stepper.runSpeed();
}
}
J’essayerai selon le code que je viens de modifier bien que je comprends pas ma modif .
La boucle "void loops " je pensais comprendre quelle tourne plusieurs fois par seconde , donc elle ne peux pas passer dessus l'instruction sans la voir . Toute une journée pour pas dire plus à tout tourner sans y arriver , alors tant pis si je parais bête , mais qu'es ce que je comprends pas ?
#include <AccelStepper.h>
int switchStateRESET = 0; // BP reset
int FindecourseRESET = 0; // Fin de course
AccelStepper stepper (1, 8, 4);
void setup()
{
pinMode( 7, INPUT_PULLUP);
pinMode( 9, INPUT_PULLUP);
}
void loop() {
switchStateRESET = digitalRead(9);
while ((switchStateRESET == LOW ) && (FindecourseRESET == HIGH))
{ FindecourseRESET = digitalRead(7);
stepper.setMaxSpeed(4000);
stepper.setSpeed(-3000);
stepper.runSpeed();
}
}
Ah oui j'ai compris . Meme si je remplace while par if en gardant le code en l'état . C'est pareil ! un cercle vicieux .
Bon , ca fait pas mes affaires , mais j'avance .
Merci
Donc, si je comprend bien, l'utilisation d'une sous-boucle n'est pas vraiment suggéré car le reste du programme arrête ainsi de "rouler" si la condition de la Sous-boucle n'est pas atteinte ?
Dans mon cas oui . L’État de la broche n'est plus lisible de part la boucle . Pour en sortir , il faut trouver autre chose . Ecrire un code qui fait la même chose d'une façon différente . J'ai pas trouvé lol
Pour en sortir, il faut qu'une lecture de pin ou un résultat de calcul soit modifié dans la boucle et modifie la condition de validité du test.
Avant la boucle, on lit l'état du bouton d'arrêt (pour initialiser cette variable),
Pendant la boucle, on relit périodiquement ce même bouton d'arrêt pour détecter un changement d'état.