INHOUDSOPGAWE:

MIDI2LED - 'n MIDI -beheerde LED Strip Light Effect: 6 stappe
MIDI2LED - 'n MIDI -beheerde LED Strip Light Effect: 6 stappe

Video: MIDI2LED - 'n MIDI -beheerde LED Strip Light Effect: 6 stappe

Video: MIDI2LED - 'n MIDI -beheerde LED Strip Light Effect: 6 stappe
Video: Штукатурка стен - самое полное видео! Переделка хрущевки от А до Я. #5 2024, November
Anonim
MIDI2LED - 'n MIDI -beheerde LED Strip Light Effect
MIDI2LED - 'n MIDI -beheerde LED Strip Light Effect

Dit is my eerste opdrag, so hou my in gedagte.

Ek is mal daaroor om musiek te maak, en in lewendige situasies soos konserte in die woonkamer hou ek daarvan as daar ligte effekte is wat ooreenstem met wat ek speel. Ek het dus 'n op Arduino gebaseerde boks gebou wat 'n LED-strook in 'n ewekansige kleur laat brand as ek 'n noot op my MIDI-sleutelbord slaan, en waar ek die noot slaan.

Voorrade

  • Arduino Uno
  • Arduino protoshield
  • MIDI -aansluiting
  • 1N4148 diode
  • 6N138 opto koppelaar
  • weerstande: 2x 220 Ohm, 1x 10kOhm, 1x 470Ohm
  • WS2812B LED -strook (60 LED's)
  • 'n paar oorblywende drade
  • hitte krimp buise
  • geskikte omhulsel vir die Arduino (ek gebruik 'n plastiese aansluitkas)

U benodig ook

  • soldeerbout en soldeer
  • MIDI -sleutelbord en MIDI -kabel

Stap 1: Die elektronika

Die elektronika
Die elektronika

Die kring is redelik eenvoudig. Dit bestaan uit 'n standaard MIDI -ingang (links van die Arduino) en die verbinding met die LED -strook (regs van die Arduino). Plaas al die dele op die protoshield, daar is baie ruimte. Dit word oor die algemeen aanbeveel om 'n eksterne kragtoevoer te gebruik om die LED -strook aan te dryf, maar ek het gevind dat slegs 'n paar LED's gelyktydig aanskakel as u speel. geen probleem om die Arduino +5V / GND as kragopbrengs te gebruik nie. (Probeer om nie alle sleutels terselfdertyd en met volle snelheid te slaan nie.;-)) As u besluit om 'n eksterne kragtoevoer te gebruik, koppel dit eenvoudig aan die Arduino +5V- en GND-penne. Sommige mense beveel aan dat 'n 100uF -kondensator (nie in skematiese weergawe nie) tussen hierdie twee lyne geplaas word.

Soldeer die dele aan die protoshield en koppel die LED -strook aan soos in die skema getoon.

Stap 2: Koppel die LED -strook

Koppel die LED -strook
Koppel die LED -strook

Dit is belangrik om die regterkant - die ingangseinde - van die LED -strook aan die stroombaan te koppel. My strook het 'n vroulike aansluiting as 'n ingang en het klein driehoeke wat al langs die ingang wys. By die uitgang was daar 'n manlike aansluiting (om dit aan 'n ander strook te koppel wat ons nie nodig het nie), so ek sny dit af en soldeer dit aan die drie kabels wat van die Arduino kom. Gebruik 'n krimpkous om die drie kabels aan die LED -strook aan mekaar vas te bind en minder sigbaar te maak.

Die LED -strook wat ek gebruik het, het kleeflint aan die agterkant, sodat dit maklik aan die agterkant van die MIDI -sleutelbord vasgemaak kan word.

Stap 3: Pas die projek aan op u sleutelbord

Pas die projek aan by u sleutelbord
Pas die projek aan by u sleutelbord
Pas die projek aan by u sleutelbord
Pas die projek aan by u sleutelbord

Miskien moet u die LED -strook en die Arduino -kode aanpas by u sleutelbord. Myne het 76 sleutels, en die lengte van die strook is amper presies die breedte van die sleutelbord. As jy bv. 61 sleutels, benodig u moontlik 'n korter strook. Die LED -strook kan tussen twee LED's gesny word. Maak net seker dat u die korrekte deel afsny; dit het 'n ingangseinde (met 'n vroulike aansluiting) en 'n uitgangseinde (met 'n manlike aansluiting). U moet die ingangseinde behou. vir

  • NUMBER_OF_LEDS na die aantal LED's wat in u strook oor is nadat u die punt afgesny het,
  • NUMBER_OF_KEYS tot die aantal sleutels op u sleutelbord, en
  • MIN_KEY tot die MIDI -toonhoogte nommer van u laagste sleutel. U kan dit in die gebruikershandleiding van die sleutelbord vind; of gebruik 'n instrument wat die MIDI -nootnommer vertoon, soos KMidiMon vir Linux, of Pocket MIDI vir Windows of Mac; of probeer verskillende waardes totdat die toestel op al die sleutels op u sleutelbord reageer

Stap 4: Die Arduino -kode

Die Arduino -kode gebruik die MIDI -biblioteek (v4.3.1) deur Forty Seven Effects en die Adafruit NeoPixel -biblioteek (v1.3.4) deur Adafruit. Installeer hierdie biblioteke met die Arduino IDE. Stel dan die kode saam en laai dit op na die Arduino sonder dat die skild gekoppel is (die optokoppelaar is gekoppel aan die RX -pen, wat die oplaai belemmer). Skakel die Arduino via 'n USB -kabel (ek gebruik 'n USB -muurwrat).

Hier is 'n kort oorsig oor hoe dit werk: as u die kode na u smaak wil aanpas: In elke lus word die MIDI -invoer voorgelees. As 'n Note On of Note Off -gebeurtenis ontvang is, word die MyHandleNoteOn- of MyHandleNoteOff -funksies genoem. Hulle noem albei die updateVelocityArray -funksie, wat die snelheid (dws hoe hard u die sleutel getref het) van die sleutelnommer stoor. As die snelheid hoër is as wat voorheen gestoor is, word die kleur van die ooreenstemmende LED op die "huidige kleur" gestel. Nadat die MIDI -gebeurtenisse hanteer is, word die funksie updateLedArray genoem. Dit werk die "huidige kleur" by (waarvan die rooi, groen en blou waardes onafhanklik op 'n lineêre manier verander totdat die onderste of boonste punt bereik is, op watter punt die snelheid vir die lineêre verandering op 'n ewekansige getal gestel word), verminder die snelheid van die ingedrukte note stadig en werk die kleurwaardes van elke LED wat sy kleur moet verander (as gevolg van 'n nuwe noottreffer of vermindering van die snelheid) by. Funksie showLedArray dra die kleure oor na die Adafruit_NeoPixel -struktuur genaamd "pixels" en laat die werklike LED's die kleure in die pixelstruktuur wys.

Stap 5: Moontlike verbeterings …

'N Projek word nooit voltooi nie. Daar is altyd iets wat gedoen kan word om dit te verbeter:

  • Die protoshield bevat so min dele dat dit regtig 'n vermorsing is; 'n Mens kan maklik dieselfde effek bereik met 'n Arduino Nano en 'n 15x7 gate PCB plus 'n paar vroulike penkoppe.
  • Sommige van die MIDI -seine raak verlore. As dit 'n NoteOn is, sal die ooreenstemmende LED nie brand nie; as dit 'n NoteOff is, gaan dit nie uit nie (daarom het ek die snelheidsvermindering ingestel, wat verseker dat LED's nie vir ewig aanhou nie). Ek probeer nog steeds die rede agterkom. Dit is moontlik 'n tydsberekening, en MIDI.read () moet meer gereeld genoem word.
  • Sommige van die MIDI -seine word verkeerd gelees, dws die verkeerde LED's brand. Kan verbind word met die punt hierbo. Benodig 'n bietjie ondersoek.
  • Die kring is ontwerp om 'n aangename visuele effek te gee sonder veel gebruikersinteraksie (afgesien van die toetsbord). Ek sou my egter kon voorstel om 'n potensiometer by te voeg wat uitgelees word (met behulp van een van die analoge insette van die Arduino) waarmee u die maksimum snelheid waarmee die kleure verander kan verander (tans #gedefinieer as MAX_COLOR_CHANGE_SPEED = 20). Of meet die gemiddelde tyd tussen twee NoteOn -gebeurtenisse en verander MAX_COLOR_CHANGE_SPEED dienooreenkomstig - in stadige liedjies moet die kleur stadiger verander.

Stap 6: Klaar

Skakel die Arduino via 'n USB -kabel (ek gebruik 'n USB -muurwrat). Koppel jou MIDI -sleutelbord aan die MIDI -aansluiting en begin rockin '. Kyk hoe ek 'n bietjie ligte musiek speel (woordspeling, so erg soos dit bedoel is).

Aanbeveel: