bonsoir
avec la librairie accel stepper
http://www.airspayce.com/mikem/arduino/AccelStepper/
Elle marche très bien et facile à mettre en œuvre.
pour le coder la mano j'avais utilisé l’interruption d'un timer.
afin de ne pas utilisé de "delay" dans mon porgramme. Ceci sans phase d’acceleration
////////////////////////////////////////////////////////////////////////////// TIMER 2 /////////////////////////////////////////////////////////////////////////////////////////////////////////
// Initialise le Timer 2 pour déclencher les interruptions à intervalle régulier
TCCR2A = 0; //default
//TCCR2B = 0b00000110; // clk/256 est incrémenté toutes les 16uS WGM22 est le bit 3 du registre TCCR2B Les bits 0 à 2 de ce même registre sont appelés CS20 , CS21 et CS22 et servent à régler le prédiviseur
TCCR2B = 0b00000111; // clk/1024 est incrémenté toutes les 64uS
TIMSK2 = 0b00000001; // TOIE2 Pour autoriser une interruption par le timer, il faut que le flag TOIE2 qui est le bit 0 du registre TIMSK2 soit à 1
sei(); // autorise les interruptions
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (pos_actu != pos_order)
{
TIMSK2 = 0b00000001;
}
else {
TIMSK2 = 0b00000000;
}
////////////////////////////////////////////////////////////////////////////////////// routine d'interruption du timer//////////////////////////////////////////////////////////////////
ISR (TIMER2_OVF_vect)
{
//pour diviseur 1024
// 256-6 --> 250X64uS = 16000uS = 16mS
// Recharge le timer pour que la prochaine interruption se déclenche dans 16mS
TCNT2 = 256 - 6; // Chargement du timer
if ( pos_actu != pos_order) {
if (pos_actu < pos_order)
{
digitalWrite (dir, HIGH);
pos_actu++;
}
if ( pos_actu > pos_order)
{
digitalWrite (dir, LOW);
pos_actu--;
}
pos_aff = pos_actu / 1;
digitalWrite (pulse, !digitalRead(pulse));
}
}