MIDI2LED - un efect de lumină LED cu bandă controlată MIDI: 6 pași
MIDI2LED - un efect de lumină LED cu bandă controlată MIDI: 6 pași
Anonim
MIDI2LED - un efect de lumină cu bandă cu LED controlat MIDI
MIDI2LED - un efect de lumină cu bandă cu LED controlat MIDI

Acesta este primul meu instructable, așa că purtați-vă cu mine.

Îmi place să fac muzică și, în situații live, cum ar fi concertele din sufragerie, îmi place când sunt efecte de lumină sincronizate cu ceea ce joc. Așa că am construit o cutie bazată pe Arduino care face ca o bandă LED să se lumineze într-o culoare aleatorie atunci când lovesc o notă de pe tastatura MIDI și unde am lovit nota.

Provizii

  • Arduino Uno
  • Protectie Arduino
  • Mufă MIDI
  • 1N4148 diodă
  • 6N138 opto cuplaj
  • rezistențe: 2x 220 Ohm, 1x 10kOhm, 1x 470Ohm
  • Benzi LED WS2812B (60 LED-uri)
  • niște fire rămase
  • tuburi termocontractabile
  • carcasă potrivită pentru Arduino (folosesc o cutie de joncțiune din plastic)

De asemenea, veți avea nevoie

  • fier de lipit și lipit
  • Tastatură MIDI și cablu MIDI

Pasul 1: Electronica

Electronica
Electronica

Circuitul este destul de simplu. Se compune dintr-o intrare MIDI standard (stânga Arduino) și conexiunea la banda LED (dreapta Arduino). Așezați toate părțile pe ecran, există mult spațiu. În general, este recomandat să utilizați o sursă de alimentare externă pentru a alimenta banda LED, dar am constatat că atunci când jucați, doar câteva LED-uri sunt aprinse în același timp, deci a existat nicio problemă în utilizarea Arduino + 5V / GND ca putere de ieșire. (Încercați să evitați lovirea tuturor tastelor în același timp și cu viteză maximă.;-)) Dacă decideți să utilizați o sursă de alimentare externă, pur și simplu conectați-o la pinii Arduino + 5V și GND. Unii oameni recomandă introducerea unui condensator 100uF (care nu este prezentat în schemă) între aceste două linii.

Lipiți piesele pe ecran și conectați banda LED așa cum se arată în schemă.

Pasul 2: Conectarea benzii LED

Conectarea benzii LED
Conectarea benzii LED

Este important să conectați capătul drept - capătul de intrare - al benzii LED la circuit. Banda mea are un conector feminin ca intrare și are mici triunghiuri de-a lungul timpului îndreptate departe de intrare. La ieșire, era un conector tată (pentru a-l putea conecta la o altă bandă, de care nu avem nevoie), așa că am tăiat-o și am lipit-o pe cele trei cabluri care vin de la Arduino. Utilizați tuburi termocontractabile pentru a lega cele trei cabluri de banda LED împreună și pentru a le face mai puțin vizibile.

Banda LED pe care am folosit-o vine cu bandă adezivă în spate, astfel încât poate fi ușor lipită de partea din spate a tastaturii MIDI.

Pasul 3: Adaptarea proiectului la tastatura dvs

Adaptarea proiectului la tastatura dvs
Adaptarea proiectului la tastatura dvs
Adaptarea proiectului la tastatura dvs
Adaptarea proiectului la tastatura dvs

Este posibil să trebuiască să adaptați banda LED și codul Arduino la tastatură. Al meu are 76 de taste, iar lungimea benzii este aproape exact lățimea tastaturii. Dacă aveți de ex. 61 de taste, este posibil să aveți nevoie de o bandă mai scurtă. Banda LED poate fi tăiată între oricare două LED-uri. Asigurați-vă că tăiați partea corectă, are un capăt de intrare (cu un conector feminin) și un capăt de ieșire (cu un conector tată), trebuie să păstrați capătul de intrare. În cod, schimbați #define pentru

  • NUMBER_OF_LEDS la numărul de LED-uri rămase în banda dvs. după tăierea capătului,
  • NUMBER_OF_KEYS până la numărul de taste de pe tastatură și
  • MIN_KEY până la numărul de pitch MIDI al celei mai mici taste. Puteți găsi acest lucru în manualul de utilizare al tastaturii; sau utilizați un instrument care afișează numărul de note MIDI, cum ar fi KMidiMon pentru Linux sau Pocket MIDI pentru Windows sau Mac; sau încercați diferite valori până când dispozitivul răspunde la toate tastele de pe tastatură

Pasul 4: Codul Arduino

Codul Arduino utilizează biblioteca MIDI (v4.3.1) de Forty Seven Effects și biblioteca Adafruit NeoPixel (v1.3.4) de Adafruit. Instalați aceste biblioteci utilizând Arduino IDE. Apoi compilați codul și încărcați-l pe Arduino fără scutul conectat (optocuplatorul este conectat la pinul RX, ceea ce împiedică încărcarea). Alimentați Arduino prin cablu USB (eu folosesc un neg negru de perete).

Dacă doriți să modificați codul după cum doriți, iată o scurtă prezentare generală a modului în care funcționează: în fiecare buclă, intrarea MIDI este citită. Dacă s-a primit un eveniment Note On sau Note Off, se apelează funcțiile MyHandleNoteOn sau MyHandleNoteOff. Amândoi apelează funcția updateVelocityArray, care stochează viteza (adică cât de tare ați apăsat tasta) a numărului cheii. Dacă viteza este mai mare decât cea stocată anterior, culoarea LED-ului corespunzător este setată la „culoarea curentă”. După ce evenimentele MIDI au fost tratate, se apelează funcția updateLedArray. Aceasta actualizează „culoarea curentă” (ale cărei valori roșu, verde și albastru se modifică independent într-un mod liniar, până când se atinge capătul inferior sau superior, moment în care viteza pentru schimbarea liniară este setată la un număr aleatoriu), reduce încet viteza notelor apăsate și actualizează valorile culorilor fiecărui LED care trebuie să-și schimbe culoarea (datorită lovirii notei noi sau reducerii vitezei). Funcția showLedArray transferă culorile în structura Adafruit_NeoPixel numită „pixeli” și face ca LED-urile reale să arate culorile în structura pixelilor.

Pasul 5: Îmbunătățiri posibile …

Un proiect nu se termină niciodată. Întotdeauna se poate face ceva pentru a-l îmbunătăți:

  • Protecția conține atât de puține părți încât este într-adevăr o risipă; s-ar putea obține cu ușurință același efect cu un Arduino Nano și un PCB de 15x7 găuri plus niște anteturi pin feminine.
  • Unele dintre semnalele MIDI se pierd. Dacă este un NoteOn, LED-ul corespunzător nu se va aprinde; dacă este un NoteOff, nu se va stinge (de aceea am introdus reducerea vitezei, care asigură faptul că LED-urile nu vor rămâne aprinse la nesfârșit). Încă încerc să-mi dau seama de motiv. Este posibil să fie o problemă de sincronizare, iar MIDI.read () ar trebui apelat mai des.
  • Unele semnale MIDI sunt citite greșit, adică LED-urile greșite se aprind. Ar putea fi conectat cu punctul de mai sus. Are nevoie de o investigație.
  • Circuitul este conceput pentru a oferi un efect vizual plăcut, fără prea multe interacțiuni ale utilizatorului (în afară de redarea tastaturii). Cu toate acestea, mi-aș putea imagina adăugarea unui potențiometru care este citit (folosind una dintre intrările analogice Arduino) cu care puteți modifica viteza maximă la care se schimbă culorile (în prezent # define'd ca MAX_COLOR_CHANGE_SPEED = 20). Sau măsurați timpul mediu dintre două evenimente NoteOn și modificați MAX_COLOR_CHANGE_SPEED în consecință - în melodiile lente, culoarea ar trebui să se schimbe mai lent.

Pasul 6: Gata

Alimentați Arduino prin cablu USB (eu folosesc un neg negru de perete). Conectați-vă tastatura MIDI la mufa MIDI și începeți rockin '. Urmăriți-mă jucând puțină muzică ușoară (joc de cuvinte, oricât de rău este, intenționat).

Recomandat: