probleme de code avec la fonction ''delay" sur un pilotage de moteur pas à pas

bonjour à tous ,

je me permet de poster pour avoir des conseils et de l’aide :slight_smile:
car je dois piloter 2 moteurs pas à pas à l’aide de valeur DMX , jusque là tt fonctionne à merveille enfin avec 1 seul moteur !
cependant comme j’utilise des “delayMicroseconds” pour faire varier le PinstepA de high à low et avec 2 moteurs les moteurs ne réagissent pas normalement , je pense avec les fonctions "bloquantes’’ ?
avez vous une idée pour ne pas avoir à utiliser cette fonction bloquantes ( certainement avec le principe " blink without delay " mais là je seiche pour adapter la logique ds mon code )

      TourneA = DMXSerial.read(3);
       VitesseA = DMXSerial.read(4);
  
  
    VitesseA = map(VitesseA, 0, 255, 2000, 150);
      
      if (TourneA>=200){
      
     digitalWrite( pinDirA   , HIGH); // Direction avant  // sens anti horaire   
     
     digitalWrite( pinStepA, HIGH );

     delayMicroseconds (VitesseA ) ;

     digitalWrite( pinStepA, LOW );

     delayMicroseconds ( VitesseA ) ;
   
   
    }
    
       if (TourneA<=200 && TourneA>=100){
       
     digitalWrite( pinDirA   , LOW); //  sens  horaire   
     
     digitalWrite( pinStepA, HIGH );

     delayMicroseconds ( VitesseA ) ;

     digitalWrite( pinStepA, LOW );

     delayMicroseconds ( VitesseA ) ; 
     
      }

Vous avez regardé ceci ou cela ?

merci JML , mais apres avoir regardé tes diff liens je ne pense pas véritablement que cela m’aidera .A moins de ne pas avoir tt compris
la partie DMX réception ( exploitation des valeurs analogique récu ) fonctionne bien
c’est juste une histoire de ‘‘delay’’ sur la commande moteur pas à pas :confused:

j'avais mal lu....

donc vous recevez bien les commandes et ensuite vous voulez vous en servir pour piloter un moteur. si c'est un stepper, prenez la librairie AccelStepper par exemple qui va gérer pour vous le bas niveau - ou il faudrait utiliser des drivers