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

مركب Wii Nunchuck: 4 خطوات
مركب Wii Nunchuck: 4 خطوات

فيديو: مركب Wii Nunchuck: 4 خطوات

فيديو: مركب Wii Nunchuck: 4 خطوات
فيديو: The Wii Nunchuck Review 2024, يوليو
Anonim
مركب وي نونتشوك
مركب وي نونتشوك

عالم موسيقى Wii:

قررت أخيرًا أن أجمع حبي للموسيقى مع القليل من الخبرة في البرمجة التي اكتسبتها خلال السنوات القليلة الماضية. لقد كنت مهتمًا بإنشاء آلة خاصة بي منذ أن رأيت حديثًا من Tod Machover في مدرستي. إذا لم تكن معتادًا على عمله ، فامنحه Google ، لأنه كان يتخطى حدود الموسيقى والتكنولوجيا ، فضلاً عن تقاطعها لعدد من السنوات حتى الآن (مختبرات MIT الإعلامية ، Rock Band ، Guitar Hero وما إلى ذلك.).

لقد قمت بتوصيل Nunchuck الخاص بي بـ Arduino Uno الذي يعمل على مكتبة Mozzi لتركيب الصوت بسبب الاستخدام الموثق جيدًا لكليهما عبر الإنترنت. لسهولة الاستخدام ، أستخدم محول لوحة توصيل WiiChuck الذي يتم توصيله مباشرة في Arduino. يلعب هذا المشروع البسيط نسبيًا سلسلة من النغمات اعتمادًا على Pitch (YZ-Plane) المقاسة من مقياس التسارع في Nunchuck. يتم تعيين قيمة Y لعصا التحكم على الكسب لجعل طبقة الصوت أعلى أو أكثر ليونة. كما أنه يغير الحبال اعتمادًا على الزر Z-Button ويقوم بتشغيل مظروف تعديل الطور عند الضغط على الزر C. ثم يتم تعديل تردد الظرف مع قياس الأسطوانة من Nunchuck (الصورة تدور بمقبض).

موارد:

  • 1 × اردوينو أونو
  • 1 × Wii Nunchuck
  • 1 × محول WiiChuck
  • 1 × متوافق مع اللوح 3.5 مللي متر مقبس ستريو أنثى
  • 1 × 3.5 مم كابل صوت
  • 1 × مكبر صوت من نوع ما (يمكنك توصيل الجرس في البداية لاختباره
  • 4-5 أسلاك بألوان مختلفة

اختياري لكن يوصى به:

  • 1 × 330 أوم المقاوم
  • 1 × 0.1 فائق التوهج مكثف

الخطوة 1: توصيل جهاز NunChuck الخاص بك

توصيل NunChuck الخاص بك
توصيل NunChuck الخاص بك
توصيل NunChuck الخاص بك
توصيل NunChuck الخاص بك
توصيل NunChuck الخاص بك
توصيل NunChuck الخاص بك

نسخ / لصق فئة WiiChuck من Arduino Playground. سنحتاج إلى الإصدار مع إعلان دبابيس PWR و GND. احفظه باسم WiiChuck.h واحتفظ به في نفس الدليل كمشروعك.

الآن انسخ / الصق ما يلي في Arduino IDE وقم بتحميله.

# تضمين "Wire.h" // # تضمين "WiiChuckClass.h" // على الأرجح WiiChuck.h لبقيتنا. # تضمين "WiiChuck.h" WiiChuck ظرف = WiiChuck () ؛

الإعداد باطل() {

// nunchuck_init () ؛ Serial.begin (115200) ؛ chuck.begin () ، chuck.update () ، //chuck.calibrateJoy () ، }

حلقة فارغة() {

تأخير (20) ؛ chuck.update () ،

Serial.print (chuck.readPitch ()) ؛

Serial.print ("،") ؛ Serial.print (chuck.readRoll ()) ؛ Serial.print ("،") ؛

Serial.print (chuck.readJoyX ()) ؛

Serial.print ("،") ؛ Serial.print (chuck.readJoyY ()) ؛ Serial.print ("،") ؛

إذا (chuck.buttonZ) {

Serial.print ("Z") ؛ } else {Serial.print ("-") ؛ }

Serial.print ("،") ؛

// ليست دالة // إذا (chuck.buttonC ()) {

if (chuck.buttonC) {Serial.print ("C") ؛ } else {Serial.print ("-") ؛ }

Serial.println () ،

}

افصل Arduino عن الطاقة وقم بتوصيل محول WiiChuck الخاص بك إلى Analog Pins 2-5 على Arduino.

قم بتوصيله بالطاقة مرة أخرى وتأكد من إرسال قيم Nunchuck إلى Arduino وطباعتها على Serial Monitor. إذا كنت لا ترى أي تغيير في الأرقام ، فتأكد من أن الاتصالات جيدة ، وأن Nunchuck يعمل. قضيت بضعة أيام في محاولة لإصلاح البرنامج قبل أن أدرك أن سلك Nunchuck الخاص بي قد تم كسره داخليًا!

بعد ذلك ، سنربط كل شيء بـ Mozzi…

الخطوة الثانية: التعرف على موزي

التعرف على موزي
التعرف على موزي

أولاً ، ستحتاج إلى تنزيل أحدث إصدار من Mozzi. تغذيها التبرعات ، لذا تبرع إذا شعرت برغبة شديدة وقم بتنزيل المكتبة. يمكنك إضافته إلى مكتباتك بسهولة عن طريق اختيار Sketch> Libraries> Add. ZIP Library … من Arduino IDE.

سنقوم الآن بتوصيل مقبس سماعة الرأس مقاس 3.5 مم بلوحة التجارب و Arduino حتى نتمكن من الاتصال به بسهولة لاحقًا (يمكنك فصل Nunchuck والمحول في الوقت الحالي).

  1. قم بتوصيل جاك الخاص بك بالزاوية اليمنى السفلية من اللوحة لإفساح المجال للباقي. يجب أن يكون عرض المقبس 5 دبابيس.
  2. قم بتوصيل الصف الأوسط بالأرض بسلك توصيل.
  3. قم بتوصيل الصف العلوي للمقبس بصف فارغ أعلاه (الصف 10 في الصورة). هذا هو السلك الذي يحمل الإشارة الصوتية.
  4. قم بتوصيل Digital Pin ~ 9 بالصف 10 أيضًا.
  5. قم بتوصيل الأرض على Arduino بالسكة الأرضية على لوح التجارب.
  6. لا تحتاج بالضرورة إلى استخدام المقاوم والمكثف حتى الآن ، ولكن قد تلاحظ صريرًا عالي النبرة إذا لم تقم بذلك. يعمل كمرشح تمرير منخفض للتخلص من الترددات التي تزيد عن 15 كيلو هرتز.

افتح مخطط Mozzi's Sinewave في Arduino IDE عن طريق اختيار ملف> أمثلة> Mozzi> أساسيات> موجة Sinewave. هذا هو في الأساس ما يعادل Mozzi لـ "Hello World".

قم بتحميل الرسم التخطيطي وقم بتوصيل مكبر الصوت بلوحة التجارب. يمكنك استخدام الجرس أيضًا إذا لم تقم بتوصيل اللوح بمقبس الصوت حتى الآن.

إذا لم تسمع صوت A4 ثابتًا (440 هرتز) قادمًا من مكبر الصوت ، فتأكد من أن جميع اتصالاتك جيدة وحاول مرة أخرى.

بعد ذلك ، سنقوم بتوصيل Nunchuck بـ Arduino!

الخطوة 3: وضع كل ذلك معًا

ضع كل شيء معا
ضع كل شيء معا

الآن سنستخدم قيمة اللف من Nunchuck لتغيير تردد الموجة الجيبية.

من Arduino IDE اختر ملف> أمثلة> Mozzi> أجهزة الاستشعار> تردد بيزو

سنحتاج إلى إضافة بضعة أسطر إلى هذا الرمز حتى يعمل مع Nunchuck. أضف تضمينًا إلى مكتبة WiiChuck وقم بإنشاء مثيل لكائن WiiChuck يسمى chuck. يمكنك أيضًا التعليق على إعلان PIEZO_PIN أو حذفه فقط لأننا لن نستخدمه.

# تضمين "WiiChuck. H"

WiiChuck ظرف = WiiChuck () ؛ // const int PIEZO_PIN = 3 ؛ // ضبط دبوس الإدخال التناظري للبيزو

الآن في الإعداد ، سنحتاج إلى إضافة ما يلي:

chuck.begin () ؛ chuck.update () ؛

وأخيرًا سنحتاج إلى تغيير بعض الأشياء في updateControl ():

void updateControl () {

chuck.update () ، // الحصول على أحدث بيانات nunchuck // قراءة بيزو // int piezo_value = mozziAnalogRead (PIEZO_PIN) ؛ // القيمة هي 0-1023 int piezo_value = الخريطة (علق على السطر الذي يحدد piezo_value وأضف ما يلي أدناه:

void updateControl () {chuck.update () ؛ // الحصول على أحدث بيانات nunchuck // قراءة بيزو // int piezo_value = mozziAnalogRead (PIEZO_PIN) ؛ // القيمة هي 0-1023 // لا نحتاج إلى السطر أعلاه ولكن لماذا لا نعيّن لفة إلى نفس النطاق؟ int piezo_value = خريطة (chuck.readRoll () ، -180 ، 180 ، 0 1023) ؛

قم بتحميل الكود ويجب أن يتوافق التردد مع Nunchuck's Roll. حاول تعيينه إلى نطاقات تردد مختلفة. إذا لم تكن قد لاحظت أدناه في الرسم التخطيطي ، فسيتم ضرب القيمة من المستشعر في 3 ، لذا فنحن نلعب حاليًا نغمات من 0 هرتز إلى حوالي 3000 هرتز.

الخطوة 4: اللمسات الأخيرة

اللمسات الأخيرة
اللمسات الأخيرة

أنت الآن جاهز لتحميل الإصدار الأخير من الكود الذي جمعته معًا من الخطوة السابقة وبعض أمثلة Mozzi (على وجه الدقة ، Phase_Mod_Envelope ، و Control_Gain). لتسهيل حياتي ، قمت أيضًا بتضمين ملف يسمى Pitches.h والذي يحدد ببساطة قيم التردد بأسماء الملاحظات المألوفة (مثل NOTE_A4).

أقترح قراءة وثائق Mozzi لأن الكثير من الشفرة مباشرة من الأمثلة باستثناء رمز Nunchuck.

هنا رابط إلى مستودع Git الخاص بي. يتم تضمين جميع الملفات المهمة باستثناء مكتبة Mozzi التي يجب أن تحصل عليها من موقع الويب الخاص بهم حتى يتم تحديثها. قم بتنزيل WiiMusic.ino وقم بتحميله على جهازك لتسمع صوته. أقترح عليك التلاعب بالمعلمات التي أقوم بتغييرها (تغيير نطاقات الخريطة ، قسمة / ضرب الأرقام ، إلخ.) لأن هذه هي الطريقة التي وجدت بها الصوت المعين الذي كنت أبحث عنه.

انعكاس

لا أشعر أنني انتهيت تمامًا. هذا لا يعني أنني غير راضٍ عن المشروع أو الصوت الذي يصدره ، لكنني أشعر أنني غطست أصابع قدمي للتو في عالم جديد أريد مواصلة استكشافه ، لذا سأضيف فرعًا جديدًا من هذا المشروع بينما أواصل للعمل.

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

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

موصى به: