جدول المحتويات:

MIDI2LED - تأثير شريط إضاءة LED يتم التحكم فيه بواسطة MIDI: 6 خطوات
MIDI2LED - تأثير شريط إضاءة LED يتم التحكم فيه بواسطة MIDI: 6 خطوات

فيديو: MIDI2LED - تأثير شريط إضاءة LED يتم التحكم فيه بواسطة MIDI: 6 خطوات

فيديو: MIDI2LED - تأثير شريط إضاءة LED يتم التحكم فيه بواسطة MIDI: 6 خطوات
فيديو: Консультант от бога Tg: cadrolikk 2024, شهر نوفمبر
Anonim
MIDI2LED - تأثير شريط إضاءة LED يتم التحكم فيه بواسطة MIDI
MIDI2LED - تأثير شريط إضاءة LED يتم التحكم فيه بواسطة MIDI

هذا هو أول تدريب لي ، لذا احمل معي.

أحب صنع الموسيقى ، وفي المواقف الحية مثل الحفلات الموسيقية في غرفة المعيشة ، أحبها عندما تكون هناك تأثيرات ضوئية متزامنة مع ما أعزفه. لذلك قمت ببناء صندوق قائم على Arduino يجعل شريط LED يضيء بلون عشوائي عندما أضرب ملاحظة على لوحة مفاتيح MIDI الخاصة بي ، وحيث أضربت النغمة.

اللوازم

  • اردوينو اونو
  • اردوينو بروتوشيلد
  • مقبس MIDI
  • 1N4148 ديود
  • 6N138 المقرنة البصرية
  • المقاومات: 2 × 220 أوم ، 1 × 10 كيلو أوم ، 1 × 470 أوم
  • شريط WS2812B LED (60 ليد)
  • بعض الأسلاك المتبقية
  • أنابيب الانكماش الحراري
  • غلاف مناسب لـ Arduino (أستخدم صندوق تقاطع بلاستيكي)

سوف تحتاج أيضا

  • لحام الحديد ولحام
  • لوحة مفاتيح MIDI وكابل MIDI

الخطوة 1: الإلكترونيات

الإلكترونيات
الإلكترونيات

الدائرة واضحة ومباشرة. يتكون من إدخال MIDI قياسي (يسار Arduino) والاتصال بشريط LED (يمين Arduino). ضع جميع الأجزاء على الدرع الأولي ، هناك مساحة كبيرة. يوصى عمومًا باستخدام مصدر طاقة خارجي لتشغيل شريط LED ، لكنني وجدت أنه عند اللعب ، يتم تشغيل عدد قليل فقط من مصابيح LED في نفس الوقت ، لذلك كان هناك لا توجد مشكلة في استخدام Arduino + 5V / GND كإخراج للطاقة. (حاول تجنب الضغط على جميع المفاتيح في نفس الوقت ، وبسرعة كاملة. ؛-)) إذا قررت استخدام مصدر طاقة خارجي ، فما عليك سوى توصيله بدبابيس Arduino + 5V و GND. يوصي بعض الأشخاص بإدخال مكثف 100 فائق التوهج (غير موضح في التخطيطي) بين هذين الخطين.

قم بلحام الأجزاء بالدرع الأولي وقم بتوصيل شريط LED كما هو موضح في التخطيطي.

الخطوة 2: توصيل شريط LED

توصيل شريط LED
توصيل شريط LED

من المهم توصيل الطرف الأيمن - طرف الإدخال - لشريط LED بالدائرة. يحتوي الشريط الخاص بي على موصل أنثى كمدخل ، ويحتوي على مثلثات صغيرة تشير بعيدًا عن المدخلات. في الإخراج ، كان هناك موصل ذكر (لتتمكن من توصيله بشريط آخر ، وهو ما لا نحتاجه) ، لذلك قمت بقطع ذلك ولحمه في الكابلات الثلاثة القادمة من Arduino. استخدم أنابيب الانكماش الحراري لربط الكابلات الثلاثة بشريط LED معًا ، ولجعلها أقل وضوحًا.

يأتي شريط LED الذي استخدمته مع شريط لاصق في الخلف ، بحيث يمكن لصقه بسهولة على الجزء الخلفي من لوحة مفاتيح MIDI.

الخطوة 3: تكييف المشروع مع لوحة المفاتيح الخاصة بك

تكييف المشروع مع لوحة المفاتيح الخاصة بك
تكييف المشروع مع لوحة المفاتيح الخاصة بك
تكييف المشروع مع لوحة المفاتيح الخاصة بك
تكييف المشروع مع لوحة المفاتيح الخاصة بك

قد تضطر إلى تكييف شريط LED وكود Arduino مع لوحة المفاتيح. يحتوي المنجم على 76 مفتاحًا ، ويبلغ طول الشريط تقريبًا عرض لوحة المفاتيح. إذا كان لديك على سبيل المثال 61 مفتاحًا ، قد تحتاج إلى شريط أقصر. يمكن قطع شريط LED بين أي مصباحين. فقط تأكد من قطع الجزء الصحيح ، وله نهاية إدخال (مع موصل أنثى) ونهاية إخراج (مع موصل ذكر) ، فأنت بحاجة إلى الاحتفاظ بنهاية الإدخال. في الكود ، قم بتغيير #defines ل

  • NUMBER_OF_LEDS إلى عدد مصابيح LED المتبقية في الشريط الخاص بك بعد قطع النهاية ،
  • NUMBER_OF_KEYS إلى عدد المفاتيح على لوحة المفاتيح و
  • MIN_KEY إلى رقم درجة MIDI لأدنى مفتاح. قد تجد هذا في دليل مستخدم لوحة المفاتيح ؛ أو استخدم أداة تعرض رقم ملاحظة MIDI ، مثل KMidiMon لنظام التشغيل Linux أو Pocket MIDI لنظام التشغيل windows أو Mac ؛ أو جرب قيمًا مختلفة حتى يستجيب الجهاز لجميع المفاتيح الموجودة على لوحة المفاتيح

الخطوة 4: كود اردوينو

يستخدم كود Arduino مكتبة MIDI (الإصدار 4.3.1) بواسطة Forty Seven Effects ومكتبة Adafruit NeoPixel (الإصدار 1.3.4) بواسطة Adafruit. قم بتثبيت هذه المكتبات باستخدام Arduino IDE. ثم قم بتجميع الكود وتحميله على Arduino دون توصيل الدرع (يتم توصيل optocoupler بدبوس RX ، مما يعيق التحميل). قم بتشغيل Arduino عبر كابل USB (أستخدم ثؤلول جدار USB).

إذا كنت ترغب في تعديل الرمز حسب رغبتك ، فإليك نظرة عامة موجزة عن كيفية عمله: في كل حلقة ، تتم قراءة إدخال MIDI. إذا تم تلقي حدث "تشغيل الملاحظة" أو "إيقاف تشغيل الملاحظة" ، يتم استدعاء وظائف MyHandleNoteOn أو MyHandleNoteOff. كلاهما يستدعي وظيفة updateVelocityArray ، التي تخزن السرعة (أي مدى صعوبة الضغط على المفتاح) لرقم المفتاح. إذا كانت السرعة أعلى مما تم تخزينه من قبل ، فسيتم ضبط لون مؤشر LED المقابل على "اللون الحالي". بعد معالجة أحداث MIDI ، يتم استدعاء الوظيفة updateLedArray. يقوم هذا بتحديث "اللون الحالي" (قيم الأحمر والأخضر والأزرق التي تتغير بشكل مستقل بطريقة خطية ، حتى يتم الوصول إلى النهاية السفلية أو العليا ، وعند هذه النقطة يتم ضبط سرعة التغيير الخطي على رقم عشوائي) ، يقلل ببطء من سرعة الملاحظات المضغوطة ، ويحدّث قيم اللون لكل مصباح LED يجب أن يغير لونه (بسبب ضرب ملاحظة جديدة ، أو تقليل السرعة). تقوم وظيفة showLedArray بنقل الألوان إلى هيكل Adafruit_NeoPixel المسمى "البكسل" وتجعل مصابيح LED الفعلية تُظهر الألوان في بنية البكسل.

الخطوة 5: التحسينات الممكنة …

مشروع لا ينتهي ابدا. هناك دائمًا شيء يمكن القيام به لتحسينه:

  • يحتوي الدرع الأولي على عدد قليل جدًا من الأجزاء ، وهو حقًا مضيعة ؛ يمكن للمرء بسهولة تحقيق نفس التأثير باستخدام Arduino Nano و 15x7 فتحات PCB بالإضافة إلى بعض رؤوس الدبوس الأنثوية.
  • تضيع بعض إشارات MIDI. إذا كان NoteOn ، فلن يضيء مؤشر LED المقابل ؛ إذا كانت NoteOff ، فلن تنطفئ (لهذا السبب قدمت تقليل السرعة ، مما يضمن عدم بقاء مصابيح LED إلى أجل غير مسمى). ما زلت أحاول معرفة السبب. من المحتمل أنها مشكلة توقيت ، وينبغي استدعاء MIDI.read () في كثير من الأحيان.
  • تمت قراءة بعض إشارات MIDI بشكل خاطئ ، أي تضيء مصابيح LED الخاطئة. يمكن أن تكون مرتبطة بالنقطة أعلاه. يحتاج إلى بعض التحقيق.
  • تم تصميم الدائرة لإعطاء تأثير مرئي لطيف دون الكثير من تفاعل المستخدم (بصرف النظر عن العزف على لوحة المفاتيح). ومع ذلك ، يمكنني تخيل إضافة مقياس جهد تمت قراءته (باستخدام أحد مدخلات Arduino التناظرية) والتي يمكنك من خلالها تغيير السرعة القصوى التي تتغير بها الألوان (حاليًا # حدد على أنه MAX_COLOR_CHANGE_SPEED = 20). أو قم بقياس متوسط الوقت بين حدثين من أحداث NoteOn ، وقم بتغيير MAX_COLOR_CHANGE_SPEED وفقًا لذلك - في الأغاني البطيئة ، يجب أن يتغير اللون بشكل أبطأ.

الخطوة 6: تم

قم بتشغيل Arduino عبر كابل USB (أستخدم ثؤلول جدار USB). قم بتوصيل لوحة مفاتيح MIDI بمقبس MIDI ، وابدأ موسيقى الروك. شاهدني أعزف القليل من الموسيقى الخفيفة (التورية ، على الرغم من أنها سيئة كما هي ، مقصودة).

موصى به: