illuminazione led a ritmo di musica

Salve ragazzi,
mi è venuto in mente di rinnovare un po' la mia stanza e perchè no magari più in la anche l'auto xD.
Arrivo subito al dunque, vorrei usare dei led o delle strisce di led da far andare a tempo di musica.
Ho visto vari progetti sul web, c'è chi usa arduino per analizzare il segnale uscente dal jack e accendere di conseguenza i led, c'è chi invece usa solo i led ed un transistor connessi al jack (ma in questo caso si accende tutta la striscia di led e non vanno diciamo "a crescere" con l'audio) e invece c'è chi ha fatto un programma con processing e arduino che non ho capito neanche cosa fa XD(Qui)
Ora la mia idea era questa:
collegare una serie di led blu-giallo-rosso collegata diciamo alle casse normali e delle strisce di led blu (o altro colore) ai bassi.
In questo modo la serie di led dovrebbe accendersi e andare dal blu al rosso in base agli alti, mentre le strisce di led si accendono ad intermittenza con i bassi.
Per la serie di led potrei utilizzare il metodo dell'analisi del segnale, mentre per i bassi mi basterebbe collegare i led con un transistor e delle resistenze.
Qui nasce il problema, come faccio a separare il segnale degli alti dal segnale dei bassi?, cioè se uso l'uscita di un jack come risolbo questo problema?, non vorrei andare a modificare i collegamenti delle casse per non combinare guai.
Se avete altri cosigli anche su come fare qualcosa di più carino, sono ben accetti.
Grazie, Salvatore.

fare una analisi delle frequenze (FFT) con arduino credo sia cosa ardua per la sua "potenza di calcolo" sempre nel ipotesi che ci siano le fft-arduiniche (magari altri lo sanno meglio di me).
MA temo che ti convenga fare alla "vecchia" con microfonino (o altro) filtri analogici ed amplificatorini finali.

Attendo di essere contraddetto ovviamente :wink:

Ciao,
prova a vedere qui se trovi qualche informazione in più. Nel mio ultimo intervento avevo postato dei link a un chip che fa l' analisi spettrale del segnale che poi può venire gestito facilmente da arduino. Io non ce l' ho ma potrebbe essere una cosa interessante.

http://forum.arduino.cc/index.php?topic=248392.msg1776837#msg1776837http://forum.arduino.cc/index.php?topic=248392.msg1776837%23msg1776837

ok allora per gli alti devo creare un vu meter con arduino, mentre con i bassi mi basta semplicemente accendere i led quando arriva il segnale.
Per la separazione delle frequenze, navigando sul web, mi pare di aver capito che basta costruire un filtro passa alto ed uno passa basso. Sembrano abbastanza semplici, ma vanno bene per dividere i bassi dagli alti?
inoltre avevo altre domande:
1)è possibile accendere i led con varia intensità? cioè i led dei bassi li vorrei meno lucenti con bassi meno potenti e più lucenti con i bassi più potenti (ma è giusto un pensiero, posso anche tralasciarlo)
2)Se alzo il volume delle casse, questo non influisce sul segnale in entrata ad arduino? cioè non aumentano i volt con l'aumentare del volume?
3)Esistono strisce di led che si possono accendere sequenzialmente? cioè uno dopo l'altro, oppure per forza tutta la striscia assieme?

Grazie, Salvatore.

come ti ha suggerito @devonmiles , c'e' questo integrato che fa' da filtro passabanda. Anzi sono 7 filtri.

Per ogni banda ti da' un valore analogico che e' proporzionale al livello, quindi e' molto facile poi gestire un Pwm per poter illuminare la striscia in modo proporzionale

2)Se alzo il volume delle casse, questo non influisce sul segnale in entrata ad arduino? cioè non aumentano i volt con l'aumentare del volume?

Dipende da dove prendi il segnale. Ma non certo dall'uscita delle casse

3)Esistono strisce di led che si possono accendere sequenzialmente? cioè uno dopo l'altro, oppure per forza tutta la striscia assieme?

certamente. Quelle indirizzabili singolarmente, come ad esempio queste

Brunello:
come ti ha suggerito @devonmiles , c'e' questo integrato che fa' da filtro passabanda. Anzi sono 7 filtri.

Per ogni banda ti da' un valore analogico che e' proporzionale al livello, quindi e' molto facile poi gestire un Pwm per poter illuminare la striscia in modo proporzionale

2)Se alzo il volume delle casse, questo non influisce sul segnale in entrata ad arduino? cioè non aumentano i volt con l'aumentare del volume?

Dipende da dove prendi il segnale. Ma non certo dall'uscita delle casse

3)Esistono strisce di led che si possono accendere sequenzialmente? cioè uno dopo l'altro, oppure per forza tutta la striscia assieme?

certamente. Quelle indirizzabili singolarmente, come ad esempio queste

Ok quindi con quel singolo componente posso sia rilevare i bassi, gli alti e magari gli acuti giusto? oppure me ne serve uno per ognuno?
Il problema sarà utilizzarlo xD, mi cercherò un tutorial.
Da dove dovrei prelevare il segnale allora? io pensavo di prenderlo dal filo che entra nel woofer e nelle casse ma quanto pare non va xD.
Infine se ho capito:
prelevo il segnale (capirò da dove) e lo mando in input al MSGEQ7, l'uscita del MSGEQ7 la collego ad arduino sui pin analogici o digitali? (com'è l'uscita di questo integrato?), e alla fine con arduino analizzo il segnale e accendo di conseguenza i led; è esatto?

Grazie, Salvatore.

Ah, mi chiedevo se secondo voi le strisce led dei cinesi vanno bene (dato che costano molto meno), oppure rischio di incendiare qualcosa? xD
Però credo che il calore prodotto da dei led che si accendono ad intermittenza sia minimo, sbaglio?

Help xD

up

l'UP a cosa e' riferito ?

alle strisce led cinesi ?

certo che vanno bene lo stesso

Brunello:
l'UP a cosa e' riferito ?

alle strisce led cinesi ?

certo che vanno bene lo stesso

L'"up" era per riportare su il topic, per non essere dimenticato.
OK ti ringrazio, per quanto riguarda le altre domande, sapresti aiutarmi?

Ok quindi con quel singolo componente posso sia rilevare i bassi, gli alti e magari gli acuti giusto? oppure me ne serve uno per ognuno?
Il problema sarà utilizzarlo xD, mi cercherò un tutorial.
Da dove dovrei prelevare il segnale allora? io pensavo di prenderlo dal filo che entra nel woofer e nelle casse ma quanto pare non va xD.
Infine se ho capito:
prelevo il segnale (capirò da dove) e lo mando in input al MSGEQ7, l'uscita del MSGEQ7 la collego ad arduino sui pin analogici o digitali? (com'è l'uscita di questo integrato?), e alla fine con arduino analizzo il segnale e accendo di conseguenza i led; è esatto?

Ok quindi con quel singolo componente posso sia rilevare i bassi, gli alti e magari gli acuti giusto? oppure me ne serve uno per ognuno?

basi, medi, alti... quell'IC ti rivela 7 bande ( se ti fossi preso la briga di leggere il link )
ed e' il chip con cui hanno fatto la spectrum shield, quella linkata da @devonmiles. in cui c'e' anche un esempio di sketch.

il segnale lo devi prelevare all'ingresso del finale, o in parallelo all'uscita cuffie

usa un solo pin analogico, e devi selezionare volta per volta la banda richiesta

Se non hai fretta, entro l'estate devo sviluppare un progetto ( sara' carino ) con strisce led, quelle normali, modificate.
Devo realizzare un pannello di almeno un metro quadro e da qualche parte poi lo pubblico

intanto, visto i tempi di consegna, puoi prenderlo ad esempio qui
http://www.ebay.it/itm/2PCS-NEW-ORIGINAL-GENUINE-MIXED-HYNIX-MSGEQ7-DIP-8-/170998248513?pt=LH_DefaultDomain_0&hash=item27d04a3441

Brunello:

Ok quindi con quel singolo componente posso sia rilevare i bassi, gli alti e magari gli acuti giusto? oppure me ne serve uno per ognuno?

basi, medi, alti... quell'IC ti rivela 7 bande ( se ti fossi preso la briga di leggere il link )
ed e' il chip con cui hanno fatto la spectrum shield, quella linkata da @devonmiles. in cui c'e' anche un esempio di sketch.

il segnale lo devi prelevare all'ingresso del finale, o in parallelo all'uscita cuffie

usa un solo pin analogico, e devi selezionare volta per volta la banda richiesta

Se non hai fretta, entro l'estate devo sviluppare un progetto ( sara' carino ) con strisce led, quelle normali, modificate.
Devo realizzare un pannello di almeno un metro quadro e da qualche parte poi lo pubblico

intanto, visto i tempi di consegna, puoi prenderlo ad esempio qui
http://www.ebay.it/itm/2PCS-NEW-ORIGINAL-GENUINE-MIXED-HYNIX-MSGEQ7-DIP-8-/170998248513?pt=LH_DefaultDomain_0&hash=item27d04a3441

L'avevo letto il link ma pensavo che su un singolo MSGEQ7 potessi scegliere solo una delle 7 bande.
Comunque grazie mille :slight_smile:

Ho cercato un po' nei negozi in zona e nessuno ha quel IC, inoltre su ebay purtroppo il periodo di consegna è troppo lungo, rischio di andare prima in vacanza.
Girando sul web ho visto che è molto semplice fare dei filtri passa alto e passa basso con semplici cicuiti Cr e RC (ho usato questo sito per il calcolo).
Ora però il problema è 1:
o ho sbagliato qualcosa, o non ho capito una mazza :sweat_smile:
Mi spiego meglio, il circuito che ho fatto è questo, mentre questo è il codice:

int pin=1;
int led=13;
int valore;
void setup()
{
 pinMode(led, OUTPUT);
 digitalWrite(led, LOW);
 Serial.begin(9600);
}
void loop()
{
 valore=analogRead(pin); 
 if(valore>50)
 {
   digitalWrite(led, HIGH);
   Serial.println(valore);
 }
 else
   digitalWrite(led, LOW);
   
   delay(10);
}

Il segnale lo leggo dall'uscita del filtro passa basso (frequenza di taglio =170Hz circa) ma i problemi sono:

  1. Non so se è giusto scrivere if(valore>50), non sarebbe una sorta di filtro passa alto? (prevedo insulti per questa affermazione)
  2. di quanto deve essere il delay? io vorrei che seguisse il ritmo dei bassi, ma se non metto un minimo delay, il led quasi rimane sempre acceso e se metto un delay troppo alto, perdo il ritmo.
    3)ho notato sul monitor seriale che i valori arrivano anche a 230 :cold_sweat: , anche se la frequenza di taglio è 170, com'è possibile?
  3. ho comprato un jack maschio e gli ho saldato due fili (ho messo il canale destro e sinistro in comune), ma vedo che i valori dipendono dal volume (credo sia ovvio), come devo fare affinchè il valore letto non dipenda dal volume?

Aspetto vostre risposte, grazie.
Salvatore

Utilizza l'integrato consigliato che è meglio!
Piuttosto aspetta che ti arrivi. :sleeping:

khriss75:
Utilizza l'integrato consigliato che è meglio!
Piuttosto aspetta che ti arrivi. :sleeping:

Non posso aspettare la consegna, è troppo lunga e potrei essere già in vacanza.
Preferisco farmi i filtri con i circuiti RC

3)ho notato sul monitor seriale che i valori arrivano anche a 230 smiley-roll-sweat , anche se la frequenza di taglio è 170, com'è possibile?

In effetti ragionandoci meglio ora, quello che leggo da arduino non è la frequenza ma il voltaggio giusto?
Ma non è pericoloso per arduino un voltaggio troppo alto?

  1. Non so se è giusto scrivere if(valore>50), non sarebbe una sorta di filtro passa alto? (prevedo insulti per questa affermazione)
  2. di quanto deve essere il delay? io vorrei che seguisse il ritmo dei bassi, ma se non metto un minimo delay, il led quasi rimane sempre acceso e se metto un delay troppo alto, perdo il ritmo.
    3)ho notato sul monitor seriale che i valori arrivano anche a 230 smiley-roll-sweat , anche se la frequenza di taglio è 170, com'è possibile?

Premesso che con un semplice filtro RC non ottieni quello che vuoi fare, perche' l'attenuazione alle frequenza piu' alte e' poca.

il valore che leggi e' relativo all'ampiezza ( volume ) in quella frequenza, ( come giustamente avevi dedotto nell'ultimo Msg.)
230 su 1024 di fondo scala corrispondono a 5/1024*230 = 1,12V. Quindi nella norma

  1. ho comprato un jack maschio e gli ho saldato due fili (ho messo il canale destro e sinistro in comune),

Uhmmm non puoi mettere in corto i due canali, lavora su uno soltanto. Altrimenti metti su ogni canale una resistenza in serie.

ma vedo che i valori dipendono dal volume (credo sia ovvio), come devo fare affinchè il valore letto non dipenda dal volume?

Senza un circuito che faccia da controllo automatico di volume , ( cerca AGC Automatic Gain Control ) e' praticamente impossibile, ma qui si va' sul complicato

Ok grazie mille brunello.
Ma quindi (anche se non è ottimo) posso utilizzare un filtro passa alto ed uno passa basso per fare ciò che mi serve?
Quale dovrebbe essere la frequenza di taglio migliore per entrambi? ho letto che per i bassi è 200Hz mentre per gli alti ?

Inoltre l'unico dubbio maggiore che ho ancora è l'intermittenza, cioè sembra che il led non segua molto il ritmo della musica, devo metterli i delay?
Grazie

up