Sommario:

MIDI2LED - un effetto luminoso a strisce LED controllato da MIDI: 6 passaggi
MIDI2LED - un effetto luminoso a strisce LED controllato da MIDI: 6 passaggi

Video: MIDI2LED - un effetto luminoso a strisce LED controllato da MIDI: 6 passaggi

Video: MIDI2LED - un effetto luminoso a strisce LED controllato da MIDI: 6 passaggi
Video: Controllare una striscia di LED Neopixel con Arduino - #140 2024, Dicembre
Anonim
MIDI2LED - un effetto di luce a strisce LED controllato MIDI
MIDI2LED - un effetto di luce a strisce LED controllato MIDI

Questo è il mio primo istruibile, quindi abbi pazienza.

Amo fare musica, e in situazioni live come i concerti in salotto, mi piace quando ci sono effetti di luce in sintonia con quello che suono. Quindi ho costruito una scatola basata su Arduino che fa illuminare una striscia LED in un colore casuale quando premo una nota sulla mia tastiera MIDI e dove premo la nota.

Forniture

  • Arduino Uno
  • Protoscudo Arduino
  • Presa MIDI
  • Diodo 1N4148
  • 6N138 accoppiatore ottico
  • resistenze: 2x 220 Ohm, 1x 10kOhm, 1x 470Ohm
  • Striscia LED WS2812B (60 LED)
  • alcuni fili rimanenti
  • tubo termoretraibile
  • custodia adatta per Arduino (io uso una scatola di giunzione in plastica)

Avrai anche bisogno

  • saldatore e saldatore
  • Tastiera MIDI e cavo MIDI

Passaggio 1: l'elettronica

L'elettronica
L'elettronica

Il circuito è abbastanza semplice. Consiste in un ingresso MIDI standard (a sinistra dell'Arduino) e la connessione alla striscia LED (a destra dell'Arduino). Posiziona tutte le parti sul protoshield, c'è molto spazio. In genere si consiglia di utilizzare un alimentatore esterno per alimentare la striscia LED, ma ho scoperto che quando giochi, solo pochi LED sono accesi contemporaneamente, quindi c'era nessun problema nell'usare Arduino +5V / GND come potenza in uscita. (Cerca di evitare di premere tutti i tasti contemporaneamente e alla massima velocità.;-)) Se decidi di utilizzare un alimentatore esterno, collegalo semplicemente ai pin Arduino +5V e GND. Alcune persone consigliano di inserire un condensatore da 100uF (non mostrato nello schema) tra queste due linee.

Saldare le parti al protoshield e collegare la striscia LED come mostrato nello schema.

Passaggio 2: collegamento della striscia LED

Collegamento della striscia LED
Collegamento della striscia LED

È importante collegare l'estremità destra - l'estremità di ingresso - della striscia LED al circuito. La mia striscia ha un connettore femmina come ingresso e ha piccoli triangoli che puntano lontano dall'ingresso. In uscita c'era un connettore maschio (per poterlo collegare ad un'altra striscia, che non ci serve), quindi l'ho tagliato e saldato ai tre cavi provenienti dall'Arduino. Usa una guaina termorestringente per legare insieme i tre cavi alla striscia LED e per renderli meno visibili.

La striscia LED che ho usato è dotata di nastro adesivo sul retro, quindi può essere facilmente incollata sul retro della tastiera MIDI.

Passaggio 3: adattare il progetto alla tastiera

Adattare il progetto alla tua tastiera
Adattare il progetto alla tua tastiera
Adattare il progetto alla tua tastiera
Adattare il progetto alla tua tastiera

Potrebbe essere necessario adattare la striscia LED e il codice Arduino alla tastiera. Il mio ha 76 tasti e la lunghezza della striscia è quasi esattamente la larghezza della tastiera. Se hai ad es. 61 chiavi, potresti aver bisogno di una striscia più corta. La striscia LED può essere tagliata tra due LED qualsiasi. Assicurati solo di tagliare la parte corretta, ha un'estremità di input (con un connettore femmina) e un'estremità di output (con un connettore maschio), devi mantenere l'estremità di input. Nel codice, cambia #defines per

  • NUMBER_OF_LEDS al numero di LED rimasti nella striscia dopo aver tagliato l'estremità,
  • NUMBER_OF_KEYS al numero di tasti sulla tastiera e
  • MIN_KEY al numero di intonazione MIDI della chiave più grave. Puoi trovarlo nel manuale utente della tastiera; oppure usa uno strumento che visualizza il numero di nota MIDI, come KMidiMon per Linux o Pocket MIDI per Windows o Mac; o prova valori diversi finché il dispositivo non risponde a tutti i tasti della tastiera

Passaggio 4: il codice Arduino

Il codice Arduino utilizza la libreria MIDI (v4.3.1) di Forty Seven Effects e la libreria Adafruit NeoPixel (v1.3.4) di Adafruit. Installa queste librerie usando l'IDE di Arduino. Quindi compila il codice e caricalo su Arduino senza lo shield collegato (l'accoppiatore ottico è collegato al pin RX, che impedisce l'upload). Alimenta Arduino tramite cavo USB (io uso una verruca da parete USB).

Se desideri modificare il codice a tuo piacimento, ecco una breve panoramica di come funziona: In ogni loop, viene letto l'input MIDI. Se è stato ricevuto un evento Note On o Note Off, vengono chiamate le funzioni MyHandleNoteOn o MyHandleNoteOff. Entrambi chiamano la funzione updateVelocityArray, che memorizza la velocità (cioè la forza con cui si preme il tasto) del numero del tasto. Se la velocità è superiore a quella memorizzata in precedenza, il colore del LED corrispondente viene impostato sul "colore attuale". Dopo che gli eventi MIDI sono stati gestiti, viene chiamata la funzione updateLedArray. Questo aggiorna il "colore corrente" (i cui valori rosso, verde e blu cambiano indipendentemente in modo lineare, fino a raggiungere l'estremità inferiore o superiore, a quel punto la velocità per il cambiamento lineare viene impostata su un numero casuale), riduce lentamente la velocità delle note premute e aggiorna i valori di colore di ciascun LED che deve cambiare colore (a causa di una nuova nota colpita o della riduzione della velocità). La funzione showLedArray trasferisce i colori alla struttura Adafruit_NeoPixel chiamata "pixel" e fa in modo che i LED reali mostrino i colori nella struttura dei pixel.

Passaggio 5: possibili miglioramenti…

Un progetto non è mai finito. C'è sempre qualcosa che si può fare per migliorarlo:

  • Il protoshield contiene così poche parti che è davvero uno spreco; si potrebbe facilmente ottenere lo stesso effetto con un Arduino Nano e un PCB a 15x7 fori più alcuni connettori femmina.
  • Alcuni dei segnali MIDI vengono persi. Se è un NoteOn, il LED corrispondente non si accenderà; se è un NoteOff, non si spegnerà (ecco perché ho introdotto la riduzione della velocità, che assicura che i LED non rimangano accesi indefinitamente). Sto ancora cercando di capire il motivo. Forse è un problema di temporizzazione e MIDI.read() dovrebbe essere chiamato più spesso.
  • Alcuni dei segnali MIDI vengono letti male, ovvero si accendono i LED sbagliati. Potrebbe essere collegato con il punto sopra. Ha bisogno di qualche indagine.
  • Il circuito è progettato per dare un piacevole effetto visivo senza molta interazione da parte dell'utente (a parte suonare la tastiera). Tuttavia, potrei immaginare di aggiungere un potenziometro che viene letto (utilizzando uno degli ingressi analogici di Arduino) con il quale è possibile modificare la velocità massima alla quale cambiano i colori (attualmente #define'd come MAX_COLOR_CHANGE_SPEED = 20). Oppure misura il tempo medio tra due eventi NoteOn e modifica MAX_COLOR_CHANGE_SPEED di conseguenza - nelle canzoni lente, il colore dovrebbe cambiare più lentamente.

Passaggio 6: fatto

Alimenta Arduino tramite cavo USB (io uso una verruca da parete USB). Collega la tua tastiera MIDI alla presa MIDI e inizia a suonare. Guardami suonare un po' di musica leggera (gioco di parole, per quanto brutto sia, voluto).

Consigliato: