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

جرس الباب اردوينو: 4 خطوات
جرس الباب اردوينو: 4 خطوات

فيديو: جرس الباب اردوينو: 4 خطوات

فيديو: جرس الباب اردوينو: 4 خطوات
فيديو: RFID مشروع أردوينو - قفل باب الكتروني يفتح ببطاقة ال 2024, يوليو
Anonim
اردوينو الجرس
اردوينو الجرس

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

اللوازم:

  • Arduino Uno (معظم الأنواع الأخرى تفي بالغرض)
  • كمبيوتر مع Arduino IDE للبرمجة
  • كابل USB-A إلى USB-B لبرمجة Arduino
  • اللوح
  • 4x أسلاك العبور
  • زر الضغط أو مفتاح آخر
  • 10 كيلو أوم المقاوم
  • الجرس السلبي (أي مكبر الصوت الكهرضغطية)
  • للتثبيت الدائم:

    • 9V DC Power Supply أو بطارية 9V لتشغيل Arduino
    • 2x أسلاك طويلة لزر الأسلاك خارج الباب

الخطوة 1: إعداد الجهاز

إعداد الأجهزة
إعداد الأجهزة
إعداد الأجهزة
إعداد الأجهزة
إعداد الأجهزة
إعداد الأجهزة

أولاً ، سنقوم بإعداد الأجهزة. سنبدأ بالجرس السلبي (أي المتحدث). نريد توصيل الطرف الموجب للجرس السلبي (المشار إليه بعلامة "+") بالدبوس الرقمي 8 على Arduino. سنقوم بتوصيل الطرف الآخر من جرس المرور بالأرض.

بعد ذلك ، سنقوم بتثبيت زر الضغط على جرس الباب. سنستخدم المقاوم المنسدل الخارجي 10 كيلو أوم للمفتاح ، لذلك لا يوجد جهد عائم أو حالة غير مستقرة على الإدخال إلى Arduino. باستخدام المقاوم المنسدل ، يقرأ Arduino الجهد على أنه 0 فولت عندما لا يتم الضغط على الزر و 5 فولت عند الضغط على الزر. لمزيد من المعلومات حول مقاومات السحب أو المنسدلة ، يمكنك قراءة هذا المقال:

سنقوم بتوصيل جانب واحد من زر الضغط بجهد 5 فولت. سيتم توصيل الجانب الآخر من الزر الانضغاطي بالأرض من خلال المقاوم المنسدل 10 كيلو أوم. تذكر: الأزرار الانضغاطية متصلة أفقيًا داخليًا. يتم توصيلها عموديًا فقط عند الضغط عليها. يتم توفير مزيد من المعلومات في هذه المقالة:

الخطوة 2: إعداد البرنامج

كل الكود مرفق. فيما يلي وصف لكل وظيفة مع لقطات من الكود.

اقامة:

في وظيفة الإعداد () ، نريد تكوين المسامير الرقمية لزرنا ومكبر الصوت الخاص بنا. نريد تكوين الدبوس 2 كمدخل للزر الخاص بنا ، ونريد تكوين الدبوس 8 كإخراج لمكبر الصوت الخاص بنا.

نريد أيضًا "زرع" مولد الأرقام العشوائي الخاص بنا لاختيار نغمة عشوائية عندما يقرع شخص ما جرس الباب. إن زرع مولد الأعداد العشوائية الخاص بنا يعني إطعامه بمدخل عشوائي. سنقوم بتزويد مولد الأرقام العشوائي الخاص بنا بقيمة الجهد على المدخلات التناظرية 0. نظرًا لأنه لا يوجد شيء متصل بهذا الإدخال ، سيكون هناك جهد متذبذب "عشوائي" على هذا الدبوس مما يوفر مولد الأرقام العشوائي الخاص بنا مع العديد من القيم المختلفة. هذا يضمن أنه سيكون لدينا ترتيب مختلف لاختيار الأغاني لجرس الباب لدينا. لمزيد من المعلومات حول وظيفة Arduino random () ، انتقل هنا:

# تضمين "pitches.h"

# تضمين "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8 / * إعداد وظيفة * / void setup () {// تمكين دبابيس الإدخال / الإخراج pinMode (BUTTON_PIN ، INPUT) ؛ pinMode (SPEAKER_PIN ، الإخراج) ؛ // دالة عشوائي () حتى نحصل على ترتيب مختلف للبذور العشوائية (analogRead (0)) ؛ }

حلقة:

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

بمجرد التأكد من الضغط على الزر ، نستخدم مولد الأرقام العشوائي الخاص بنا لتحديد واحدة من الأغاني الخمس باستخدام بيان التبديل. يتم تخزين بيانات هذه الأغاني في "songs.h" ويتم تخزين معلومات درجة الصوت في "الملعب. h". بمجرد اختيار أغنية ، نقوم بتمرير هذه المعلومات إلى الوظيفة play_song ().

/ * الوظيفة الرئيسية أثناء الحلقة * /

حلقة باطلة () {// تحقق لمعرفة ما إذا كان الزر مضغوطًا إذا كان (digitalRead (BUTTON_PIN) == HIGH) {// تأخير 50 مللي ثانية للتأكد من أنه لا يزال مضغوطًا // لتجنب أي تأخير في أخطاء القراءة الشاردة (50) ؛ if (digitalRead (BUTTON_PIN) == HIGH) {// اختر أغنية عشوائيًا int song_choice = random (5) ؛ // حدد الأغنية المراد تشغيلها (song_choice) {الحالة 0: play_song (haircutLength ، haircut ، haircutDurations ، haircutTempo) ؛ استراحة؛ الحالة 1: play_song (marioLength ، mario ، marioDurations ، marioTempo) ؛ استراحة؛ الحالة 2: play_song (miiLength ، mii ، miiDurations ، miiTempo) ؛ استراحة؛ الحالة 3: play_song (hpLength ، hp ، hpDurations ، hpTempo) ؛ استراحة؛ الحالة 4: play_song (takeonmeLength ، takeonme ، takeonmeDurations ، takeonmeTempo) ؛ استراحة؛ الافتراضي: play_song (miiLength ، mii ، miiDurations ، miiTempo) ؛ استراحة؛ }}}}

تشغيل الأغنية:

تأخذ play_song () 4 وسيطات: عدد صحيح من النغمات في الأغنية ، ومجموعة عدد صحيح من النغمات في اللحن ، ومجموعة عدد صحيح من المدة ، وإيقاع عدد صحيح لتلك الأغنية المعينة. يجب عليك تحديد كل من هذه لكل أغنية ترغب في تشغيلها. لمزيد من المعلومات حول كيفية استخدام وظائف نغمة Arduino ، يمكنك إلقاء نظرة على هذا البرنامج التعليمي: https://www.arduino.cc/en/Tutorial/ToneMelody. لقد أضفت بعض الوظائف أعلى هذا البرنامج التعليمي للملاحظات المنقطة. إذا كانت القيمة في مصفوفة مدة الملاحظة سالبة ، فهذا يعني أنها ملاحظة منقطة (الطول أكبر بمقدار 1.5 مرة).

/ * تشغيل الأغنية * /

void play_song (int num_notes، int melody ، int noteDurations ، int tempo) {// step through and play of the notes for (int i = 0؛ i 0) {duration = tempo / noteDurations ؛ } // إذا كان رقمًا سالبًا ، يعني ملاحظة منقطة // يزيد المدة بمقدار النصف للملاحظات المنقطة الأخرى إذا (noteDurations <0) {duration = tempo / abs (noteDurations ) * 1.5؛ } نغمة (SPEAKER_PIN ، لحن ، مدة) ؛ // لتمييز الملاحظات ، حدد حدًا أدنى للوقت بينهما. // يبدو أن مدة الملاحظة + 30٪ تعمل بشكل جيد: int pauseBetweenNotes = المدة * 1.30 ؛ تأخير (وقفة بين الملاحظات) ؛ // إيقاف تشغيل النغمة: noTone (SPEAKER_PIN) ؛ }}

عينة من الأغاني. ح:

يوجد أدناه عينة من إحدى الأغاني في أغنية "songs.h". الملاحظات هي وحدات ماكرو محددة في "الملعب". تتوافق الأرقام مع ترددات النغمات بالهرتز (هرتز). يتم تحديد مدة النغمات على النحو التالي: 1 = نغمة كاملة ، 2 = نصف نغمة ، 4 = نوتة ربع سنوية ، 8 = نغمة ثامنة ، -4 = نغمة ربع منقط ، إلخ. الطول هو إجمالي عدد النغمات في الأغنية. الإيقاع عبارة عن مقسم لسرعة الأغنية (الرقم الأعلى يعني سرعة أبطأ). سيكون عليك اللعب بهذا الرقم حتى تحصل على الإيقاع الذي تريده.

/* هاري بوتر */

int hp = {NOTE_D4، NOTE_G4، NOTE_AS4، NOTE_A4، NOTE_G4، NOTE_D5، NOTE_C5، NOTE_A4، NOTE_G4، NOTE_AS4، NOTE_A4، NOTE_F4، NOTE_GS4، NOTE_D4}؛ int hpDurations = {4، -4، 8، 4، 2، 4، -2، -2، -4، 8، 4، 2، 4، 1} ؛ طول حصان كثافة العمليات = 14 ؛ عدد int hpTempo = 1050 ؛

الخطوة 3: القرص

أضف مزيد من الأغاني! اتبع التنسيق الموضح في "songs.h" واستخدم البرنامج التعليمي للمساعدة: https://www.arduino.cc/en/Tutorial/ToneMelody. لكل أغنية جديدة تضيفها ، تذكر أن تضيف حالة جديدة إلى بيان التبديل وزيادة العدد الأقصى الذي يمكن إنشاؤه بواسطة وظيفة عشوائية (). ترميز سعيد!

الخطوة 4: المزيد من المشاريع

لمزيد من المشاريع ، قم بزيارة صفحاتي:

  • https://dargen.io/
  • https://github.com/mjdargen
  • https://www.instructables.com/member/mjdargen/

موصى به: