Bonjour,
J'ai un petit souci avec les interruptions de la carte Arduino. Je commande un moteur pap, je lui demande de faire 10000 pas (qui déplace un bloc en translation), avant qu'il arrive à faire les 10000 pas, ce bloc entre en buté avec un capteur fin de course, ce qui déclenche l'interruption mais cela n’arrête pas mon moteur. Lorsque que je remplace le code de la fonction arret par setSpeed(0), mon moteur s’arrête mais ne repars pas en sens inverse 5 secondes après. Est-ce que quelqu'un à une idée du pb? Y'a t-il une solution plus simple et plus propre? L'interruption se produit pendant que l'instruction stepper.step(10000) est en exécution, une fois que la fonction arret est exécuté, ou continue l'exécution de mon code?
Merci d'avance
Ben
Voici mon code :
Code:#include <Stepper.h> #define STEPS 100 Stepper stepper(STEPS, 8, 9, 10, 11); void setup() { // set the speed of the motor to 30 RPMs stepper.setSpeed(30); attachInterrupt (0, arret, RISING); } void loop() { stepper.step(10000); digitalWrite(8, LOW); digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); delay(5000); stepper.setSpeed(30); // Uniquement Valable lors du test 2 stepper.step(-10000); digitalWrite(8, LOW); digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); } void arret() { digitalWrite(8, LOW); digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); stepper.setSpeed(0); // Lors du test 2 }
-----