Effectuer une action qu'une seule fois dans le loop() ?

infobarquee:
bonjour,
tu mets une variable en plus qui prend une valeur style

int valid = 0;

....
....
.....
if (lum1 > 500 && valid == 0)
{
      digitalWrite(monter, HIGH);
      digitalWrite(descendre, LOW);
      MoteurAccelerationPWM();
valid = 1;
    }
 
  if (lum1 < 500 && valid ==1 ) // Si lecture est inférieur a 500 le moteur descend en ralentissant.
    {
    digitalWrite(monter,LOW);
    digitalWrite(descendre, HIGH);
    MoteurDescelerationPWM();
valid = 0;
    }

Merci, ça ne fonctionner pas comme tel, la boucle ce bouclée toujours, j'ai donc modifié mes fonctions pour donner ça :

void MoteurAccelerationPWM()
{
  // Acceleration
  for( int i = 80; i<= 90; i++ )
  {
    analogWrite( onOff, i );
    delay(50); // delay pour avoir un progression
    digitalWrite(onOff, LOW); // arrête le moteur a la fin de l'action
  }

Sans le digitalWrite(onOff, LOW); a la fin, ça tourne en boucle :sweat_smile: