#include <FastLED.h>
#define NUM_LEDS 8 // Nombre de LEDs dans la bande
#define DATA_PIN 6 // Broche de données pour les LEDs WS2812
#define POT_PIN A0 // Broche du potentiomètre
#define MAX_BRIGHTNESS 200 // Luminosité maximale
#define FADE_RANGE 4 // Nombre de LEDs avec l'effet de fading
CRGB leds[NUM_LEDS];
void setup() {
FastLED.addLeds<WS2812, DATA_PIN, GRB>(leds, NUM_LEDS);
FastLED.setBrightness(MAX_BRIGHTNESS);
}
void loop() {
// Lecture de la valeur du potentiomètre et mapping en position flottante
int potValue = analogRead(POT_PIN);
float position = map(potValue, 0, 1023, 0, NUM_LEDS - 1); // Position flottante pour plus de précision
// Éteint toutes les LEDs
for (int i = 0; i < NUM_LEDS; i++) {
// Calcule la distance flottante entre chaque LED et la position centrale
float distance = abs(i - position);
// Applique l'effet de dégradé aux LEDs proches de la position centrale
if (distance < FADE_RANGE) {
// Calcul de luminosité progressive en fonction de la distance
int brightness = MAX_BRIGHTNESS * (1 - (distance / FADE_RANGE)); // Dégradé en fonction de la distance
brightness = constrain(brightness, 0, MAX_BRIGHTNESS); // Assure que la luminosité est dans les limites
leds[i] = CRGB(brightness, 0, 0); // Applique la couleur rouge avec dégradé de luminosité
} else {
leds[i] = CRGB::Black; // Éteint les LEDs hors de portée
}
}
// Affiche les LEDs avec le dégradé lumineux
FastLED.show();
delay(10); // Délai court pour plus de réactivité
}