- الأجهزة المطلوبة:
- فهم وظيفة النغمة () في Arduino:
- و pitches.h ملف الرأس:
- عزف النوتات الموسيقية على الأردوينو:
- التخطيطي والأجهزة:
- شرح برنامج اردوينو:
- عمل حلبة اردوينو من ميلودي بلاير:
Arduino هو وسيلة ممتازة لتبسيط وتسريع مشاريع وحدة التحكم الدقيقة الخاصة بك ، وذلك بفضل مجتمع المطورين الذين جعلوا كل شيء يبدو بسيطًا. هناك الكثير من مشاريع Arduino هنا لتجربها وتستمتع بها. قد تحتاج بعض مشاريعك إلى بعض الإجراءات الصوتية للإبلاغ عن شيء ما أو لمجرد إثارة إعجاب المشاهدين. ماذا لو أخبرتك أن أي أغانٍ تقريبًا يمكن تشغيلها على البيانو يمكن تقليدها على Arduino بمساعدة برنامج بسيط ومكبر صوت بيزو رخيص؟
في هذا البرنامج التعليمي سوف نتعلم مدى بساطة وسهولة تشغيل Melody على Piezo Buzzer أو مكبر الصوت باستخدام وظيفة Arduino tone (). في نهاية هذا البرنامج التعليمي ، ستتمكن من تشغيل بعض النغمات الشهيرة من Pirates of Caribbean و Crazy Frog و Super Mario و Titanic. سوف تتعلم أيضًا كيفية تشغيل أي مقطوعة من موسيقى البيانو باستخدام Arduino. تحقق من الفيديو في النهاية.
الأجهزة المطلوبة:
- Arduino (أي إصدار - يستخدم UNO هنا)
- مكبر صوت بيزو / الجرس أو أي مكبر صوت آخر بقوة 8 أوم.
- اللوح
- توصيل الأسلاك
- أزرار الضغط
- 1k المقاوم (اختياري)
فهم وظيفة النغمة () في Arduino:
قبل أن نفهم كيفية عمل النغمة () ، يجب أن نعرف كيف يعمل جرس بيزو. ربما تعلمنا عن بلورات بيزو في مدرستنا ، فهي ليست سوى بلورة تحول الاهتزازات الميكانيكية إلى كهرباء أو العكس. نحن هنا نطبق تيارًا متغيرًا (ترددًا) تهتز فيه البلورة مما ينتج عنه صوتًا. ومن أجل جعل الجرس بيزو يصدر بعض الضوضاء ، علينا أن نجعل بلورة بيزو الكهربائية تهتز ، وتعتمد درجة ونغمة الضوضاء على مدى سرعة اهتزاز البلورة. ومن ثم يمكن التحكم في النغمة والنغمة عن طريق تغيير تردد التيار.
حسنًا ، كيف نحصل على تردد متغير من Arduino ؟ هذا هو المكان الذي تأتي فيه وظيفة النغمة (). يمكن للنغمة () توليد تردد معين على دبوس معين. يمكن أيضًا ذكر المدة الزمنية إذا لزم الأمر. صيغة النغمة () هي
نغمة بناء الجملة (دبوس ، تردد) نغمة (دبوس ، تردد ، مدة) دبوس المعلمات: الدبوس الذي يتم إنشاء تردد النغمة عليه: تردد النغمة بالهرتز - المدة غير الموقعة: مدة النغمة بالمللي ثانية (اختياري) - بدون توقيع طويل
يمكن أن تكون قيم الدبوس أيًا من الدبوس الرقمي. لقد استخدمت رقم التعريف الشخصي 8 هنا. يعتمد التردد الذي يمكن إنشاؤه على حجم المؤقت في لوحة Arduino. بالنسبة إلى UNO ومعظم اللوحات الشائعة الأخرى ، يكون الحد الأدنى للتردد الذي يمكن إنتاجه هو 31 هرتز والحد الأقصى للتردد الذي يمكن إنتاجه هو 65535 هرتز. ومع ذلك ، يمكننا نحن البشر سماع ترددات فقط بين 2000 هرتز و 5000 هرتز.
و pitches.h ملف الرأس:
الآن ، نحن نعرف كيفية إنتاج بعض الضوضاء باستخدام وظيفة نغمة اردوينو () . لكن كيف نعرف نوع النغمة التي سيتم إنشاؤها لكل تردد؟
لقد أعطانا Arduino جدول ملاحظات يساوي كل تردد بنوع معين من النوتة الموسيقية. كتب جدول الملاحظات هذا في الأصل بريت هاغمان ، الذي استند الأمر () على عمله. سنستخدم جدول الملاحظات هذا لتشغيل سماتنا. إذا كنت شخصًا على دراية بالموسيقى الورقية ، فيجب أن تكون قادرًا على فهم هذا الجدول ، بالنسبة للآخرين مثلي ، فهذه مجرد كتلة أخرى من التعليمات البرمجية.
#define NOTE_B0 31 #define NOTE_C1 33 #define NOTE_CS1 35 #define NOTE_D1 37 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 #define NOTE_G1 49 #define NOTE_GS1 52 #define # NOTE_A1 NOTE_B1 62 #define NOTE_C2 65 #define NOTE_CS2 69 #define NOTE_D2 73 #define NOTE_DS2 78 #define NOTE_E2 82 #define NOTE_F2 87 #define NOTE_FS2 93 #define NOTE_G2 98 #define NOTE_GS2 104 #define NOTE_efine NOTE_ 1102AS #define #define NOTE_C3 131 #define NOTE_CS3 139 #define NOTE_D3 147 #define NOTE_DS3 156 #define NOTE_E3 165 #define NOTE_F3 175 #define NOTE_FS3 185 #define NOTE_G3 196 #define NOTE_GS3 208 #define NOTE_A3 220 #defineDefine 24_AS3 NOTE_C4 262 #define NOTE_CS4 277 #define NOTE_D4 294 #define NOTE_DS4 311 #define NOTE_E4 330 #define NOTE_F4 349#define NOTE_FS4 370 #define NOTE_G4 392 #define NOTE_GS4 415 #define NOTE_A4 440 #define NOTE_AS4 466 #define NOTE_B4 494 #define NOTE_C5 523 #define NOTE_CS5 554 #define NOTE_D5 587 #define NOTE_DS5 # 628Eefine NOTE_DS5 NOTE_FS5 740 #define NOTE_G5 784 #define NOTE_GS5 831 #define NOTE_A5 880 #define NOTE_AS5 932 #define NOTE_B5 988 #define NOTE_C6 1047 #define NOTE_CS6 1109 #define NOTE_D6 1175 #define NOTE_DS6 NOTE 12FS #define #define NOTE_G6 1568 #define NOTE_GS6 1661 #define NOTE_A6 1760 #define NOTE_AS6 1865 #define NOTE_B6 1976 #define NOTE_C7 2093 #define NOTE_CS7 2217 #define NOTE_D7 2349 #define NOTE_DS7 2489 #define NOTE_E7 NOTE_G7 3136 #define NOTE_GS7 3322 #define NOTE_A7 3520 #define NOTE_AS73729 #define NOTE_B7 3951 #define NOTE_C8 4186 #define NOTE_CS8 4435 #define NOTE_D8 4699 #define NOTE_DS8 4978
فوق تعطى التعليمات البرمجية في ملف الرأس pitches.h في هذا الملف والرمز البريدي ، كل ما تحتاجه لتحميل وتضمين هذا الملف في التعليمات البرمجية اردوينو لدينا على النحو الوارد في نهاية هذا البرنامج التعليمي أو استخدام رمز معين في ملف مضغوط.
عزف النوتات الموسيقية على الأردوينو:
لتشغيل لحن لائق باستخدام Arduino ، يجب أن نعرف ما يشكل هذه الألحان. العوامل الثلاثة الرئيسية المطلوبة للعب موضوع هي
- قيمة الملاحظة
- مدة الملاحظة
- سرعة
لدينا ملف الرأس Pitches.h لتشغيل أي قيمة ملاحظة ، والآن يجب أن نعرف مدة الملاحظة المحددة لتشغيلها . Tempo ليس سوى السرعة التي ينبغي أن يتم عزف اللحن. بمجرد معرفة قيمة الملاحظة ومدة الملاحظة ، يمكنك استخدامها مع النغمة () مثل
نغمة (اسم التعريف ، قيمة الملاحظة ، مدة الملاحظة) ؛
بالنسبة إلى النغمات التي يتم تشغيلها في هذا البرنامج التعليمي ، فقد أعطيتك قيمة الملاحظة ومدة الملاحظة داخل ملف الرأس "theme.h" الذي يمكنك من خلاله تشغيلها في مشاريعك. ولكن إذا كان لديك أي نغمة محددة في لغتك وتريد تشغيلها في مشروعك ، فاقرأ…. عدا ذلك ، تخطي هذا الموضوع وانزل إلى التالي.
لتشغيل أي نغمة محددة ، يجب عليك الحصول على النوتة الموسيقية لتلك الموسيقى المعينة وتحويل الموسيقى الورقية إلى رسم Arduino من خلال قراءة قيمة الملاحظة ومدة الملاحظة منها. إذا كنت طالبًا موسيقيًا ، فستكون قطعة من الكعكة بالنسبة لك ، وإلا أمضيت بعض الوقت وتكسر رأسك كما فعلت. ولكن في نهاية اليوم عندما يتم تشغيل نغمتك على جرس Piezo ، ستجد أن جهدك يستحق ذلك.
بمجرد حصولك على قيمة الملاحظة ومدة الملاحظة ، قم بتحميلها في البرنامج داخل ملف الرأس "theme.h" كما هو موضح أدناه
// ############## ** "HE IS A PIRATE" أغنية رئيسية لقراصنة الكاريبي ** ############### // int Pirates_note = {NOTE_D4، NOTE_D4، NOTE_D4، NOTE_D4، NOTE_D4، NOTE_D4، NOTE_D4، NOTE_D4، NOTE_D4، NOTE_D4، NOTE_D4، NOTE_D4، NOTE_D4، NOTE_D4، NOTE_D4، NOTE_D4، NOTE_D4، NOTE_D4، NOTE_D4، NOTE_D4، NOTE_D4، NOTE_D4، NOTE_D4 NOTE_A3، NOTE_C4، NOTE_D4، NOTE_D4، NOTE_D4، NOTE_E4، NOTE_F4، NOTE_F4، NOTE_F4، NOTE_G4، NOTE_E4، NOTE_E4، NOTE_D4، NOTE_C4، NOTE_C4، NOTE_D4، 0، NOTE_A3، NOTE_C4، NOTE_B3، NOTE_F4، NOTE_E4 NOTE_C4 ، NOTE_C4 ، NOTE_C4 ، NOTE_C4 ، NOTE_D4 ، NOTE_C4 ، NOTE_D4 ، 0 ، 0 ، NOTE_A3 ، NOTE_C4 ، NOTE_D4 ، NOTE_D4 ، NOTE_D4 ، NOTE_F4 ، NOTE_G4 ، NOTE_G4 ، NOTE_G4 ، NOTE_A4 ، NOTE_A_G4 ، NOTE_A4 ، NOTE_A4 ، NOTE_A_G4 ، NOTE_A4 ، NOTE_A4 ، NOTE_A4 0، NOTE_D4، NOTE_E3، NOTE_F4، NOTE_F4، NOTE_G4، NOTE_A4، NOTE_D4، 0، NOTE_D4، NOTE_F4،NOTE_E4، NOTE_E4، NOTE_F4، NOTE_D4}؛ int Pirates_duration = {4،8،4،8،4،8،8،8،8،4،8،4،8،4،8،8،8،8،4،8،4،8، 4، 8،8،8،8،4،4،8،8،4،4،8،8،4،4،8،8، 8،4،8،8،8،4،4،8،8 ، 4،4،8،8،4،4،8،4، 4،8،8،8،8،4،4،8،8،4،4،8،8،4،4،8،8 ، 8،4،8،8،8،4،4،4،8،4،8،8،8،4،4،8،8} ؛ // ############ النهاية هي أغنية قرصان ############## //
تُظهر كتلة التعليمات البرمجية أعلاه قيمة الملاحظة ومدة الملاحظة لموضوع "إنه قرصان" من فيلم Pirates of the Caribbean. يمكنك إضافة موضوعك بالمثل مثل هذا.
التخطيطي والأجهزة:
يظهر الرسم التخطيطي لمشروع Arduino Tone Generator Project في الشكل أدناه:
الاتصال بسيط للغاية لدينا مكبر صوت Piezo متصل بالدبوس 8 والأرضي من Arduino من خلال المقاوم 1K. هذا المقاوم 1k هو المقاوم المحدد الحالي ، والذي يستخدم للحفاظ على التيار ضمن الحدود الآمنة. لدينا أيضًا أربعة مفاتيح لاختيار اللحن المطلوب. يتم توصيل أحد طرفي المفتاح بالأرض والطرف الآخر متصل بالطرف 2 و 3 و 4 و 5 على التوالي. ستحتوي المفاتيح على مقاومات سحب ممكّنة داخليًا باستخدام البرنامج. نظرًا لأن الدائرة بسيطة جدًا ، يمكن توصيلها باستخدام لوح الخبز كما هو موضح أدناه:
شرح برنامج اردوينو:
بمجرد فهمك للمفهوم ، يصبح برنامج Arduino واضحًا ومباشرًا. يتم تقديم الكود الكامل في نهاية البرنامج التعليمي. إذا لم تكن معتادًا على إضافة ملفات رأس ، يمكنك تنزيل الكود كملف ZIP من هنا وتحميله مباشرة إلى Arduino.
الاثنان أعلاه هما ملفات الرأس التي يجب إضافتها. "pitches.h" يستخدم لمساواة كل نوتة موسيقية لتردد معين و "themes.h" يحتوي على قيمة المذكرة ومدتها علما بجميع النغمات الأربعة.
# تضمين "الملعب. h" # تضمين "السمات. h"
يتم إنشاء وظيفة لتشغيل كل نغمة عند الحاجة. هنا عندما تسمى الوظيفة Play_Pirates () سيتم تشغيل نغمة "He is a Pirate". تتكون هذه الوظيفة من وظيفة النغمة التي تنتج التردد عند رقم التعريف الشخصي 8. يتم استدعاء noTone (8) لإيقاف الموسيقى بمجرد تشغيلها. إذا كنت تريد تشغيل النغمة الخاصة بك ، فقم بتغيير Pirates_note و Pirates_duration إلى قيم الملاحظة والمدة الجديدة التي قمت بحفظها في قيمة "theme.h"
باطل Play_Pirates () {لـ (int thisNote = 0 ؛ thisNote <(sizeof (Pirates_note) / sizeof (int)) ؛ thisNote ++) {int noteDuration = 1000 / Pirates_duration ؛ // تحويل المدة إلى نغمة تأخير الوقت (8 ، Pirates_note ، noteDuration) ؛ int pauseBetweenNotes = noteDuration * 1.05 ؛ // هنا 1.05 هو الإيقاع ، زيادته لتشغيله تأخيرًا أبطأ (pauseBetweenNotes) ؛ noTone (8) ، }}
يتم استخدام الدبوس 2 و 3 و 4 و 5 لتحديد النغمة المعينة المراد تشغيلها. يتم تثبيت هذه المسامير بشكل افتراضي باستخدام مقاومات السحب الداخلية باستخدام سطر الكود أعلاه. عندما يتم الضغط على الزر ، يتم سحبه لأسفل على الأرض.
pinMode (2، INPUT_PULLUP) ، pinMode (3 ، INPUT_PULLUP) ؛ pinMode (4 ، INPUT_PULLUP) ؛ pinMode (5 ، INPUT_PULLUP) ؛
يتم استخدام كتلة الكود أدناه لتشغيل الأغنية عند الضغط على الزر. يقرأ القيمة الرقمية لكل زر وعندما ينخفض (صفر) يفترض أنه تم الضغط على الزر وتشغيل النغمة المعنية عن طريق استدعاء الوظيفة المطلوبة.
if (digitalRead (2) == 0) {Serial.println ("Selected -> 'He is a Pirate'") ؛ Play_Pirates () ، } if (digitalRead (3) == 0) {Serial.println ("Selected -> 'Crazy Frog'") ؛ Play_CrazyFrog () ، } if (digitalRead (4) == 0) {Serial.println ("Selected -> 'Mario UnderWorld'") ؛ Play_MarioUW () ، } if (digitalRead (5) == 0) {Serial.println ("Selected -> 'He is a Pirate'") ؛ Play_Pirates () ، }
عمل حلبة اردوينو من ميلودي بلاير:
بمجرد أن يصبح الكود والجهاز جاهزًا ، ما عليك سوى نسخ البرنامج إلى Arduino وستتمكن من تشغيل النغمة بمجرد الضغط على الأزرار. إذا كانت لديك أي مشاكل ، فقم بإلقاء نظرة على جهاز العرض التسلسلي الخاص بك لتصحيح الأخطاء أو استخدم قسم التعليقات للإبلاغ عن المشكلة وسيسعدني مساعدتك.
يظهر العمل الكامل للمشروع في الفيديو أدناه. آمل أن تكون قد استمتعت بالمشروع وأن تستخدمه في بعض مشروعك أو تنشئ نغمة جديدة لمشروعك. إذا كانت الإجابة بنعم ، فلا تتردد في مشاركة عملك في قسم التعليقات.