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

  1. 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.
  2. 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
    Pin 2
    Pin 3
    Pin 4
    Pin 5
    Pin 6
    Pin 7
    Pin 8
    Pin 9
    Pin 10
  3. 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.
  4. 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?

  1. analogRead(analogPin); → Legge il valore del potenziometro da 0 a 1023.
  2. map(sensorReading, 0, 1023, 0, ledCount); → Converte il valore in un intervallo da 0 a 9 LED accesi.
  3. 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.