In questo progetto, combinerai quanto appreso nei precedenti progetti con i LED per creare un grafico a barre LED che puoi controllare con un potenziometro.
Componenti necessari
- Scheda Arduino
- Breadboard
- Cavi jumper
- 9 LED
- Potenziometro da 50k ohm
- 9 resistenze da 220 ohm
Come funziona
Un grafico a barre è una serie di LED disposti in linea, simile a quello che potresti vedere in un display audio. È composto da una fila di LED collegati a un ingresso analogico, come un potenziometro o un microfono.
In questo progetto, il segnale analogico proveniente dal potenziometro controlla quali LED si accendono.
- Ruotando il potenziometro in una direzione, i LED si accendono uno alla volta in sequenza fino a quando tutti sono accesi (Figura 3-1a e 3-1b).
- Ruotandolo nell’altra direzione, i LED si spengono uno alla volta in sequenza (Figura 3-1c).
Costruzione del circuito
-
Collegare i LED alla breadboard:
- Inserisci i 9 LED nella breadboard con le gambe più corte (negative) collegate alla rail GND.
- Collega questa rail a GND di Arduino usando un cavo jumper.
-
Aggiungere le resistenze:
- Inserisci una resistenza da 220 ohm per ogni LED nella breadboard.
- Collega una gamba della resistenza alla gamba positiva del LED.
- Collega l’altra gamba delle resistenze ai pin digitali da 2 a 10 di Arduino in sequenza.
LED Pin Arduino 1° Pin 2 2° Pin 3 3° Pin 4 4° Pin 5 5° Pin 6 6° Pin 7 7° Pin 8 8° Pin 9 9° Pin 10 -
Collegare il potenziometro:
- Inserisci il potenziometro nella breadboard.
- Collega il pin centrale del potenziometro al pin A0 di Arduino.
- Collega il pin destro del potenziometro a +5V.
- Collega il pin sinistro del potenziometro a GND.
-
Caricare il codice su Arduino:
- Copia e incolla il codice seguente.
- Caricalo sulla scheda Arduino.
- Ruota il potenziometro per vedere i LED accendersi e spegnersi in sequenza.
Il codice (Sketch)
Il codice legge l’input dal potenziometro e lo mappa alla quantità di LED da accendere. Poi, con un ciclo for, controlla gli output:
- Se il numero del LED è inferiore all’input mappato, il LED si accende.
- Altrimenti, si spegne.
const int analogPin = A0; // Pin collegato al potenziometro
const int ledCount = 9; // Numero di LED
int ledPins[] = {2,3,4,5,6,7,8,9,10}; // Pin digitali collegati ai LED
void setup() {
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
pinMode(ledPins[thisLed], OUTPUT); // Imposta i pin dei LED come output
}
}
void loop() {
int sensorReading = analogRead(analogPin); // Legge il valore analogico da A0
int ledLevel = map(sensorReading, 0, 1023, 0, ledCount); // Mappa l’input tra 0 e 9 LED
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
if (thisLed < ledLevel) { // Accende i LED in sequenza
digitalWrite(ledPins[thisLed], HIGH);
} else { // Spegne i LED in sequenza
digitalWrite(ledPins[thisLed], LOW);
}
}
}
Come funziona il codice?
analogRead(analogPin);
→ Legge il valore del potenziometro da 0 a 1023.map(sensorReading, 0, 1023, 0, ledCount);
→ Converte il valore in un intervallo da 0 a 9 LED accesi.- Ciclo
for
sui LED:- Se il LED ha un numero inferiore al valore mappato → si accende.
- Se il LED ha un numero superiore al valore mappato → si spegne.
Risultati e utilizzi
- Ruotando il potenziometro a destra, i LED si accendono in sequenza.
- Ruotandolo a sinistra, i LED si spengono in sequenza.
- Questo progetto è utile per indicatori visivi, come meter audio, indicatori di livello o progressi di processo.