Mundarija:

MIDI2LED - MIDI tomonidan boshqariladigan LED chiziqli yorug'lik effekti: 6 qadam
MIDI2LED - MIDI tomonidan boshqariladigan LED chiziqli yorug'lik effekti: 6 qadam

Video: MIDI2LED - MIDI tomonidan boshqariladigan LED chiziqli yorug'lik effekti: 6 qadam

Video: MIDI2LED - MIDI tomonidan boshqariladigan LED chiziqli yorug'lik effekti: 6 qadam
Video: Как спрятать данные в ячейках Excel? 2024, Noyabr
Anonim
MIDI2LED - MIDI tomonidan boshqariladigan LED chiziqli yorug'lik effekti
MIDI2LED - MIDI tomonidan boshqariladigan LED chiziqli yorug'lik effekti

Bu mening birinchi o'rgatuvchim, shuning uchun sabr qiling.

Men musiqa yozishni yaxshi ko'raman va yashash xonasida kontsertlar kabi jonli vaziyatlarda, men o'ynagan narsalarim bilan sinxron yorug'lik effektlari bo'lsa, menga yoqadi. Shunday qilib, men MIDI klaviaturasidagi yozuvni bosganimda va eslatmani urganimda LED tasmasini tasodifiy rangda yoritadigan Arduino-ga asoslangan quti qurdim.

Ta'minotlar

  • Arduino Uno
  • Arduino protoshopi
  • MIDI uyasi
  • 1N4148 diodi
  • 6N138 optik ulagichi
  • qarshilik: 2x 220 Ohm, 1x 10kOm, 1x470Ohm
  • WS2812B LED tasmasi (60 LED)
  • qolgan simlar
  • issiqlik o'tkazmaydigan quvurlar
  • Arduino uchun mos korpus (men plastik ulanish qutisini ishlataman)

Sizga ham kerak bo'ladi

  • lehim temir va lehim
  • MIDI klaviatura va MIDI kabeli

1 -qadam: elektronika

Elektronika
Elektronika

O'chirish juda oddiy. U standart MIDI kirishidan (Arduino -ning chap tomonida) va LED chizig'iga ulanishdan (Arduino -ning o'ng tomonida) iborat. Barcha qismlarni protoshopga joylashtiring, juda ko'p joy bor, odatda, LED tasmasini quvvatlantirish uchun tashqi quvvat manbasidan foydalanish tavsiya etiladi, lekin men o'ynaganimda bir vaqtning o'zida bir nechta LEDlar yonib turganini ko'rdim. quvvat manbai sifatida Arduino +5V / GND dan foydalanishda muammo bo'lmaydi. (Barcha tugmalarni bir vaqtning o'zida va to'liq tezlikda urmaslikka harakat qiling.;-)) Agar siz tashqi quvvat manbaidan foydalanishga qaror qilsangiz, uni Arduino +5V va GND pinlariga ulang. Ba'zi odamlar bu ikki chiziq orasiga 100 uF kondansatör (sxemada ko'rsatilmagan) kiritishni tavsiya qiladi.

Qismlarni protoshopga lehimlang va diagrammada ko'rsatilganidek LED tasmasini ulang.

2 -qadam: LED chizig'ini ulash

LED chizig'ini ulash
LED chizig'ini ulash

LED chizig'ining o'ng uchini - kirish uchini kontaktlarning zanglashiga ulash muhim. Mening chizig'imda kirish sifatida ayol ulagichi bor va uning uchidan kichik uchburchaklar bor. Chiqishda erkak konnektor bor edi (biz uni boshqa chiziqqa ulashimiz kerak edi), shuning uchun men uni kesib, Arduino -dan keladigan uchta kabelga lehimladim. Uchta kabelni LED tasmasiga bir -biriga bog'lab qo'yish va ularni kamroq ko'rinadigan qilish uchun issiqlik qisqaruvchi quvurlardan foydalaning.

Men ishlatgan LED tasmasi orqasida yopishqoq lenta bilan ta'minlangan, shuning uchun uni MIDI klaviaturasining orqa tomoniga osongina yopishtirish mumkin.

3 -qadam: Loyihani klaviaturaga moslashtirish

Loyihani klaviaturangizga moslashtirish
Loyihani klaviaturangizga moslashtirish
Loyihani klaviaturangizga moslashtirish
Loyihani klaviaturangizga moslashtirish

Siz LED tasmasini va Arduino kodini klaviaturaga moslashtirishingiz kerak bo'lishi mumkin. Menda 76 tugma bor va chiziq uzunligi klaviaturaning kengligiga deyarli to'g'ri keladi. Agar sizda masalan. 61 ta kalit, sizga qisqa chiziq kerak bo'lishi mumkin. LED tasmasini har qanday ikkita LED o'rtasida kesish mumkin. To'g'ri qismini kesib tashlaganingizga ishonch hosil qiling, uning kirish uchi (ayol ulagichi bilan) va chiqish uchi (erkak ulagichi bilan), siz kirish uchini ushlab turishingiz kerak. Kodda #ta'riflarni o'zgartiring. uchun

  • Nihoyat, chiziq kesilganidan keyin qolgan LEDlar soniga NUMBER_OF_LEDS,
  • Klaviaturadagi tugmalar soniga NUMBER_OF_KEYS va
  • MIN_KEY - eng past kalitingizning MIDI raqamiga. Buni klaviaturaning foydalanuvchi qo'llanmasida topishingiz mumkin; yoki Linux uchun KMidiMon yoki Windows yoki Mac uchun Pocket MIDI kabi MIDI eslatma raqamini ko'rsatadigan asbobdan foydalaning; yoki qurilma klaviaturangizdagi barcha tugmalarga javob bermaguncha turli qiymatlarni sinab ko'ring

4 -qadam: Arduino kodi

Arduino kodi qirq yetti effektli MIDI kutubxonasidan (v4.3.1) va Adafruit -dan Adafruit NeoPixel kutubxonasidan (v1.3.4) foydalanadi. Ushbu kutubxonalarni Arduino IDE yordamida o'rnating. Keyin kodni tuzing va qalqonsiz Arduino -ga yuklang (optokupl RX piniga ulangan, bu yuklashga to'sqinlik qiladi). Arduino -ni USB kabeli orqali quvvatlang (men USB devorli siğil ishlataman).

Agar siz o'z xohishingizga ko'ra kodni o'zgartirmoqchi bo'lsangiz, uning qanday ishlashini qisqacha ko'rib chiqing: Har bir davrada MIDI kiritish o'qiladi. Agar Eslatma yoqilgan yoki o'chirilgan bo'lsa, MyHandleNoteOn yoki MyHandleNoteOff funktsiyalari chaqiriladi. Ular ikkalasi ham kalit raqamining tezligini (ya'ni, tugmani qanchalik bosganingizni) saqlaydigan updateVelocityArray funksiyasini chaqirishadi. Agar tezlik avval saqlanganidan yuqori bo'lsa, mos keladigan LEDning rangi "joriy rang" ga o'rnatiladi. MIDI hodisalari bajarilgandan so'ng, updateLedArray funktsiyasi chaqiriladi. Bu "joriy rang" ni yangilaydi (qizil, yashil va ko'k qiymatlari chiziqli tarzda mustaqil ravishda o'zgaradi, pastki yoki yuqori uchiga yetguncha, chiziqli o'zgarish tezligi tasodifiy songa o'rnatiladi), bosilgan yozuvlarning tezligini asta -sekin pasaytiradi va rangini o'zgartirishi kerak bo'lgan har bir LEDning rang qiymatlarini yangilaydi (yangi eslatma yoki tezlikni pasayishi tufayli). ShowLedArray funktsiyasi ranglarni "piksel" deb nomlangan Adafruit_NeoPixel tuzilishiga o'tkazadi va haqiqiy LEDlar piksellar tarkibidagi ranglarni ko'rsatadi.

5 -qadam: Mumkin bo'lgan yaxshilanishlar …

Loyiha hech qachon tugamaydi. Uni yaxshilash uchun har doim biror narsa qilish mumkin:

  • Protosholda juda oz qismlar bor, bu haqiqatan ham isrofgarchilik; xuddi shunday ta'sirga Arduino Nano va 15x7 teshikli PCB va ba'zi bir ayol pinli sarlavhalar yordamida erishish mumkin.
  • MIDI signallarining bir qismi yo'qoladi. Agar bu NoteOn bo'lsa, mos keladigan LED yonmaydi; agar bu NoteOff bo'lsa, u o'chmaydi (shuning uchun men tezlikni pasaytirdim, bu esa LEDlarning abadiy qolmasligini ta'minlaydi). Men hali ham sababini tushunishga harakat qilyapman. Ehtimol, bu vaqt muammosi va MIDI.read () tez -tez chaqirilishi kerak.
  • MIDI signallarining ba'zilari noto'g'ri o'qilgan, ya'ni noto'g'ri LEDlar yonadi. Yuqoridagi nuqta bilan bog'lanish mumkin. Biroz tergov kerak.
  • O'chirish foydalanuvchilarning ko'p harakatisiz (klaviaturani o'ynashdan tashqari) yoqimli vizual effekt berish uchun mo'ljallangan. Biroq, men o'qiladigan potentsiometrni qo'shishni tasavvur qila olardim (Arduino analog kirishlaridan biri yordamida), siz ranglar o'zgarishi mumkin bo'lgan maksimal tezlikni o'zgartirishingiz mumkin (hozir #MAX_COLOR_CHANGE_SPEED = 20). Yoki ikkita NoteOn hodisasi orasidagi o'rtacha vaqtni o'lchang va MAX_COLOR_CHANGE_SPEED ni mos ravishda o'zgartiring - sekin qo'shiqlarda rang sekinroq o'zgarishi kerak.

6 -qadam: Bajarildi

Arduino -ni USB kabeli orqali quvvatlang (men USB devorli siğil ishlataman). MIDI klaviaturasini MIDI uyasiga ulang va harakatlanishni boshlang. Biroz yengil musiqa ijro etayotganimni tomosha qiling (qanchalik yomon bo'lsa ham, maqsadga muvofiq).

Tavsiya: