İçindekiler:

MIDI2LED - MIDI Kontrollü LED Şerit Işık Efekti: 6 Adım
MIDI2LED - MIDI Kontrollü LED Şerit Işık Efekti: 6 Adım

Video: MIDI2LED - MIDI Kontrollü LED Şerit Işık Efekti: 6 Adım

Video: MIDI2LED - MIDI Kontrollü LED Şerit Işık Efekti: 6 Adım
Video: Очередной рейс (1958) фильм 2024, Kasım
Anonim
MIDI2LED - MIDI Kontrollü LED Şerit Işık Efekti
MIDI2LED - MIDI Kontrollü LED Şerit Işık Efekti

Bu benim ilk talimatım, bu yüzden benimle kal.

Müzik yapmayı seviyorum ve oturma odası konserleri gibi canlı ortamlarda, çaldıklarımla ışık efektlerinin senkronize olmasını seviyorum. Bu yüzden, MIDI klavyemde bir notaya bastığımda ve notaya bastığım yerde bir LED şeridinin rastgele bir renkte yanmasını sağlayan Arduino tabanlı bir kutu yaptım.

Gereçler

  • Arduino Uno'su
  • Arduino ön kalkanı
  • MIDI jakı
  • 1N4148 diyot
  • 6N138 opto çoğaltıcı
  • dirençler: 2x 220 Ohm, 1x 10kOhm, 1x 470Ohm
  • WS2812B LED şerit (60 LED)
  • bazı artık teller
  • ısıyla daralan makaron
  • Arduino için uygun kasa (plastik bağlantı kutusu kullanıyorum)

Ayrıca ihtiyacınız olacak

  • havya ve lehim
  • MIDI klavye ve MIDI kablosu

Adım 1: Elektronik

Elektronik
Elektronik

Devre oldukça basittir. Standart bir MIDI girişinden (Arduino'nun solunda) ve LED şeridine bağlantıdan (Arduino'nun sağında) oluşur. Tüm parçaları ön kalkanın üzerine yerleştirin, çok yer var. LED şeridine güç sağlamak için genellikle harici bir güç kaynağı kullanılması önerilir, ancak oynadığınızda, aynı anda yalnızca birkaç LED'in açık olduğunu gördüm, bu yüzden Arduino +5V / GND'yi güç çıkışı olarak kullanmakta sorun yok. (Tüm tuşlara aynı anda ve tam hızda basmaktan kaçının.;-)) Harici bir güç kaynağı kullanmaya karar verirseniz, Arduino +5V ve GND pinlerine bağlamanız yeterlidir. Bazı insanlar bu iki çizgi arasına 100 uF kapasitör (şematikte gösterilmemiştir) yerleştirilmesini önerir.

Parçaları ön kalkana lehimleyin ve LED şeridi şematikte gösterildiği gibi bağlayın.

Adım 2: LED Şeridi Bağlama

LED Şeridi Bağlama
LED Şeridi Bağlama

LED şeridin sağ ucunu - giriş ucunu - devreye bağlamak önemlidir. Şeridimde giriş olarak dişi bir konektör var ve baştan sona girişten uzağa bakan küçük üçgenler var. Çıkışta bir erkek konektör vardı (ihtiyacımız olmayan başka bir şeride bağlayabilmek için), bu yüzden onu kestim ve Arduino'dan gelen üç kabloya lehimledim. Üç kabloyu LED şeridine bağlamak ve daha az görünür hale getirmek için ısıyla daralan makaron kullanın.

Kullandığım LED şeridin arkasında yapışkan bant var, böylece MIDI klavyenin arkasına kolayca yapıştırılabilir.

Adım 3: Projeyi Klavyenize Uyarlama

Projeyi Klavyenize Uyarlama
Projeyi Klavyenize Uyarlama
Projeyi Klavyenize Uyarlama
Projeyi Klavyenize Uyarlama

LED şeridi ve Arduino kodunu klavyenize uyarlamanız gerekebilir. Benimki 76 tuşa sahip ve şeridin uzunluğu neredeyse tam olarak klavyenin genişliği. Eğer 61 tuş, daha kısa bir şeride ihtiyacınız olabilir. LED şerit herhangi iki LED arasında kesilebilir. Sadece doğru parçayı kestiğinizden emin olun, bunun bir giriş ucu (dişi konektörlü) ve bir çıkış ucu (erkek konektörlü) vardır, giriş ucunu tutmanız gerekir. Kodda, #defines öğesini değiştirin için

  • Ucu kestikten sonra şeridinizde kalan LED sayısına NUMBER_OF_LEDS,
  • Klavyenizdeki tuş sayısına NUMBER_OF_KEYS ve
  • MIN_KEY, en düşük anahtarınızın MIDI adım numarasına. Bunu klavyenin kullanım kılavuzunda bulabilirsiniz; veya Linux için KMidiMon veya Windows veya Mac için Pocket MIDI gibi MIDI not numarasını görüntüleyen bir araç kullanın; veya cihaz klavyenizdeki tüm tuşlara yanıt verene kadar farklı değerler deneyin

Adım 4: Arduino Kodu

Arduino kodu, Forty Seven Effects'in MIDI kitaplığını (v4.3.1) ve Adafruit'in Adafruit NeoPixel kitaplığını (v1.3.4) kullanır. Arduino IDE'yi kullanarak bu kütüphaneleri kurun. Ardından kodu derleyin ve kalkan bağlı olmadan Arduino'ya yükleyin (optocoupler, yüklemeyi engelleyen RX pinine bağlıdır). Arduino'ya USB kablosuyla güç verin (bir USB duvar siğili kullanıyorum).

Kodu beğeninize göre değiştirmek isterseniz, nasıl çalıştığına kısa bir genel bakış: Her döngüde MIDI girişi okunur. Bir Note On veya Note Off olayı alınmışsa, MyHandleNoteOn veya MyHandleNoteOff işlevleri çağrılır. Her ikisi de, anahtar numarasının hızını (yani tuşa ne kadar sert bastığınızı) depolayan updateVelocityArray işlevini çağırır. Hız daha önce kaydedilenden daha yüksekse, ilgili LED'in rengi "geçerli renk" olarak ayarlanır. MIDI olayları işlendikten sonra updateLedArray işlevi çağrılır. Bu, "geçerli rengi" günceller (alt veya üst uca ulaşılana kadar, lineer bir şekilde bağımsız olarak değişen kırmızı, yeşil ve mavi değerleri, bu noktada lineer değişimin hızı rastgele bir sayıya ayarlanır), basılan notaların hızını yavaşça azaltır ve rengini değiştirmesi gereken her LED'in renk değerlerini günceller (yeni nota vuruşu veya hızın azalması nedeniyle). showLedArray işlevi, renkleri "piksel" adı verilen Adafruit_NeoPixel yapısına aktarır ve gerçek LED'lerin renkleri piksel yapısında göstermesini sağlar.

Adım 5: Olası Geliştirmeler…

Bir proje asla bitmez. Bunu geliştirmek için her zaman yapılabilecek bir şey vardır:

  • Ön kalkan o kadar az parça içeriyor ki, gerçekten israf; Arduino Nano ve 15x7 delikli PCB artı bazı dişi pin başlıkları ile aynı etkiyi kolayca elde edebilirsiniz.
  • MIDI sinyallerinden bazıları kayboluyor. Bu bir NoteOn ise, ilgili LED yanmaz; eğer bir NoteOff ise, sönmeyecektir (bu yüzden, LED'lerin süresiz olarak açık kalmamasını sağlayan hız azaltmayı tanıttım). Hala nedenini anlamaya çalışıyorum. Muhtemelen bu bir zamanlama sorunudur ve MIDI.read() daha sık çağrılmalıdır.
  • MIDI sinyallerinden bazıları yanlış okunmuş, yani yanlış LED'ler yanıyor. Yukarıdaki nokta ile bağlantılı olabilir. Biraz araştırma gerekiyor.
  • Devre, çok fazla kullanıcı etkileşimi olmadan (klavye çalmanın dışında) hoş bir görsel efekt verecek şekilde tasarlanmıştır. Bununla birlikte, renklerin değiştiği maksimum hızı değiştirebileceğiniz (şu anda MAX_COLOR_CHANGE_SPEED = 20 olarak #tanımlanmıştır) okunan (Arduino'nun analog girişlerinden birini kullanarak) bir potansiyometre eklemeyi hayal edebiliyorum. Veya iki NoteOn olayı arasındaki ortalama süreyi ölçün ve buna göre MAX_COLOR_CHANGE_SPEED'i değiştirin - yavaş şarkılarda renk daha yavaş değişmelidir.

Adım 6: Bitti

Arduino'ya USB kablosuyla güç verin (bir USB duvar siğili kullanıyorum). MIDI klavyenizi MIDI jakına bağlayın ve sallamaya başlayın. Beni biraz hafif müzik çalarken izleyin (ne kadar kötü olursa olsun, amaçlanan kelime oyunu).

Önerilen: