في هذا المشروع ، سنقوم ببناء قطعة ترفيهية باستخدام Arduino. لدينا جميعًا هذه العادة في النقر على Table أو Pen لإنشاء أي موسيقى عشوائية. بالطبع قد لا يُنظر إليه على أنه سلوك جيد ، لكننا جميعًا نستمتع بفعله مرة واحدة على الأقل. ومن ثم فكرت في الانتقال إلى المستوى التالي باستخدام قدرة Arduino على تشغيل النغمات. بمجرد إنشاء هذا المشروع ، ستكون قادرًا على توليد نغمات من خلال النقر بأصابعك على أي شيء موصل وإنشاء إيقاعاتك الخاصة ، مثل العزف على البيانو على راحة يدك. يبدو رائعًا حقًا ، فلنقم ببنائه.
المكونات المطلوبة:
المواد المطلوبة لهذا المشروع مذكورة أدناه ، وليس إلزاميًا التمسك بها. بمجرد فهم المفهوم ، يمكنك استخدام طريقتك الخاصة في بنائه.
- اردويني برو ميني
- المتحدث Peizo
- جهاز الاستشعار المرن
- قفازات الأصابع
- 10 كيلو مقاومات
- BC547 الترانزستورات
- بطارية 9 فولت
مخطط الدائرة وشرحها:
يظهر الرسم التخطيطي لدائرة بيانو بالم اردوينو أدناه.
يستخدم المشروع ما مجموعه أربعة أجهزة استشعار ، أي مستشعران مرنان وزوجان من دارلينجتون يعملان كجهاز استشعار باللمس. لقد استخدمنا أيضًا اثنين من المقاومات المنسدلة R1 و R2 بقيمة 10 كيلو لكل منهما ، والتي ستعمل كمقاوم سحب لأسفل لمستشعر Flex. هنا يتم استخدام مستشعر Flex لتوليد ثلاث نغمات مختلفة باستخدام إصبع واحد ، بناءً على مدى انثناءه. حتى نتمكن من إنتاج 6 أصوات باستخدام إصبعين. تعرف هنا على Flex Sensor.
زوج دارلينجتون:
قبل أن نبدأ من المهم أن نعرف ما هو دارلينجتون وكيف يعمل بالضبط في مشروعنا. يمكن تعريف زوج دارلينجتون على أنه ترانزستوران ثنائي القطب متصلان بطريقة يتم فيها تضخيم التيار الذي يتم تضخيمه بواسطة الأول بواسطة الترانزستور الثاني. يظهر زوج دارلينجتون في الصورة أدناه:
كما هو موضح أعلاه ، فقد استخدمنا ترانزستورات BC547 التي تم ربط جامعيها بالتجمع وباعث الترانزستور الأول متصل بقاعدة الترانزستور الثاني. تعمل هذه الدائرة كمضخم ذي ربح ، مما يعني أن أي إشارة صغيرة تُعطى لقاعدة الترانزستور الأول كافية لتحيز قاعدة الترانزستور الثاني. يعمل جسمنا كأرض هنا ، لذلك عندما نلمس قاعدة الترانزستور ، يصبح الترانزستور الثاني متحيزًا. باستخدام هذا لصالحنا قمنا ببناء مستشعر اللمس لهذا المشروع.
رقم التعريف الشخصي 2 و 3 هما دبابيس المقاطعة على Arduino والتي سيتم سحبها عالياً باستخدام مقاومات سحب داخلية ، وبعد ذلك سيتم تثبيت هذه المسامير على الأرض كلما تم إغلاق مفتاح Darlington. هذه الطريقة في كل مرة ونحن على اتصال السلك (من قاعدة 1 شارع الترانزستور) وسيتم تشغيل مقاطعة من اردوينو.
يمكن أن ينتج عن استخدام إصبعين نوعين فقط من النغمات ، ومن ثم فقد أضفت أيضًا مستشعرًا مرنًا سيغير النغمة بناءً على مقدار ثنيها. لقد قمت ببرمجة إنتاج ثلاث نغمات مختلفة لكل إصبع بناءً على مدى ثني الإصبع (مستشعر المرونة). يمكنك زيادة الرقم إذا كنت ترغب في الحصول على مزيد من النغمات في أطراف أصابعك.
لقد صنعت اللوحة الكاملة على لوحة مثالية بحيث تناسب راحة يدي بسهولة ، ولكن يمكنك استخدام لوح التجارب أيضًا. فقط تأكد من أن جسمك يلامس أرضية الدائرة في وقت ما. بمجرد لحام كل شيء ، يجب أن يبدو مثل هذا
لقد استخدمت قفازات إصبعين لتأمين الأسلاك من زوج Darlington والمستشعر المرن في الموضع كما هو موضح أعلاه. يمكنك ابتكار فكرتك الخاصة (أفضل إن أمكن) لتثبيتها في مكانها أثناء تشغيل نغماتك.
برمجة اردوينو:
برنامج Arduino Tap Tone Generator هذا بسيط جدًا. علينا فقط البحث عن المقاطعات من أسلاك دارلينجتون وإذا وجدنا واحدة ، علينا تشغيل نغمة تعتمد على مقدار انثناء المستشعر المرن. يتم تقديم الكود الكامل في نهاية هذا المنشور لكنني أوضحت بعض الأجزاء المهمة أدناه.
ملاحظة: هذا البرنامج يعمل بمساعدة مكتبة “Pitches.h”. لذا تأكد من إضافة ملف الرأس إلى برنامجك قبل تجميعه. يمكنك تنزيل ملف الرأس Pitches.h من هنا.
في وظيفة الإعداد ، نقوم بتهيئة الدبوس 2 و 3 كمدخلات بمقاومات سحب. نعلن أيضًا أنها دبابيس مقاطعة وننفذ نغمة 1 () عندما يكون هناك مقاطعة على الدبوس 2 ووظيفة النغمة 2 () عندما يكون هناك مقاطعة على الطرف الثالث. سيتم تشغيل هذه المقاطعات عندما تصبح هذه المسامير منخفضة من حالة الانسحاب.
إعداد باطل () {pinMode (2، INPUT_PULLUP) ؛ pinMode (3 ، INPUT_PULLUP) ؛ attachInterrupt (digitalPinToInterrupt (2)، tone1، LOW) ؛ attachInterrupt (digitalPinToInterrupt (3) ، نغمة 2 ، منخفضة) ؛ Serial.begin (9600) ؛ }
داخل وظيفة الحلقة ، نتحقق باستمرار من مدى انثناء المستشعر المرن. على سبيل المثال ، أعطت My FlexSensor 1 قيمًا حوالي 200 عند تركها مسطحة وانخفضت على طول الطريق إلى 130 عندما ثنيها إلى أقصى حد لها ، لذلك قمت بتعيين القيمة من 200 إلى 130 على أنها من 1 إلى 3 لأنني يجب أن ألعب 3 أنواع مختلفة من النغمات. يجب عليك تعديل هذين الخطين بناءً على قيم مستشعر Flex وعدد النغمات.
حلقة باطلة () {flexSensor1 = map (analogRead (A0)، 200،130،1،3) ؛ // ارسم القيم الخاصة بك بناءً على جهاز الاستشعار المرن flexSensor2 = map (analogRead (A1)، 170،185،1،3) ؛ // ضع خريطة بقيمك الخاصة بناءً على جهاز الاستشعار المرن}
كما رأينا سابقًا ، سيتم تنفيذ نغمة الوظيفة 1 () عند اكتشاف مقاطعة على الطرف 2. يظهر ما يحدث داخل وظيفة النغمة 1 () أعلاه. ننظر إلى قيم FlexSensor1 ونلعب نغمة بناءً على قيمة flexSesnor. سيتم تشغيل النغمات باستخدام وظيفة نغمة Arduino. لقد شرحنا وظيفة النغمة () في مشروعنا السابق.
نغمة باطلة 1 () {إذا (flexSensor1 == 1) نغمة (8، NOTE_D4،50) ؛ وإلا إذا (flexSensor1 == 2) نغمة (8 ، NOTE_A3 ، 50) ؛ وإلا إذا (flexSensor1 == 3) نغمة (8 ، NOTE_G4،50) ؛ نغمة أخرى (8، NOTE_D4،50) ؛ }
يتم استخدام السطر أدناه لتشغيل النغمة. يمكنك تشغيل أي نغمة متوفرة في ملف الرأس "Pitches.h". يقوم السطر أعلاه على سبيل المثال بتشغيل NOTE_A3 على دبوس لمدة 50 ملي ثانية.
نغمة (8 ، NOTE_A3،50) ؛ // tone (رقم التعريف الشخصي ، اسم الملاحظة ، المدة) ؛
العمل:
بمجرد أن يصبح جهازك جاهزًا ، قم بتحميل الكود وقم بتثبيته على أصابعك. تأكد من أن جسمك يلمس أرض الدائرة في وقت ما. الآن ما عليك سوى لمس أي مادة موصلة أو جسدك ويجب أن تكون قادرًا على سماع النغمة المعنية. يمكنك تشغيل اللحن أو الموسيقى الخاصة بك عن طريق النقر على فترات مختلفة ومواقف مختلفة.
يظهر الفيديو أدناه العمل الكامل للمشروع. آمل أن تكون قد استمتعت ببناء المشروع ، يمكن نشر أي اقتراحات أو أسئلة في قسم التعليقات أدناه. تحقق أيضًا من Arduino Audio Player ومشروع Arduino Tone Generator.