#7Intermedio

LED in sequenza a velocità regolabile

4.6(71)
133 completato
LED in sequenza a velocità regolabile
Il progetto consente di regolare in tempo reale la velocità di movimento del LED con il potenziometro e insegna a controllare dinamicamente il tempo di ritardo leggendo il valore del potenziometro con la lettura analogica.

Video

Schema circuito

LED in sequenza a velocità regolabile - Circuit

Codice sorgente

Arduino (C++)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   LED in sequenza a velocità regolabile
4// ─────────────────────────────────────────
5// Un potenziometro imposta la velocità dell'effetto LED a scorrimento. A0
6// viene letto a ogni passo e il suo valore 0-1023 diventa il tempo di
7// ritardo (ms).
8//
9// Pin:
10//   D2, D3, D4, D5, D6, D7 -> 6 LED (in ordine)
11//   Ogni LED con una resistenza da 330 ohm
12//   A0 -> Cursore del potenziometro
13//   (piedini esterni a 5V e GND)
14
15int ledPins[] = {2, 3, 4, 5, 6, 7};   // Pin dei LED nell'ordine di accensione
16int potValue;                         // Valore del potenziometro = ritardo (ms)
17
18void setup() {
19  // Impostare tutti i pin dei LED come uscite
20  for(int i = 0; i < 6; i++) {
21    pinMode(ledPins[i], OUTPUT);
22  }
23}
24
25void loop() {
26  for(int i = 0; i < 6; i++) {
27    potValue = analogRead(A0);        // Leggere la velocità (0-1023)
28    digitalWrite(ledPins[i], HIGH);
29    delay(potValue);                  // Attendere tanti ms quanto il valore del potenziometro
30    digitalWrite(ledPins[i], LOW);
31  }
32}
33

FAQ

Quali valori restituisce la funzione analogRead?▾

Gli ingressi analogici di Uno leggono valori compresi tra 0 e 5 V con una risoluzione di 10 bit e restituiscono un numero compreso tra 0 e 1023. Man mano che il potenziometro viene ruotato da un'estremità all'altra, il valore varia da 0 a 1023.

Come si converte il valore del potenziometro in velocità?▾

Con la funzione map() puoi convertire l'intervallo 0–1023 nell'intervallo di ritardo desiderato (ad es. 20–500 ms): map(valore, 0, 1023, 20, 500). Quando questo valore viene utilizzato all’interno della funzione `delay()`, la velocità cambia immediatamente.

Come si collegano i terminali del potenziometro?▾

I due pin esterni vanno collegati a 5 V e GND, mentre il pin centrale (tergicristallo) va collegato a un ingresso analogico (ad es. A0). Se si collegano i pin esterni al contrario, cambia solo il senso di rotazione, ma il circuito non si danneggia.

Il cambiamento di velocità viene percepito con un certo ritardo: perché?▾

Se il potenziometro viene letto solo all'inizio del ciclo, il nuovo valore non viene applicato finché tutti i LED non si sono accesi. Se si inserisce la lettura all'interno di ogni fase del LED, la velocità cambia immediatamente.

LED in sequenza a velocità regolabile | BlueGrays