#include <FastLED.h>
#define NUM_LEDS 12 // Numero di LED nella striscia
#define DATA_PIN 7 // Pin Arduino collegato al data pin della striscia LED
#define POT_PIN A0 // Pin analogico collegato al potenziometro
CRGBArray<NUM_LEDS> leds; // Array per memorizzare lo stato di ogni LED
int currentLed = 0; // Indice del LED attualmente acceso
int previousLed = 0; // Indice del LED precedentemente acceso
void setup() {
FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
// Imposta lo stato iniziale dei LED
leds[0] = CRGB(255, 0, 0); // Primo LED rosso
leds[4] = CRGB(0, 255, 0); // Quinto LED verde
leds[8] = CRGB(0, 0, 255); // Nono LED blu
FastLED.show();
}
void loop() {
// Leggi il valore del potenziometro
int potValue = analogRead(POT_PIN);
// Mappa il valore del potenziometro alla frequenza di modifica
float frequency = map(potValue, 0, 1023, 0, 12);
// Calcola il tempo di attesa tra le modifiche
int waitTime = (int) (1000 / frequency);
// Controlla se il potenziometro è al valore massimo
if (potValue == 1023) {
// Sposta l'indice del LED successivo
currentLed = (currentLed + 1) % NUM_LEDS;
// Spegni il LED precedente
leds[previousLed] = CRGB(0, 0, 0);
// Accendi il LED successivo
leds[currentLed] = leds[previousLed]; // Mantiene lo stesso colore
// Aggiorna l'indice del LED precedente
previousLed = currentLed;
// Aggiorna lo stato dei LED
FastLED.show();
// Aspetta il tempo di attesa
delay(waitTime);
}
}