Tartalomjegyzék:

MIDI2LED - MIDI vezérelt LED szalag fényhatás: 6 lépés
MIDI2LED - MIDI vezérelt LED szalag fényhatás: 6 lépés

Videó: MIDI2LED - MIDI vezérelt LED szalag fényhatás: 6 lépés

Videó: MIDI2LED - MIDI vezérelt LED szalag fényhatás: 6 lépés
Videó: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, November
Anonim
MIDI2LED - MIDI vezérelt LED szalagfényhatás
MIDI2LED - MIDI vezérelt LED szalagfényhatás

Ez az első tanítható, szóval türelmesen.

Szeretek zenélni, és olyan élő helyzetekben, mint a nappali koncertek, szeretem, ha a fényeffektusok szinkronban vannak azzal, amit játszok. Építettem hát egy Arduino-alapú dobozt, aminek köszönhetően egy LED-szalag véletlenszerű színnel világít, amikor a MIDI-billentyűzeten megüt egy hangjegyet, és ahol megütöm a jegyzetet.

Kellékek

  • Arduino Uno
  • Arduino protoshield
  • MIDI jack
  • 1N4148 dióda
  • 6N138 optocsatoló
  • ellenállások: 2x 220 Ohm, 1x 10kOhm, 1x 470Ohm
  • WS2812B LED szalag (60 LED)
  • néhány megmaradt vezeték
  • hőre zsugorodó cső
  • megfelelő burkolat az Arduino számára (műanyag csatlakozódobozt használok)

Szüksége is lesz rá

  • forrasztópáka és forrasztópáka
  • MIDI billentyűzet és MIDI kábel

Lépés: Az elektronika

Az elektronika
Az elektronika

Az áramkör meglehetősen egyszerű. Ez egy szabványos MIDI bemenetből áll (az Arduino bal oldalán) és a LED szalaghoz való csatlakozásból (az Arduino jobb oldalán). Helyezze az összes alkatrészt a protoshieldre, sok hely van. Általában ajánlott külső tápegységet használni a LED szalag táplálásához, de azt tapasztaltam, hogy játék közben csak néhány LED világít egyszerre, így nincs probléma az Arduino +5V / GND áramkimenetként való használatával. (Próbálja meg elkerülni az összes billentyű egyidejű megnyomását, teljes sebességgel.;-)) Ha úgy dönt, hogy külső tápegységet használ, egyszerűen csatlakoztassa az Arduino +5V és GND csapokhoz. Vannak, akik azt javasolják, hogy e két sor közé helyezzenek be egy 100uF kondenzátort (nem látható sematikusan).

Forrasztja az alkatrészeket a protoszárnyhoz, és csatlakoztassa a LED -csíkot az ábrán látható módon.

2. lépés: A LED csík csatlakoztatása

A LED szalag csatlakoztatása
A LED szalag csatlakoztatása

Fontos, hogy a LED szalag jobb végét - a bemeneti végét - csatlakoztassa az áramkörhöz. A szalagomnak bemenetként egy női csatlakozója van, és kis háromszögek vannak, amelyek a bemenettől távol mutatnak. A kimeneten volt egy férfi csatlakozó (hogy egy másik csíkra csatlakoztathassuk, amire nincs szükségünk), ezért levágtam és forrasztottam az Arduino -ból érkező három kábelre. Hőre zsugorodó cső segítségével kösse össze a három kábelt a LED szalaggal, és kevésbé láthatóvá tegye őket.

Az általam használt LED szalag hátoldalán ragasztószalag található, így könnyen felragasztható a MIDI billentyűzet hátoldalára.

3. lépés: A projekt beállítása a billentyűzethez

A projekt adaptálása a billentyűzethez
A projekt adaptálása a billentyűzethez
A projekt adaptálása a billentyűzethez
A projekt adaptálása a billentyűzethez

Előfordulhat, hogy a LED szalagot és az Arduino kódot hozzá kell igazítania a billentyűzetéhez. Az enyémben 76 billentyű van, és a csík hossza majdnem pontosan a billentyűzet szélessége. Ha van pl. 61 kulcshoz, szükség lehet egy rövidebb csíkra. A LED -szalag tetszőleges két LED közé vágható. Csak győződjön meg arról, hogy a megfelelő részt vágja le, van bemeneti vége (női csatlakozóval) és kimeneti vége (férfi csatlakozóval), meg kell őriznie a bemeneti végét. A kódban módosítsa a #defines számára

  • NUMBER_OF_LEDS a csíkban maradt LED -ek száma a vég levágása után,
  • NUMBER_OF_KEYS billentyűzet billentyűinek számát, és
  • MIN_KEY a legalacsonyabb kulcs MIDI hangmagasságához. Ezt megtalálhatja a billentyűzet felhasználói kézikönyvében; vagy használjon olyan eszközt, amely megjeleníti a MIDI -jegyzet számát, például KMidiMon Linux vagy Pocket MIDI Windows vagy Mac esetén; vagy próbálja ki a különböző értékeket, amíg a készülék nem reagál a billentyűzet összes gombjára

4. lépés: Az Arduino kód

Az Arduino kód a Forty Seven Effects MIDI könyvtárát (v4.3.1) és az Adafruit NeoPixel könyvtárát (v1.3.4) használja. Telepítse ezeket a könyvtárakat az Arduino IDE használatával. Ezután fordítsa össze a kódot, és töltse fel az Arduino -ba anélkül, hogy a pajzs csatlakoztatva lenne (az optocsatoló az RX tűhöz van csatlakoztatva, ami akadályozza a feltöltést). Táplálja az Arduino -t USB -kábelen keresztül (én USB -s szemölcsöt használok).

Ha tetszés szerint szeretné módosítani a kódot, íme egy rövid áttekintés a működéséről: Minden ciklusban kiolvasásra kerül a MIDI bemenet. Ha a Note On vagy a Note Off esemény érkezett, a MyHandleNoteOn vagy MyHandleNoteOff függvények hívódnak meg. Mindketten meghívják az updateVelocityArray függvényt, amely tárolja a kulcs számának sebességét (azaz azt, hogy milyen erősen ütötte meg a billentyűt). Ha a sebesség nagyobb, mint az előzőleg tárolt, a megfelelő LED színe az "aktuális szín" -re van állítva. A MIDI események kezelése után az updateLedArray függvény meghívásra kerül. Ez frissíti az "aktuális színt" (amelynek piros, zöld és kék értékei egymástól függetlenül, lineáris módon változnak, amíg az alsó vagy felső végét el nem éri, ekkor a lineáris változás sebessége véletlenszerű számra van állítva), lassan csökkenti a préselt hangok sebességét, és frissíti az egyes LED -ek színértékeit, amelyeknek meg kell változtatniuk a színüket (új jegyzetütés vagy a sebesség csökkenése miatt). A showLedArray funkció átviszi a színeket a "pixelek" nevű Adafruit_NeoPixel struktúrába, és a tényleges LED -ek a pixelszerkezet színeit mutatják.

5. lépés: Lehetséges fejlesztések…

Egy projekt soha nem fejeződik be. Mindig lehet tenni valamit a javítás érdekében:

  • A protoshield olyan kevés alkatrészt tartalmaz, hogy valóban pazarlás; könnyen elérhetjük ugyanezt a hatást egy Arduino Nano -val és egy 15x7 lyukú PCB -vel, valamint néhány női tűfejjel.
  • A MIDI jelek egy része eltűnik. Ha NoteOn, akkor a megfelelő LED nem világít; ha NoteOff, akkor nem fog kialudni (ezért vezettem be a sebességcsökkentést, ami biztosítja, hogy a LED -ek nem maradnak korlátlan ideig). Még próbálom kitalálni az okát. Valószínűleg ez időzítési probléma, és a MIDI.read () -ot gyakrabban kell hívni.
  • A MIDI jelek egy része rosszul olvasható, azaz a rossz LED -ek világítanak. Összekapcsolható a fenti ponttal. Némi vizsgálatot igényel.
  • Az áramkört úgy tervezték, hogy kellemes vizuális hatást fejtsen ki a felhasználói beavatkozás nélkül (a billentyűzeten kívül). Azonban el tudom képzelni, hogy hozzáadok egy kiolvasott potenciométert (az Arduino egyik analóg bemenetét használva), amellyel megváltoztathatja a színek változásának maximális sebességét (jelenleg #define'd mint MAX_COLOR_CHANGE_SPEED = 20). Vagy mérje meg az átlagos időt két NoteOn esemény között, és ennek megfelelően módosítsa a MAX_COLOR_CHANGE_SPEED értéket - a lassú daloknál a színnek lassabban kell változnia.

6. lépés: Kész

Táplálja az Arduino -t USB -kábelen keresztül (én USB -s szemölcsöt használok). Csatlakoztassa a MIDI billentyűzetet a MIDI aljzathoz, és kezdje el ringatni. Nézd, ahogy játszok egy kis könnyű zenét (szójáték, bármilyen rossz is, szándékos).

Ajánlott: