MIDI2LED - Efek Cahaya Strip LED Terkendali MIDI: 6 Langkah
MIDI2LED - Efek Cahaya Strip LED Terkendali MIDI: 6 Langkah
Anonim
MIDI2LED - Efek Cahaya Strip LED Terkendali MIDI
MIDI2LED - Efek Cahaya Strip LED Terkendali MIDI

Ini adalah instruksi pertama saya, jadi bersabarlah.

Saya suka membuat musik, dan dalam situasi langsung seperti konser ruang tamu, saya suka jika ada efek cahaya yang selaras dengan apa yang saya mainkan. Jadi saya membuat kotak berbasis Arduino yang membuat strip LED menyala dalam warna acak ketika saya menekan nada di keyboard MIDI saya, dan di mana saya menekan nada itu.

Perlengkapan

  • Arduino Uno
  • Protoshield Arduino
  • jack MIDI
  • dioda 1N4148
  • 6N138 opto coupler
  • resistor: 2x 220 Ohm, 1x 10kOhm, 1x 470Ohm
  • Strip LED WS2812B (60 LED)
  • beberapa kabel sisa
  • tabung panas menyusut
  • casing yang cocok untuk Arduino (saya menggunakan kotak sambungan plastik)

Anda juga akan membutuhkan

  • besi solder dan solder
  • Keyboard MIDI dan kabel MIDI

Langkah 1: Elektronik

Elektronik
Elektronik

Sirkuit ini cukup mudah. Ini terdiri dari input MIDI standar (kiri Arduino) dan koneksi ke strip LED (kanan Arduino). Tempatkan semua bagian di protoshield, ada banyak ruang. Biasanya disarankan untuk menggunakan catu daya eksternal untuk memberi daya pada strip LED, tetapi saya menemukan bahwa ketika Anda bermain, hanya beberapa LED yang menyala pada saat yang bersamaan, jadi ada tidak ada masalah dalam menggunakan Arduino +5V / GND sebagai output daya. (Cobalah untuk menghindari menekan semua tombol secara bersamaan, dan dengan kecepatan penuh.;-)) Jika Anda memutuskan untuk menggunakan catu daya eksternal, cukup sambungkan ke pin Arduino +5V dan GND. Beberapa orang merekomendasikan memasukkan kapasitor 100uF (tidak ditampilkan dalam skema) di antara dua garis ini.

Solder bagian-bagian ke protoshield dan sambungkan strip LED seperti yang ditunjukkan pada skema.

Langkah 2: Menghubungkan Strip LED

Menghubungkan Strip LED
Menghubungkan Strip LED

Penting untuk menghubungkan ujung kanan - ujung input - strip LED ke sirkuit. Strip saya memiliki konektor perempuan sebagai input, dan memiliki segitiga kecil sepanjang menunjuk jauh dari input. Pada output, ada konektor laki-laki (untuk dapat menghubungkannya ke strip lain, yang tidak kita butuhkan), jadi saya memotongnya dan menyoldernya ke tiga kabel yang berasal dari Arduino. Gunakan tabung heat shrink untuk mengikat ketiga kabel ke strip LED bersama-sama, dan membuatnya tidak terlalu terlihat.

Strip LED yang saya gunakan dilengkapi dengan pita perekat di bagian belakangnya, sehingga dapat dengan mudah direkatkan ke bagian belakang keyboard MIDI.

Langkah 3: Menyesuaikan Proyek ke Keyboard Anda

Menyesuaikan Proyek ke Keyboard Anda
Menyesuaikan Proyek ke Keyboard Anda
Menyesuaikan Proyek ke Keyboard Anda
Menyesuaikan Proyek ke Keyboard Anda

Anda mungkin harus menyesuaikan strip LED dan kode Arduino ke keyboard Anda. Milik saya memiliki 76 tombol, dan panjang strip hampir persis dengan lebar keyboard. Jika Anda memiliki mis. 61 kunci, Anda mungkin memerlukan strip yang lebih pendek. Strip LED dapat dipotong di antara dua LED mana pun. Pastikan Anda memotong bagian yang benar, ia memiliki ujung input (dengan konektor perempuan) dan ujung keluaran (dengan konektor laki-laki), Anda harus menjaga ujung input. Dalam kode, ubah #defines untuk

  • NUMBER_OF_LEDS ke jumlah LED yang tersisa di strip Anda setelah memotong ujungnya,
  • NUMBER_OF_KEYS ke jumlah tombol pada keyboard Anda, dan
  • MIN_KEY ke nomor nada MIDI dari kunci terendah Anda. Anda mungkin menemukan ini di panduan pengguna keyboard; atau gunakan alat yang menampilkan nomor catatan MIDI, seperti KMidiMon untuk Linux, atau Pocket MIDI untuk windows atau Mac; atau coba nilai yang berbeda hingga perangkat merespons semua tombol di keyboard Anda

Langkah 4: Kode Arduino

Kode Arduino menggunakan perpustakaan MIDI (v4.3.1) oleh Forty Seven Effects dan perpustakaan Adafruit NeoPixel (v1.3.4) oleh Adafruit. Instal perpustakaan ini menggunakan Arduino IDE. Kemudian kompilasi kode dan unggah ke Arduino tanpa pelindung terhubung (optocoupler terhubung ke pin RX, yang menghambat unggahan). Nyalakan Arduino melalui kabel USB (saya menggunakan kutil dinding USB).

Jika Anda ingin memodifikasi kode sesuai keinginan Anda, berikut adalah gambaran singkat cara kerjanya: Di setiap loop, input MIDI dibacakan. Jika acara Note On atau Note Off telah diterima, fungsi MyHandleNoteOn atau MyHandleNoteOff akan dipanggil. Keduanya memanggil fungsi updateVelocityArray, yang menyimpan kecepatan (yaitu seberapa keras Anda menekan tombol) dari nomor kunci. Jika kecepatan lebih tinggi dari yang disimpan sebelumnya, warna LED yang sesuai diatur ke "warna saat ini". Setelah kejadian MIDI ditangani, fungsi updateLedArray dipanggil. Ini memperbarui "warna saat ini" (nilai merah, hijau dan biru yang berubah secara independen secara linier, hingga ujung bawah atau atas tercapai, di mana kecepatan untuk perubahan linier diatur ke angka acak), perlahan-lahan mengurangi kecepatan nada yang ditekan, dan memperbarui nilai warna setiap LED yang harus berubah warnanya (karena ketukan nada baru, atau pengurangan kecepatan). Fungsi showLedArray mentransfer warna ke struktur Adafruit_NeoPixel yang disebut "piksel" dan membuat LED sebenarnya menunjukkan warna dalam struktur piksel.

Langkah 5: Kemungkinan Peningkatan…

Sebuah proyek tidak pernah selesai. Selalu ada sesuatu yang dapat dilakukan untuk memperbaikinya:

  • Protoshield berisi begitu sedikit bagian itu benar-benar sia-sia; seseorang dapat dengan mudah mencapai efek yang sama dengan Arduino Nano dan PCB lubang 15x7 ditambah beberapa pin header perempuan.
  • Beberapa sinyal MIDI hilang. Jika itu NoteOn, LED yang sesuai tidak akan menyala; jika itu NoteOff, itu tidak akan padam (itulah sebabnya saya memperkenalkan pengurangan kecepatan, yang memastikan bahwa LED tidak akan tetap menyala tanpa batas). Aku masih mencoba mencari tahu alasannya. Mungkin ini masalah waktu, dan MIDI.read() harus dipanggil lebih sering.
  • Beberapa sinyal MIDI salah dibaca, yaitu LED yang salah menyala. Bisa dihubungkan dengan poin di atas. Perlu beberapa penyelidikan.
  • Sirkuit ini dirancang untuk memberikan efek visual yang menyenangkan tanpa banyak interaksi pengguna (selain memainkan keyboard). Namun, saya bisa membayangkan menambahkan potensiometer yang dibacakan (menggunakan salah satu input analog Arduino) yang dengannya Anda dapat mengubah kecepatan maksimum perubahan warna (saat ini #didefinisikan sebagai MAX_COLOR_CHANGE_SPEED = 20). Atau ukur waktu rata-rata antara dua acara NoteOn, dan ubah MAX_COLOR_CHANGE_SPEED sesuai dengan itu - dalam lagu lambat, warnanya akan berubah lebih lambat.

Langkah 6: Selesai

Nyalakan Arduino melalui kabel USB (saya menggunakan kutil dinding USB). Hubungkan keyboard MIDI Anda ke jack MIDI, dan mulai rockin '. Tonton saya memainkan sedikit musik ringan (permainan kata, seburuk itu, dimaksudkan).

Direkomendasikan: