boucle " FOR" commande servos

bonsoir à tous ,

je suis sur le point de finaliser un projet et je ''bute'' sur un petit souci au niveau d'une boucle "For'' :

le projet est de commander 6 servos moteur via 2 potentiométre qui envoie leur valeur par module NRF 24 d'une autre carte arduino .
la liaison en entre modules et l'envoie de données ( 0 à 1023 ) fonctionne parfaitement sur les 2 potentiomètres ( ''valeur ''et'' valeurB'' ) j'ai vérifié avec un serial Print !

le potentiomètre N°1 agit bien sur le controle des servos
Cependant avec le deuxième potentiomètre , je voulais faire un MVT de balayage : un allé / un retour
si la valeur du potentiomètre N°2 dépassait ''800'' à l'aide d'une boucle ''For"

et quand je passe en dessous de cette valeur , la boucle stop ( la condition n'étant plus remplie ) !

et bien justement , quand je passe en dessous de la valeur 800 , le cycle se répète 4 fois ?
avant de stopper .... étrange

je pensais qu' une fois le cycle d'aller / retour était passé , la carte allait de nouveau lire la valeur : _radioData.ValeurB , rentrer dans la boucle ou non

je vous joint le code en PJ

merci d'avance pour votre aide
cordialement

#include<Servo.h>
#include <SPI.h>
#include <NRFLite.h>



Servo myservoA;
Servo myservoB;
Servo myservoC;
Servo myservoD;
Servo myservoE;
Servo myservoF;


const static uint8_t RADIO_ID = 0;      
const static uint8_t PIN_RADIO_CE = 9; 
const static uint8_t PIN_RADIO_CSN = 10;
struct RadioPacket // Packet de données envoyé,


{
    uint32_t Valeur;//variable Valeur codée sur 32 bit
    uint32_t ValeurB;
   
};

NRFLite _radio; //Déclaration du module NRF
RadioPacket _radioData;//Déclaration du packet de données








void setup()
{
    
   Serial.begin(9600);
   
   
  
  myservoA.attach(A0);      
  myservoA.write(10); 
  
  myservoB.attach(A1);
  myservoB.write(10);
  
   myservoC.attach(A2);
  myservoC.write(10);
  
  
   myservoD.attach(A3);
  myservoD.write(10);
  
  
   myservoE.attach(A4);
  myservoE.write(10);
  
  
   myservoF.attach(A5);
  myservoF.write(10);
  
  
    
    
    if (!_radio.init(RADIO_ID, PIN_RADIO_CE, PIN_RADIO_CSN))//si l'initialisation du module n'est pas finie
    {
        Serial.println("L'arduino ne peut pas communiquer avec le module ");
        while (1); // Attend
    }
    Serial.println("Setup fini");
    
    
    
    
    
}

void loop()
{
    while (_radio.hasData())//Tant que le module NRF a des données
    {
        _radio.readData(&_radioData); // lecture des nouvelles données 
        
        _radioData.Valeur = map( _radioData.Valeur, 0, 1023, 5, 110); // lecture du potentiomètre N°1
        
         _radioData.ValeurB =  _radioData.ValeurB ;
         
         
        }  
         
        
          myservoA.write(_radioData.Valeur);
          myservoB.write(_radioData.Valeur);
           myservoC.write(_radioData.Valeur);
          myservoD.write(_radioData.Valeur);
           myservoE.write(_radioData.Valeur);
          myservoF.write(_radioData.Valeur);
          
          
           
          
          
       if (_radioData.ValeurB >=800){   // lecture du potentiomètre N°2
       
          
          int pos = 10;  
          
          for(pos = 5; pos <= 110; pos += 1) 
  {                                 
    myservoA.write(pos);
    myservoB.write(pos);
    myservoC.write(pos);
    myservoD.write(pos);
    myservoE.write(pos);
    myservoF.write(pos);    
    delay(30);                      
  } 
 
       for(pos = 110; pos>=5; pos-=1)     
  {                                
    myservoA.write(pos);
    myservoB.write(pos);
    myservoC.write(pos);
    myservoD.write(pos);
    myservoE.write(pos);
    myservoF.write(pos);              
    delay(15);                       
  } 
    
    
                  
 
  }      
   
      
     
    
}

hello
après avoir fait ton balayage, il faut mettre ta variable à zéro

if (_radioData.ValeurB >= 800)  // lecture du potentiomètre N°2
  {
    int pos = 10;
    for (pos = 5; pos <= 110; pos += 1)
    {
      myservoA.write(pos);
      myservoB.write(pos);
      myservoC.write(pos);
      myservoD.write(pos);
      myservoE.write(pos);
      myservoF.write(pos);
      delay(30);
    }
    for (pos = 110; pos >= 5; pos -= 1)
    {
      myservoA.write(pos);
      myservoB.write(pos);
      myservoC.write(pos);
      myservoD.write(pos);
      myservoE.write(pos);
      myservoF.write(pos);
      delay(15);
    }
 [b]   _radioData.ValeurB = 0;[/b]
  }

un grand merci dfgh , je vais essayer ta solution !

bonne soirée