Taula de continguts:

MIDI2LED: efecte de llum de tira LED controlada MIDI: 6 passos
MIDI2LED: efecte de llum de tira LED controlada MIDI: 6 passos

Vídeo: MIDI2LED: efecte de llum de tira LED controlada MIDI: 6 passos

Vídeo: MIDI2LED: efecte de llum de tira LED controlada MIDI: 6 passos
Vídeo: Консультант от бога Tg: cadrolikk 2024, De novembre
Anonim
MIDI2LED: un efecte de llum de tira LED controlada per MIDI
MIDI2LED: un efecte de llum de tira LED controlada per MIDI

Aquest és el meu primer instructiu, així que tingueu-ho en compte.

M’encanta fer música i, en situacions en directe com els concerts de sala, m’agrada quan hi ha efectes de llum en sintonia amb el que toco. Per tant, vaig construir una caixa basada en Arduino que fa que una tira LED s’il·lumini en un color aleatori quan toco una nota al meu teclat MIDI i on vaig tocar la nota.

Subministraments

  • Arduino Uno
  • Protector de pantalla Arduino
  • Presa MIDI
  • 1N4148 díode
  • Acoblador opto 6N138
  • resistències: 2x 220 Ohm, 1x 10kOhm, 1x 470Ohm
  • Tira LED WS2812B (60 LED)
  • alguns cables sobrants
  • tubs termorretractables
  • carcassa adequada per a l'Arduino (faig servir una caixa de connexions de plàstic)

També necessitareu

  • soldador i soldador
  • Teclat MIDI i cable MIDI

Pas 1: l'electrònica

L’Electrònica
L’Electrònica

El circuit és força senzill. Consisteix en una entrada MIDI estàndard (esquerra de l’Arduino) i la connexió a la tira LED (dreta de l’Arduino). Col·loqueu totes les parts a la pantalla protectora, hi ha molt d’espai. En general, es recomana utilitzar una font d’alimentació externa per alimentar la tira de LED, però he trobat que quan es juga, només hi ha pocs LED encesos al mateix temps, de manera que hi ha cap problema a l’hora d’utilitzar l’Arduino + 5V / GND com a sortida de potència. (Intenteu evitar colpejar totes les tecles al mateix temps i a tota velocitat.;-)) Si decidiu utilitzar una font d'alimentació externa, simplement connecteu-la als pins Arduino + 5V i GND. Algunes persones recomanen inserir un condensador de 100uF (no es mostra en un esquema) entre aquestes dues línies.

Soldeu les peces al prototip i connecteu la tira LED tal com es mostra a l’esquema.

Pas 2: Connexió de la tira LED

Connexió de la tira LED
Connexió de la tira LED

És important connectar l'extrem dret (l'extrem d'entrada) de la tira LED al circuit. La meva tira té un connector femella com a entrada i té petits triangles que apunten allunyats de l'entrada. A la sortida, hi havia un connector mascle (per poder connectar-lo a una altra tira, que no necessitem), així que el vaig tallar i el vaig soldar als tres cables que provenien de l'Arduino. Utilitzeu tubs termoretràctils per lligar els tres cables a la tira LED i fer-los menys visibles.

La tira LED que he fet servir ve amb cinta adhesiva a la part posterior, de manera que es pot enganxar fàcilment a la part posterior del teclat MIDI.

Pas 3: adapteu el projecte al vostre teclat

Adaptació del projecte al vostre teclat
Adaptació del projecte al vostre teclat
Adaptació del projecte al vostre teclat
Adaptació del projecte al vostre teclat

És possible que hàgiu d’adaptar la tira LED i el codi Arduino al vostre teclat. La meva té 76 tecles i la longitud de la tira és gairebé exactament l’amplada del teclat. Si teniu, per exemple, 61 tecles, és possible que necessiteu una tira més curta. La tira LED es pot tallar entre dos LED qualsevol. Assegureu-vos que esteu tallant la part correcta, que té un extrem d’entrada (amb un connector femella) i un extrem de sortida (amb un connector mascle), heu de mantenir l’extrem d’entrada. Al codi, canvieu el #defines per

  • NUMBER_OF_LEDS al nombre de LED que queden a la tira després de tallar el final,
  • NUMBER_OF_KEYS fins al nombre de tecles del teclat i
  • MIN_KEY al número de pitch MIDI de la tecla més baixa. Podeu trobar-ho al manual d'usuari del teclat; o utilitzeu una eina que mostri el número de nota MIDI, com KMidiMon per a Linux o Pocket MIDI per a Windows o Mac; o proveu diferents valors fins que el dispositiu respongui a totes les tecles del teclat

Pas 4: el codi Arduino

El codi Arduino utilitza la biblioteca MIDI (v4.3.1) de Forty Seven Effects i la biblioteca Adafruit NeoPixel (v1.3.4) d’Adafruit. Instal·leu aquestes biblioteques mitjançant l'IDE Arduino. A continuació, compileu el codi i pengeu-lo a l’Arduino sense que el blindatge estigui connectat (l’optocoplador està connectat al pin RX, cosa que impedeix la càrrega). Enceneu l'Arduino mitjançant un cable USB (faig servir una berruga de paret USB).

Si voleu modificar el codi al vostre gust, aquí teniu una breu descripció general del seu funcionament: a cada bucle es llegeix l'entrada MIDI. Si s’ha rebut un esdeveniment Note On o Note Off, es criden a les funcions MyHandleNoteOn o MyHandleNoteOff. Tots dos anomenen la funció updateVelocityArray, que emmagatzema la velocitat (és a dir, quant heu premut la tecla) del número de clau. Si la velocitat és superior a la que s'emmagatzemava abans, el color del LED corresponent s'estableix en el "color actual". Després de gestionar els esdeveniments MIDI, es crida la funció updateLedArray. S'actualitza el "color actual" (els valors del vermell, el verd i el blau canvien independentment de manera lineal, fins que s'arriba a l'extrem inferior o superior, moment en què la velocitat del canvi lineal s'estableix en un nombre aleatori), redueix lentament la velocitat de les notes premudes i actualitza els valors de color de cada LED que ha de canviar el seu color (a causa del cop de nota nova o de la reducció de la velocitat). La funció showLedArray transfereix els colors a l'estructura Adafruit_NeoPixel anomenada "píxels" i fa que els LED reals mostrin els colors a l'estructura de píxels.

Pas 5: possibles millores …

Un projecte no s’acaba mai. Sempre es pot fer alguna cosa per millorar-lo:

  • La protecció conté tan poques parts que realment és un malbaratament; fàcilment es podria aconseguir el mateix efecte amb un Arduino Nano i un PCB de 15x7 forats més algunes capçaleres de pin femelles.
  • Alguns dels senyals MIDI es perden. Si és un NoteOn, el LED corresponent no s’encendrà; si es tracta d'un NoteOff, no s'apagarà (per això vaig introduir la reducció de velocitat, que garanteix que els LED no es mantinguin encesos indefinidament). Encara intento esbrinar el motiu. Possiblement sigui un problema de temps i MIDI.read () s’hauria de cridar més sovint.
  • Alguns dels senyals MIDI no es llegeixen malament, és a dir, s’encenen els LED equivocats. Es podria connectar amb el punt anterior. Necessita una investigació.
  • El circuit està dissenyat per donar un efecte visual agradable sense molta interacció de l'usuari (a part de tocar el teclat). Tanmateix, m’imagino afegir un potenciòmetre que es llegeix (mitjançant una de les entrades analògiques d’Arduino) amb el qual podeu canviar la velocitat màxima a la qual canvien els colors (actualment # define'd com a MAX_COLOR_CHANGE_SPEED = 20). O bé mesureu el temps mitjà entre dos esdeveniments NoteOn i canvieu MAX_COLOR_CHANGE_SPEED en conseqüència; en cançons lentes, el color hauria de canviar més lentament.

Pas 6: Fet

Alimenteu l'Arduino mitjançant un cable USB (faig servir una berruga de paret USB). Connecteu el teclat MIDI a la presa MIDI i comenceu a tocar. Mireu-me tocar una mica de música lleugera (joc de paraules, per molt dolent que sigui, intencionat).

Recomanat: