arduino multitâche...souci led

Bonjour à tous,

Je suis novice dans la programmation arduino et j’expérimente des choses en suivant des tutos. J’ai un projet en tête, dans lequel un capteur ultra sonique devra déclencher plusieurs actions en fonction de la distance.
Pour résumer :
Si distance >200 cm tout est éteint.
-si distance < 30 cm, des neopixels scintillent, des leds feront des effets de fondus, et un servo fera une rotation de 0 > 180°
-si distance >30 les neopixels continuent de scintiller, les leds s’éteignent et le moteur revient à la position 0

J’ai donc découvert le multitâche pour arduino et je teste le fading sur une led en fonction de la distance. La led fait bien son boulot, le fading se déclenche dès que la distance <30, par contre, dès que la distance est >30cm, la led reste bloquée sur son dernier état de fading (j’espère que c’est compréhensible;-).

int led1 =12;
class Fade{

 int pinLed;
 int brightness;
 int fadeAmount;
 unsigned long previousMillis;
 long intervalLed;

 public:
 Fade (int led, int interval)
 {
  pinMode(pinLed,OUTPUT);
  pinLed = led;
  brightness = 0;
  fadeAmount = 5;
  intervalLed = interval;
  previousMillis = 0;
  
 }
 void Update(){
  unsigned long currentMillis = millis();
  analogWrite(pinLed, brightness);
  if(currentMillis-previousMillis>=intervalLed){
   
   brightness = brightness + fadeAmount;
   previousMillis=currentMillis;
   Serial.println(intervalLed);
   Serial.print("luminosité = ");
   Serial.println(brightness);
   Serial.println(currentMillis);
   }
  
   if (brightness <= 0 )
 { // reverse the direction of the fading at the ends of the fade:
   brightness = 0;
   fadeAmount = -fadeAmount;
 }
   if (brightness >=100 )
 { // reverse the direction of the fading at the ends of the fade:
   brightness = 100;
   fadeAmount = -fadeAmount;
 }
 }
};
Fade led(11,20);//broche + intervalle

 
// FADING LED CLASS
#include <Adafruit_NeoPixel.h>


#define PIN_TRIG  3
#define PIN_ECHO  2 
long duration_hc, distance_hc;

void setup() {
 Serial.begin (9600);
 pinMode(led1, OUTPUT);
 pinMode(PIN_TRIG, OUTPUT);
 pinMode(PIN_ECHO, INPUT);

}

void loop() {

 mesureDistance();
 Serial.print(" Distance ");
 Serial.print(distance_hc);
 Serial.println(" Cm ");

 if(distance_hc > 200){
 digitalWrite(led1,LOW);
 
 }
else if(distance_hc <30){
 
 
 led.Update();
 }

 else if(distance_hc >30){
 
 digitalWrite(led1,LOW);

 }
}

void mesureDistance(){
 digitalWrite(PIN_TRIG, LOW);
 delayMicroseconds(2);
 digitalWrite(PIN_TRIG, HIGH);
 delayMicroseconds(10);
 digitalWrite(PIN_TRIG, LOW);
 duration_hc= pulseIn(PIN_ECHO, HIGH);
 Serial.print(duration_hc);
 distance_hc = duration_hc / 58;
}

Merci d’avance à ceux qui pourront m’aider

Bonjour

Lis bien les messages épinglés et tête d eforum et vois comment , avec les bonnes balises, publier le code dans le forum. Les réponses seront plus nombreuses si le code est présenté conformément aux règle et usages du Forum !

Merci al1fch pour ton aide, tu m'as appris un truc aujourd'hui;-) post corrigé! En effet, c'est plus propre.