#5Intermedio

LED in sequenza

4.6(83)
186 completato
LED in sequenza
Progetto che crea un effetto di luci in sequenza accendendo 6 LED in sequenza. Insegna l'uso dell'array e del controllo a più pin con il ciclo for.

Video

Schema circuito

LED in sequenza - Circuit

Codice sorgente

Arduino (C++)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   LED in sequenza
4// ─────────────────────────────────────────
5// I 6 LED si accendono uno dopo l'altro per 150 ms ciascuno, così la luce
6// cammina lungo la fila. Mostra il controllo di più pin con un array e un
7// ciclo for.
8//
9// Pin:
10//   D2, D3, D4, D5, D6, D7 -> 6 LED (in ordine)
11//   Ogni LED con una resistenza da 330 ohm
12
13int ledPins[] = {2, 3, 4, 5, 6, 7};   // Pin dei LED nell'ordine di accensione
14
15void setup() {
16  // Impostare tutti i pin dei LED come uscite
17  for(int i = 0; i < 6; i++) {
18    pinMode(ledPins[i], OUTPUT);
19  }
20}
21
22void loop() {
23  // Accendere ogni LED a turno per 150 ms
24  for(int i = 0; i < 6; i++) {
25    digitalWrite(ledPins[i], HIGH);
26    delay(150);
27    digitalWrite(ledPins[i], LOW);
28  }
29}
30

FAQ

Perché è meglio usare un array?▾

Se conservi i numeri dei pin in un array, puoi scorrere tutti i LED in un'unica riga utilizzando un ciclo for. Per modificare il numero di LED, basta aggiornare l'array; non è necessario scrivere una riga separata per ogni LED.

Se i 6 LED si accendono contemporaneamente, l'Arduino si danneggia?▾

Con una resistenza da 330 Ω, ogni LED assorbe circa 9–10 mA; 6 LED assorbono complessivamente circa 60 mA, valore che rientra nei limiti di sicurezza dell'Uno. Il limite massimo consigliato per un singolo pin è di 20 mA, mentre la corrente I/O totale della scheda è di 200 mA.

Come faccio a invertire la direzione di marcia?▾

Imposta il ciclo "for" in modo inverso: for (int i = 5; i >= 0; i--). In questo modo la luce si muove nella direzione opposta. Se metti i due cicli uno dopo l'altro, otterrai l'effetto "fulmine nero".

Uno dei LED non si accende: quale potrebbe essere il motivo?▾

Quel LED potrebbe essere montato al contrario, il piedino potrebbe non essere inserito correttamente nella breadboard oppure il resistore potrebbe trovarsi su una riga diversa. Puoi capire se il problema è dovuto al LED difettoso o a un collegamento errato sostituendolo con un LED funzionante.

LED in sequenza | BlueGrays