«

»

Gen 23

Stampa Articolo

Vumeter arduino

Arduino e l’audio è una combinazione molto interessante e ti permette di realizzare progetti come il vumeter arduino di Elia e Davide.

vumeter arduino

Elia e Davide sono studenti dell’ITIS di Vobarno che hanno realizzato e voluto condividere il progetto: vumeter arduino

Presentazione di Elia ( quella di Davide spero arrivi presto )

Classe 1998. Da sempre con la passione per i motori, l’informatica ed i circuiti elettrici.

Studente a tempo pieno, nell’ anno scolastico 2014-2015 mi è stato presentato arduino dal Prof. Fabio Caruccio.

Questo dispositivo mi ha destato fin da subito un certo interesse ed oggi vi presenterò il progetto che segue.

Cos’é un vumeter

Il vu-meter è uno strumento in grado di leggere l’intensità di un segnale audio.

Solitamente vengono montati nei mixer o nei preamplificatori.

Esso può essere digitale: realizzato con diodi led, o analogico: con un indicatore ad ago magnetico.

Il progetto consiste nel riprodurre un vumeter arduino digitale utilizzando il segnale di un dispositivo di riproduzione audio (cellulare,mp3, ecc) che, basandosi sull’intensità del suono emessa, accenderà più led.

Realizzazione del vumeter arduino

Per la realizzazione ti serve:

  • un cavo jack
  • una breadboard
  • 10 led con relative resistenze
  • alcuni cavi per breadboard
  • una “Y” jack da 3,5mm
  • un paio di casse.

Ecco lo schema che Elia ha utilizzato:

vumeter arduino schema

per iniziare collega la massa dei led alla massa o pin Gnd di arduino;

il positivo di ogni led va collegato in serie ad una resistenza di valore 220ohm e tramite un cavetto ad un piedino digitale (da 3 a 12);

collega i segnali audio left e right alle entrate analogiche A0 ed A1;

il segnale sleeve (ground) lo colleghi al GND di arduino.

La “Y” jack, da 1 jack maschio a 2 jack femmina da 3,5mm, serve perché un’uscita la colleghi ad arduino e l’altra la colleghi alle casse od ad un qualsiasi altro dispositivo per la riproduzione.

Lo sketch

Ecco lo sketch preparato e commentato da Elia:

//si definiscono i pin ed i rispettivi led
int led[10] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};

int leftChannel = 0; //impostiamo l’ input dell’ audio
int left, i;

void setup() {
   for (i = 0; i < 10; i++) //impostiamo i pin come uscite digitali
      pinMode(led[i], OUTPUT);
   Serial.begin(9600); //impostazione velocità della porta dati a 9600 b/s
}

void loop() {
   left = analogRead(leftChannel); //Lettura dell’input analogica
   Serial.println(left);

   left = map(left,200,900,0,10);
   if (left == 0) {
      for(i = 0; i < 10; i++) { //lascia spenti i led con volume nullo
         digitalWrite(led[i], LOW);
      }
   } else {
      for (i = 0; i < left; i++) { //accende i led quando si alza il volume
         digitalWrite(led[i], HIGH);
      }
      for(i = i; i < 10; i++) { //spegne i led quando diminuisce il volume
         digitalWrite(led[i], LOW); 
      }
   }
}

inizia dalla linea 02: definisci i pin a cui hai collegato i led;

linea 04: definisci il pin a cui hai collegato il canale LEFT dell’audio; sarebbe corretto scrivere A0 ma anche “0” possiamo accettarlo;

linea 05: definisci due variabili di tipo integer che userai in seguito;

linee 08-10: con un ciclo for sull’array led imposta tutti i pin a cui sono connessi i led in modalità OUTPUT;

linea 14: leggi il valore di input sul pin A0. Elia e Davide mi hanno riferito di leggere valori tra 200 e 600 con un volume normale con picchi di 900 con volumi alti e musica da discoteca;

linea 17: mappa il valore letto su un range da 0 a 10 il numero dei led.

linee 18-22: se il valore letto su left è 0, il vumeter arduino non sta rilevando segnale, poni a LOW tutti i led in modo che si spengano;

linee 23-25: in funzione del valore letto e rimappato da left accendi i led corrispondenti;

linee 26-28: partendo dall’indice “i”, ultimo led acceso, e spegni i led accesi precedentemente. Senza queste linee ottieni un vumeter arduino in grado di mostrarti il picco raggiunto dalla tua musica.

Il video del vumeter arduino di Elia e Davide

Grazie Elia e Davide !!!

Permalink link a questo articolo: http://www.mauroalfieri.it/elettronica/vumeter-arduino.html

4 comments

Vai al modulo dei commenti

  1. Roberto

    Bravissimi! Semplice ed efficace, un “hello world” che deve avervi dato soddisfazioni.

    Curiosamente il corpo del programma può ridursi a una sola linea di codice:
    digitalWrite(3+i%10, (analogRead(0)-200)/90>i++%10);
    …a condizione di dichiarare le variabili byte.

    Arduino non ama molto l’operatore ++ usato così, ma a senso dovrebbe funzionare.

    1. Mauro Alfieri

      Grazie Roberto,
      la tua “compressione del codice” è entusiasmante.
      Tuttavia questo è un blog rivolto anche a chi legge per la prima volta di arduino e vuole capire come realizzare il proprio Vumeter per questo di solito preferisco le formule in più passaggi perché risultano più chiare anche per chi non è esperto come te 🙂

  2. Marco

    Buongiorno mi chiamo Marco, trovo questo progettino molto ma molto interessante tanto da volerlo costruire con un circuito stand alone (senza l’arduino) per un ampli autocostruito e perciò volevo chiedervi gentilmente se l’oscillatore al quarzo va inserito come di solito ai pin “9-10” con relativi condensatori,grazie della vostra risposta,buongiorno Sig. Mauro.

    1. Mauro Alfieri

      Ciao Marco,
      lascio la tua risposta on-line perché gli autori del progetto possano risponderti.
      Se dovessi azzardare io la risposta direi che va esattamente dove lo inseriresti per l’arduino stand-alone, la posizione del quarzo è relativa ad arduino ed è del tutto indipendente dal progetto.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>