Tabla de contenido:

MIDI2LED: un efecto de luz de tira de LED controlado por MIDI: 6 pasos
MIDI2LED: un efecto de luz de tira de LED controlado por MIDI: 6 pasos

Video: MIDI2LED: un efecto de luz de tira de LED controlado por MIDI: 6 pasos

Video: MIDI2LED: un efecto de luz de tira de LED controlado por MIDI: 6 pasos
Video: ¿Varias tiras LED direccionables con el mismo controlador? Usamos el amplificador de señal SP901E 2024, Noviembre
Anonim
MIDI2LED: un efecto de luz de tira de LED controlado por MIDI
MIDI2LED: un efecto de luz de tira de LED controlado por MIDI

Este es mi primer instructable, así que tengan paciencia conmigo.

Me encanta hacer música, y en situaciones en vivo como conciertos en la sala de estar, me gusta cuando hay efectos de luz sincronizados con lo que toco. Así que construí una caja basada en Arduino que hace que una tira de LED se ilumine en un color aleatorio cuando toco una nota en mi teclado MIDI, y donde toco la nota.

Suministros

  • Arduino Uno
  • Protoshield de Arduino
  • Conector MIDI
  • Diodo 1N4148
  • Acoplador óptico 6N138
  • resistencias: 2x 220 Ohm, 1x 10kOhm, 1x 470Ohm
  • Tira de LED WS2812B (60 LED)
  • algunos cables sobrantes
  • Tubo termoretráctil
  • Carcasa adecuada para Arduino (yo uso una caja de conexiones de plástico)

También necesitarás

  • soldador y soldadura
  • Teclado MIDI y cable MIDI

Paso 1: la electrónica

La Electrónica
La Electrónica

El circuito es bastante sencillo. Consiste en una entrada MIDI estándar (a la izquierda del Arduino) y la conexión a la tira de LED (a la derecha del Arduino). Coloque todas las piezas en el protoshield, hay mucho espacio. Generalmente se recomienda usar una fuente de alimentación externa para alimentar la tira de LED, pero descubrí que cuando juegas, solo algunos LED están encendidos al mismo tiempo, por lo que había no hay problema en usar el Arduino + 5V / GND como salida de potencia. (Trate de evitar presionar todas las teclas al mismo tiempo y a máxima velocidad.;-)) Si decide usar una fuente de alimentación externa, simplemente conéctela a los pines Arduino + 5V y GND. Algunas personas recomiendan insertar un condensador de 100 uF (no se muestra en el esquema) entre estas dos líneas.

Suelde las piezas al protoshield y conecte la tira de LED como se muestra en el esquema.

Paso 2: Conexión de la tira de LED

Conexión de la tira de LED
Conexión de la tira de LED

Es importante conectar el extremo derecho, el extremo de entrada, de la tira de LED al circuito. Mi tira tiene un conector hembra como entrada y tiene pequeños triángulos que apuntan en dirección opuesta a la entrada. En la salida había un conector macho (para poder conectarlo a otra tira, que no necesitamos), así que lo corté y lo soldé a los tres cables que vienen del Arduino. Utilice tubos termorretráctiles para unir los tres cables a la tira de LED y hacerlos menos visibles.

La tira de LED que utilicé viene con cinta adhesiva en la parte posterior, por lo que se puede pegar fácilmente a la parte posterior del teclado MIDI.

Paso 3: adaptar el proyecto a su teclado

Adaptar el proyecto a su teclado
Adaptar el proyecto a su teclado
Adaptar el proyecto a su teclado
Adaptar el proyecto a su teclado

Es posible que deba adaptar la tira de LED y el código Arduino a su teclado. El mío tiene 76 teclas, y la longitud de la tira es casi exactamente el ancho del teclado. Si tiene, por ejemplo, 61 teclas, es posible que necesite una tira más corta. La tira de LED se puede cortar entre dos LED cualesquiera. Solo asegúrate de cortar la parte correcta, tiene un extremo de entrada (con un conector hembra) y un extremo de salida (con un conector macho), debes mantener el extremo de entrada. En el código, cambia los #defines por

  • NUMBER_OF_LEDS a la cantidad de LED que quedan en su tira después de cortar el extremo,
  • NUMBER_OF_KEYS al número de teclas de su teclado y
  • MIN_KEY al número de tono MIDI de su tecla más baja. Puede encontrar esto en el manual del usuario del teclado; o utilice una herramienta que muestre el número de nota MIDI, como KMidiMon para Linux o Pocket MIDI para Windows o Mac; o pruebe diferentes valores hasta que el dispositivo responda a todas las teclas de su teclado

Paso 4: el código Arduino

El código Arduino utiliza la biblioteca MIDI (v4.3.1) de Forty Seven Effects y la biblioteca Adafruit NeoPixel (v1.3.4) de Adafruit. Instale estas bibliotecas usando el IDE de Arduino. Luego compila el código y cárgalo al Arduino sin el escudo conectado (el optoacoplador está conectado al pin RX, lo que impide la carga). Encienda el Arduino a través de un cable USB (yo uso una verruga de pared USB).

Si desea modificar el código a su gusto, aquí hay una breve descripción general de cómo funciona: En cada bucle, se lee la entrada MIDI. Si se ha recibido un evento Note On o Note Off, se llaman las funciones MyHandleNoteOn o MyHandleNoteOff. Ambos llaman a la función updateVelocityArray, que almacena la velocidad (es decir, la fuerza con la que presionó la tecla) del número de tecla. Si la velocidad es superior a la almacenada anteriormente, el color del LED correspondiente se establece en el "color actual". Una vez que se han manejado los eventos MIDI, se llama a la función updateLedArray. Esto actualiza el "color actual" (cuyos valores rojo, verde y azul cambian independientemente de forma lineal, hasta que se alcanza el extremo inferior o superior, momento en el que la velocidad del cambio lineal se establece en un número aleatorio), reduce lentamente la velocidad de las notas presionadas y actualiza los valores de color de cada LED que tiene que cambiar su color (debido al nuevo golpe de nota o reducción de la velocidad). La función showLedArray transfiere los colores a la estructura Adafruit_NeoPixel llamada "píxeles" y hace que los LED reales muestren los colores en la estructura de píxeles.

Paso 5: posibles mejoras …

Un proyecto nunca se termina. Siempre hay algo que se puede hacer para mejorarlo:

  • El protoshield contiene tan pocas partes que es realmente un desperdicio; uno podría lograr fácilmente el mismo efecto con un Arduino Nano y un PCB de 15x7 agujeros más algunos encabezados de clavija hembra.
  • Algunas de las señales MIDI se pierden. Si es un NoteOn, el LED correspondiente no se encenderá; si es un NoteOff, no se apagará (por eso introduje la reducción de velocidad, que asegura que los LED no permanecerán encendidos indefinidamente). Todavía estoy tratando de averiguar la razón. Posiblemente sea un problema de tiempo, y se debería llamar a MIDI.read () con más frecuencia.
  • Algunas de las señales MIDI están mal leídas, es decir, se encienden los LED incorrectos. Podría estar relacionado con el punto anterior. Necesita algo de investigación.
  • El circuito está diseñado para brindar un efecto visual agradable sin mucha interacción del usuario (aparte de tocar el teclado). Sin embargo, podría imaginarme agregando un potenciómetro que se lee (usando una de las entradas analógicas de Arduino) con el que puede cambiar la velocidad máxima a la que cambian los colores (actualmente # definido como MAX_COLOR_CHANGE_SPEED = 20). O mida el tiempo promedio entre dos eventos NoteOn y cambie MAX_COLOR_CHANGE_SPEED en consecuencia; en canciones lentas, el color debería cambiar más lentamente.

Paso 6: ¡Listo

Encienda el Arduino a través de un cable USB (yo uso una verruga de pared USB). Conecte su teclado MIDI a la toma MIDI y comience a rockear. Mírame tocar un poco de música ligera (juego de palabras, por malo que sea, intencionado).

Recomendado: