Led RGB "dianicos" con musica

Hola!
quiro hacer que unos LED RGB cambien de color, segun la musica, tipo discotecas.
que materiales necesito? como podria empezar?
me he encontrado varios ejemplos online en youtube, pero no se si me falta algo
tengo un Arduino PRO micro, y un arduino MEGA 2560. 4 LED RGB y alguna cosilla mas basica.
prefiero hacerlo con el MICRO, por cuestion de tamaño, por que va dentro de un sitio pequeño, y no creo que pueda meter el MEGA.
el audio se lo meteria por un JACK normal y corriente, no lo tendria que poner un sensor de audio ni nada

seria algo asi

Eres el tercero que pregunta por esta aplicación. Mi pregunta es: donde se usa esto? Es para lugares bailables?

Lo que pides no es fácil de hacer. Implica descomponer la música en su espectro de frecuencias. Fijar un nivel de disparo y toda frecuencia que supere ese nivel dispare y encienda los led RGB

yo lo quiero usar para un "Cosplay", que usa musica y me gustaria que los LED "bailasen" al son de la musica. en los videos que he compartido, hay un par de ejemplos, pero no llego a entender como usa la señal de audio para que "baile". tambien saber si mi material sirve o necesito mas

Tu material (MEGA) sirve pero tiene una programación algo compleja. Hay otro forero que quiere hacer algo parecido, hace días posteo.

ALgo de 8x8 no se que.. comenzó pero creo que se asustó cuando le respondí lo mismo que a ti.

Se require un acople de audio, algo como lo que posteó Naruto en ese post que refiero. Un electrolítico y un para de resistencias que fijan la tensión de entrada a 2.5V para que el AD pueda hacer su trabajo en un rango de +-2.5V entorno a esos 2.5. Lo que implica que requieres de un preamplificador con una salida de 2.5V para sacar lo mejor del arduino.

Luego trabajo para el Arduino. Usar una FHT o Fast Hartley Transformation. Es una algorítmo muy rápido que extrae las frecuencias fundamentales. Cada frecuencia tendrá una magnitud y esa magnitud puedes usarla como nivel de la música en esa frecuencia. COn eso tendrás una representación cercana a lo que escuchas con un delay debido al tiempo que le lleva al MEGA resolverlo.

Con esos datos debes luego comandar tus RGB

Podría usar un integrado para analizar la señal de audio MSGEQ7, aunque son 7 bandas, con él se podría seleccionar alguna de ellas, fijar los parámetros de disparo del color RGB y listo.

Sparkfun descontinuó su "spectrum shield", con ella se podrían conseguir buenos proyectos, como por ejemplo un sensor de nivel de ruido con una matriz RGB. Ese shield tenía un par de MSGEQ7 SMD, listos para usar.

También pienso que podría ser de utilidad un integrado mas "normal", el LM3914 o LM3915, y en lugar de que las salidas vayan directo a un led, pasen por el arduino y con el se fijen los parámetros de disparo de cada canal RGB.

PD: no todo son tareas de escuela jejejeje. En el segundo 45 del video del avance de mi actual proyecto, tengo un analizador de espectro de audio en forma de barras, para cada uno de los parlantes de la PC, está basado en un par de spectrum shields.

|500x335

https://www.youtube.com/watch?v=SbhE1lvo_us https://www.youtube.com/watch?v=jfwqHuvIPI0

estos 2 lo meten directamete a la placa, y lo usan para encender y apagar los LED lo tendria que meter en PIN analogico, digital, PWN???

Hola!, (parezco un loro repitiendolo por varios post, pero resulta que el Framework Opensource en el que colaboro integra muchas de las cosas que buscan los usuarios de este foro.... jajajja)

Souliss tiene esto! hace ya mucho que integramos en la App de Android una funcion que controla una Tira Led RGB en funcion de la musica que se esta reproduciendo en el Movil o dispositivo Android, por lo que con un MiniPC Android o un Movil ya se puede hacer, y el resultado es bastante bueno.

Aqui un video bastante representativo: https://youtu.be/bUzybrPyG0Y

Insisto NO ME PAGA NADIE POR DAR PUBLICIDAD! Es un proyecto Open y gratuito en el que colaboro... jejeje

Salu2

//Canales a Leer
#define L 7

//PINS Izquierdos
#define L1 10
#define L2 9
#define L3 6

//Umbrales para cada PIN
#define UMBRAL1 15
#define UMBRAL2 30
#define UMBRAL3 45
#define UMBRAL4 55
#define UMBRAL5 70
#define UMBRAL6 85
#define UMBRAL7 100

//Variables donde guardamos
//El valor de R y L
int l;

void setup() {

//Ponemos todos pins del 0 a 6
//en modo OUTPUT
for (int i = 0; i < 10; i++)
pinMode(i, OUTPUT);

}

void loop() {

//Leemos los canales
l = analogRead(L);

//Encemos los leds que correspondan

if (l > UMBRAL1)
digitalWrite(L2, HIGH);
else
digitalWrite(L2, LOW);

if (l > UMBRAL2)
digitalWrite(L1, HIGH);
else
digitalWrite(L1, LOW);

if (l > UMBRAL3)
digitalWrite(L3, HIGH);
else
digitalWrite(L3, LOW);

if (l > UMBRAL4)
digitalWrite(L1, HIGH);
digitalWrite(L2, HIGH);
else
digitalWrite(L1, LOW);
digitalWrite(L2, LOW);

if (l > UMBRAL5)
digitalWrite(L3, HIGH);
digitalWrite(L2, HIGH);
else
digitalWrite(L3, LOW);
digitalWrite(L2, LOW);

if (l > UMBRAL6)
digitalWrite(L1, HIGH);
digitalWrite(L3, HIGH);
else
digitalWrite(L1, LOW);
digitalWrite(L3, LOW);

if (l > UMBRAL7)
digitalWrite(L1, HIGH);
digitalWrite(L2, HIGH);
digitalWrite(L3, HIGH);
else
digitalWrite(L1, LOW);
digitalWrite(L2, LOW);
digitalWrite(L3, LOW);
}

tengo ese codigo, pero me da este error:

sketch_apr30b.ino: In function ‘void loop()’:
sketch_apr30b.ino:56:2: error: ‘else’ without a previous ‘if’
sketch_apr30b.ino:63:2: error: ‘else’ without a previous ‘if’
sketch_apr30b.ino:70:2: error: ‘else’ without a previous ‘if’
sketch_apr30b.ino:78:2: error: ‘else’ without a previous ‘if’
Error de compilación

otra duda qye tengo, se me suman los LED, y lo que kiero es que cada vez que se pase de un “umbral” a otro, se encienda el LED que sale, no el LED correspondiente y todos los anteriores

Ahhh bueno. Pero eso es otra cosa. Son disparos por ventas de nivel de sonido. A todo lo quemuestras le faltan las llaves de if y else.

Cierto, en los if else cuando contienen mas de una linea dentro debes usar {}, es decir:

if (l > UMBRAL7){ digitalWrite(L1, HIGH); digitalWrite(L2, HIGH); digitalWrite(L3, HIGH); } else { digitalWrite(L1, LOW); digitalWrite(L2, LOW); digitalWrite(L3, LOW); }

Salu2

De todas formas estoy con TFTLCDCyg, para que usar un arduino si puedes usar un LM3914? O sea que tu aplicación es un vúmetro!! con seteos a diferentes umbrales, varios LM3914 con presets y todos con la misma entrada de audio.

Y quieres que cada LED dispare con diferentes niveles de sonido. Pense que querías como un vúmetro de frecuencias.

mira esto con un LM3914

y algo asi es lo que pense que querias hacer