MIDI2LED - MIDI -ohjattu LED -nauhavalotehoste: 6 vaihetta
MIDI2LED - MIDI -ohjattu LED -nauhavalotehoste: 6 vaihetta
Anonim
MIDI2LED - MIDI -ohjattu LED -nauhavalotehoste
MIDI2LED - MIDI -ohjattu LED -nauhavalotehoste

Tämä on ensimmäinen ohjeeni, joten kestä minua.

Rakastan musiikin tekemistä, ja elävissä tilanteissa, kuten olohuoneen konserteissa, pidän siitä, kun valotehosteita on synkronoitu soittamani kanssa. Joten rakensin Arduino-pohjaisen laatikon, joka saa LED-nauhan syttymään satunnaisessa värissä, kun osuin nuottiin MIDI-näppäimistölläni ja mihin osuin muistiinpanoon.

Tarvikkeet

  • Arduino Uno
  • Arduinon protoshield
  • MIDI -liitin
  • 1N4148 diodi
  • 6N138 -optokytkin
  • vastukset: 2x 220 Ohm, 1x 10kOhm, 1x 470Ohm
  • WS2812B LED -nauha (60 LEDiä)
  • joitain jääneitä johtoja
  • lämpökutistuva letku
  • sopiva kotelo Arduinolle (käytän muovista kytkentärasiaa)

Tarvitset myös

  • juotin ja juote
  • MIDI -näppäimistö ja MIDI -kaapeli

Vaihe 1: Elektroniikka

Elektroniikka
Elektroniikka

Piiri on melko suoraviivainen. Se koostuu tavallisesta MIDI -tulosta (Arduinon vasemmalla puolella) ja liitännästä LED -nauhaan (Arduinon oikealla puolella). Aseta kaikki osat protoshieldille, siellä on paljon tilaa. On yleensä suositeltavaa käyttää ulkoista virtalähdettä LED -nauhan virtalähteeksi, mutta huomasin, että kun pelaat, vain muutama LED palaa samanaikaisesti, joten ei ongelmaa käytettäessä Arduino +5V / GND -laitetta teholähtönä. (Yritä välttää kaikkien näppäinten painamista samanaikaisesti ja täydellä nopeudella.;-)) Jos päätät käyttää ulkoista virtalähdettä, kytke se yksinkertaisesti Arduino +5V- ja GND-nastoihin. Jotkut ihmiset suosittelevat 100uF kondensaattorin (ei esitetty kaaviossa) lisäämistä näiden kahden rivin väliin.

Juotos osat protosuojaan ja liitä LED -nauha kaavion mukaisesti.

Vaihe 2: LED -nauhan liittäminen

LED -nauhan liittäminen
LED -nauhan liittäminen

On tärkeää kytkeä LED -nauhan oikea pää - tulopää - piiriin. Nauhassa on naarasliitin tulona, ja siinä on pieniä kolmioita, jotka osoittavat poispäin tulosta. Lähdössä oli urosliitin (jotta se voitaisiin liittää toiseen nauhaan, jota emme tarvitse), joten katkaisin sen ja juotin sen kolmeen Arduinon kaapeliin. Kytke kolme kaapelia yhteen LED -nauhan kanssa ja tee ne vähemmän näkyviksi kutisteputkella.

Käyttämäni LED -nauhan takana on teippi, joten se voidaan helposti liimata MIDI -näppäimistön takaosaan.

Vaihe 3: Projektin mukauttaminen näppäimistöön

Projektin mukauttaminen näppäimistöön
Projektin mukauttaminen näppäimistöön
Projektin mukauttaminen näppäimistöön
Projektin mukauttaminen näppäimistöön

Sinun on ehkä mukautettava LED -nauha ja Arduino -koodi näppäimistösi mukaan. Minulla on 76 näppäintä ja nauhan pituus on melkein täsmälleen näppäimistön leveys. Jos sinulla on esim. 61 näppäintä, saatat tarvita lyhyemmän nauhan. LED -nauha voidaan leikata minkä tahansa kahden LED -valon väliin. Varmista vain, että katkaiset oikean osan, sillä on tulopää (naarasliittimellä) ja ulostulopää (urosliittimellä), sinun on säilytettävä tulopää. Muuta koodissa #defines varten

  • NUMBER_OF_LEDS nauhaan jääneiden LED -valojen lukumäärään, kun pää on katkaistu,
  • NUMBER_OF_KEYS näppäimistön näppäinten määrään ja
  • MIN_KEY alimman avaimesi MIDI -piki -numeroon. Löydät tämän näppäimistön käyttöoppaasta; tai käytä työkalua, joka näyttää MIDI -muistiinpanon numeron, kuten KMidiMon Linuxille tai Pocket MIDI Windowsille tai Macille; tai kokeile eri arvoja, kunnes laite vastaa kaikkiin näppäimistön näppäimiin

Vaihe 4: Arduino -koodi

Arduino -koodi käyttää Forty Seven Effectsin MIDI -kirjastoa (v4.3.1) ja Adafruitin Adafruit NeoPixel -kirjastoa (v1.3.4). Asenna nämä kirjastot Arduino IDE: n avulla. Kokoa sitten koodi ja lähetä se Arduinolle ilman suojaa kytkettynä (optoerotin on kytketty RX -nastaan, mikä estää lataamisen). Kytke Arduinon virta USB -kaapelilla (käytän USB -seinäsylmää).

Jos haluat muokata koodia mielesi mukaan, tässä on lyhyt katsaus sen toimintaan: MIDI -tulo luetaan jokaisessa silmukassa. Jos Huomautus päällä tai Huomautus pois -tapahtuma on vastaanotettu, MyHandleNoteOn- tai MyHandleNoteOff -toimintoja kutsutaan. Molemmat kutsuvat updateVelocityArray -toimintoa, joka tallentaa avainnumeron nopeuden (eli kuinka voimakkaasti olet painanut näppäintä). Jos nopeus on suurempi kuin aiemmin tallennettu, vastaavan LED -valon väri asetetaan "nykyiseen väriin". Kun MIDI -tapahtumat on käsitelty, funktio updateLedArray kutsutaan. Tämä päivittää "nykyisen värin" (jonka punaiset, vihreät ja siniset arvot muuttuvat lineaarisesti itsenäisesti, kunnes ala- tai yläpää saavutetaan, jolloin lineaarisen muutoksen nopeus asetetaan satunnaislukuun), vähentää hitaasti painettujen nuottien nopeutta ja päivittää kunkin LEDin väri -arvot, joiden on muutettava väriä (uuden nuotin osuman tai nopeuden vähenemisen vuoksi). Toiminto showLedArray siirtää värit Adafruit_NeoPixel -rakenteeseen nimeltä "pikselit" ja saa todelliset LEDit näyttämään pikselirakenteen värit.

Vaihe 5: Mahdolliset parannukset…

Projekti ei ole koskaan valmis. Aina on jotain tehtävissä sen parantamiseksi:

  • Protoshield sisältää niin vähän osia, että se on todella hukkaa; saman vaikutuksen voisi helposti saavuttaa Arduino Nano -laitteella ja 15x7 -reikäisellä piirilevyllä sekä joillakin naaraspistokkeilla.
  • Osa MIDI -signaaleista katoaa. Jos se on NoteOn, vastaava LED ei syty; jos se on NoteOff, se ei sammu (siksi otin käyttöön nopeuden vähentämisen, joka varmistaa, että LEDit eivät pala loputtomiin). Yritän vielä selvittää syytä. Mahdollisesti se on ajoitusongelma, ja MIDI.read () tulisi kutsua useammin.
  • Jotkut MIDI -signaalit luetaan väärin, eli väärät LED -valot syttyvät. Voidaan yhdistää yllä olevaan kohtaan. Vaatii jonkin verran tutkimusta.
  • Piiri on suunniteltu antamaan miellyttävä visuaalinen vaikutus ilman paljon käyttäjän vuorovaikutusta (näppäimistön pelaamisen lisäksi). Voisin kuitenkin kuvitella lisääväni potentiometrin, joka luetaan (käyttäen yhtä Arduinon analogisista tuloista), jolla voit muuttaa värien enimmäisnopeutta (tällä hetkellä #define'd muodossa MAX_COLOR_CHANGE_SPEED = 20). Tai mittaa kahden NoteOn -tapahtuman välinen keskimääräinen aika ja muuta MAX_COLOR_CHANGE_SPEED vastaavasti - hitaissa kappaleissa värin pitäisi muuttua hitaammin.

Vaihe 6: Valmis

Kytke Arduinon virta USB -kaapelilla (käytän USB -seinäsylmää). Liitä MIDI -näppäimistö MIDI -liittimeen ja aloita rokkaaminen. Katso minun soittavan hieman kevyttä musiikkia (pun, niin huono kuin se on, tarkoitettu).

Suositeltava: