Analizador de Espectro WINAMP
Analizador de Espectro WINAMP
Analizador de Espectro WINAMP
by raulb32
Hola amig@ le invito a revisar el siguiente instructable donde explico como construir un vumetro con 12 LEDS
que reaccionan con la música que reproduce WINAMP.
MATERIALES
SOFTWARE
Después de Instalar el software WINLPT VERSION 2.09 y grabar el sketch en ARDUINO vamos a MENU
INICIO/WINLPT y le damos clic en "launch WINAMP" (no iniciar winamp directamente ya que no se iniciará el
plugin y posiblemente su computador deje de responder)
Dentor de winamp nos dirigimos al menú Opciones/vizualizacion/iniciar bajo la pestaña SETTINGS configurar los
siguientes parámetros:
Step 2: Sketch
Para llevar a cabo este proyecto, se utilizo doce LED y doce resistencias de 330 ohm luego se las colocó en una
placa perforada de manera que se la pueda montar sobre el ARDUINO y coincida con los pines 2, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13 y GND
El software winlpt envía una cadena de 0 hasta 32 bytes, en este caso, que solo encenderemos doce leds,
programaremos para que el software envíe doce bytes únicamente; el primer byte enviado corresponde al inicio
de la trama y siempre es 1, los siguientes 12 bytes corresponden a los datos: si el byte es 0 apaga el LED; si el
byte es 255 enciende el LED
Ejemplos
// 0 - APAGA TODO
// 255 - ENCIENDE EL LED
// CABECERA: 1
// 1 L1 L2 L3 L4 L5 L6 L7 L8 L9 L10 L11 L12
// PAQUETE COMPLETO: 1 0 0 0 0 0 0 0 0 0 0 0 0
// BYTES: 1..12
/////////////////////////////////////////////////////////////////////
// Program code
//////////////////////////////////////////////////////////////////// /PINES DEL ARDUINO 2, 3, 4, 5,... 13
const int channels[] = {2,3,4,5,6,7,8,9,10,11,12,13};
const int baudrate = 9600;
// NUMERO DE CANALES
const int numChannels = sizeof(channels);
//CANAL ACTUAL
int curChannel = 0;
void setup()
{
Serial.begin(baudrate);
for(int i = 0; i < numChannels; i++)
{
pinMode(channels[i], OUTPUT);
digitalWrite(channels[i], LOW);
}
}
void loop()
{
int y = Serial.available();
for (int i = 0; i < y; i++)
{
int inc = Serial.read(); // LEE EL DATO ENVIADO POR EL COMPUTADOR
if (inc == 1) // SI RECIBE EL NUMERO 1
{
curChannel = 0; //RESETEA EL CANAL ACTUAL A 0
continue;
}
if (curChannel < numChannels) // SI EL NUMERO DE CANAL ACTUAL ES MENOR AL NUMERO TOTAL DE CANALES
{
digitalWrite(channels[curChannel], !!inc); // ESCRIBE LA SEÑAL DE SALIDA
curChannel++;
}
}
}
Para comprender mejor la configuración del Plugin y ver al vumetro funcionando revise el vídeo.
Ahora modificaremos el SKETCH para hacerlo funcionar con matrices P10; el código es el siguiente:
//CONEXIONES:
//ARDUINO________________DMD
//PIN9___________________OE
//PIN6___________________A
//PIN7___________________B
//PIN13__________________SLK
//PIN8___________________SCLK
//PIN11__________________SPI
// Protocolo:
// 0 - APAGA EL LED
// 255 - ENCIENDE EL LED
// 1 - CABECERA MARCA EL INICIO DE LA TRAMA
// Baud Rate: 9600
// CABECERA: 1
// 1 L1 L2 L3 L4 L5 L6 L7 L8 L9 L10 L11 L12
// PAQUETE COMPLETO: 1 0 0 0 0 0 0 0 0 0 0 0 0
// BYTES: 1..12
/////////////////////////////////////////////////////////////////////
#include <DMD.h>
#include <TimerOne.h>
#include "Arial_black_16.h"
#include "SystemFont5x7.h"//para letra pequeña
#include "Arial_Black_16_ISO_8859_1.h"//para letra grande
DMD display(1,2);
const int baudrate = 9600;
const int numChannels = 12;
int curChannel = 0;
void ScanDMD()
{
display.scanDisplayBySPI();
}
void loop(){
int y = Serial.available();
https://youtu.be/nhTuZb2qQxw