Bonjour,
Ma fonction fonctionne bien dans une loop()
Elle allume et éteind progressivement une bande de leds alternativement.
Je tente donc de créer une définition de cette fonction.
ça compile mais ne produit rien et je suis coincé.
Je ne comprends pas pourquoi.
Voici les éléments importants du code :
CRGB leds[NUM_LEDS];
CRGB* leds1 = leds;
// intensité spécifique à une section de LEDs
void applyBrightness(CRGB* ledArray, int numLeds, uint8_t intensity) {
for (int i = 0; i < numLeds; i++) {
ledArray[i].r = (ledArray[i].r * intensity) / 255;
ledArray[i].g = (ledArray[i].g * intensity) / 255;
ledArray[i].b = (ledArray[i].b * intensity) / 255;
}
}
void respire(CRGB* ledArray, int numLeds){
uint8_t BRIGHTNESS = 250; // Luminosité initiale (commence à 0)
int fadeSpeed = 0; // Vitesse de variation (calculée dynamiquement)
unsigned long previousMillis = 0; // Variable pour mesurer le temps écoulé
long cycleDuration = 1500; // Durée pour un cycle complet
//registre possibles des durées
long cycleDurationMin = 800;
long cycleDurationMax = 3000;
bool increasing = true; // Indicateur pour savoir si la luminosité doit augmenter ou diminuer
// Vérifier si le cycle est écoulé en fonction de la nouvelle cycleDuration
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= cycleDuration) {
previousMillis = currentMillis;
// Appliquer une nouvelle durée de cycle aléatoire à chaque nouveau cycle
cycleDuration = random(cycleDurationMin, cycleDurationMax); // Nouvelle durée de cycle entre 800 et 3000 ms
// Inverser la direction de la variation à chaque cycle
increasing = !increasing;
}
// Calculer la vitesse de variation en fonction du temps écoulé
if (increasing) {
// Si l'intensité doit augmenter
fadeSpeed = (128 * (currentMillis - previousMillis)) / cycleDuration; // Valeur entre 0 et 128
BRIGHTNESS = fadeSpeed;
} else {
// Si l'intensité doit diminuer
fadeSpeed = (128 * (currentMillis - previousMillis)) / cycleDuration;
// Valeur entre 0 et 128
BRIGHTNESS = 128 - fadeSpeed;
}
// Remplir les LEDs avec la couleur blanche et appliquer l'intensité calculée
fill_solid(ledArray, numLeds, CRGB::White);
applyBrightness(ledArray, numLeds, BRIGHTNESS);
//autre tentative vaine: Ajuster l'intensité de la LED en modifiant sa luminosité
// for(int i = 0; i = numLeds; i++){
// ledArray[i].nscale8(BRIGHTNESS); // fondu par un N/256ème de l'intensité courante
// }
FastLED.show();
}
void loop() {
respire(leds1, 72);
}