Interruption

Bonjour,

Disposant d’un moteur 48 pas, d’un microcontroller, et d’une carte arduino Uno j’ai voulu ainsi faire tourné ce moteur pas à pas unipolaire puis le faire accélérer. Je gère tout ça grâce à des interruptions et une bibliothèque nommée TimerOne. Mon programme est le suivant il fonctionne très bien et permet au moteur de faire un pas après l’autre sans accélération ni décélération, j’aimerais maintenant contrôler l’accélération et la décélération avec une grande précision car il s’agit d’un moteur de machine à sous (Bandit Manchot). Le voici :

#include <TimerOne.h>
int thisStep = 0;
int attendre= 0;

void setup() {
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);

Timer1.initialize(100000); // set a timer
Timer1.attachInterrupt( interruption ); // attach the service routine

}

void loop() {

}

void interruption ()
{
attendre++;
if (attendre==10){
attendre = 0;
plusunpas();
}

}

void plusunpas()
{

switch (thisStep) {
case 0: // 1010
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
thisStep++ ;
break;
case 1: // 0110
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
thisStep++ ;
break;
case 2: //0101
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
thisStep++ ;
break;
case 3: //1001
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
thisStep = 0;
break;
}
}

J’ai besoin de votre aide et vous remercie de votre attention. Merci.

ROOTED_SKULL
“Un jour vous deviendrez riche”

Pourquoi doubler le sujet?

Merci de mettre le code entre balise dédié