תוכן עניינים:

פעמון דלת ארדואינו: 4 שלבים
פעמון דלת ארדואינו: 4 שלבים

וִידֵאוֹ: פעמון דלת ארדואינו: 4 שלבים

וִידֵאוֹ: פעמון דלת ארדואינו: 4 שלבים
וִידֵאוֹ: 35 סרטוני רוחות מפחידים: מגה קומפילציה של 2023 [V1] 2024, דֵצֶמבֶּר
Anonim
פעמון דלת ארדואינו
פעמון דלת ארדואינו

היום, אני אראה לך כיצד להכין פעמון דלת באמצעות ארדואינו. פעמון דלת זה מנגן מנגינה אקראית מספריית שירים. אתה יכול להתאים אישית את פעמון הדלת שלך ולהוסיף עוד שירים. התקן אותו מחוץ לחדר השינה, הכיתה, המשרד או אפילו דלת הכניסה שלך!

אספקה:

  • Arduino Uno (רוב הסוגים האחרים יעשו זאת)
  • מחשב עם Arduino IDE לתכנות
  • כבל USB-A ל- USB-B לתכנות Arduino
  • לוח לחם
  • 4x חוטי מגשר
  • כפתור לחיצה או מתג אחר
  • נגד 10 קאוהם
  • זמזם פסיבי (כלומר רמקול פיזואלקטרי)
  • להתקנה קבועה:

    • ספק כוח 9V DC או סוללת 9V להנעת Arduino
    • 2x חוטים ארוכים לכפתור חיווט מחוץ לדלת

שלב 1: התקנת חומרה

התקנת חומרה
התקנת חומרה
התקנת חומרה
התקנת חומרה
התקנת חומרה
התקנת חומרה

ראשית, נתקין את החומרה. נתחיל בזמזם הפסיבי (כלומר רמקול). אנו רוצים לחבר את הקצה החיובי של הבאזר הפאסיבי (המסומן בסימן "+") לסיכה דיגיטלית 8 על הארדואינו. נחבר את הקצה השני של זמזם הפאסיזה לקרקע.

לאחר מכן, נתקין את לחצן הפעמון לדלת. נשתמש בנגד הנעה חיצוני של 10 kOhm למתג, כך שאין מתח צף או מצב לא יציב בכניסה לארדואינו. על ידי שימוש בנגד הנפתח, ה- Arduino קורא את המתח כ- 0V כאשר הכפתור אינו נלחץ ו- 5V בעת לחיצה על הכפתור. למידע נוסף על נגדי pullup או pulldown, אתה יכול לקרוא מאמר זה:

נחבר צד אחד של לחצן ה- 5V. הצד השני של כפתור החיבור יתחבר לקרקע באמצעות נגד הנעה של 10 קאוהם. זכור: כפתורי לחיצה מחוברים אופקית פנימית. הם מחוברים אנכית רק כאשר לוחצים עליהם. מידע נוסף ניתן במאמר זה:

שלב 2: התקנת תוכנה

כל הקוד מצורף. להלן התיאורים של כל אחת מהפונקציות עם תמונות של הקוד.

להכין:

בפונקציית ההתקנה (), אנו רוצים להגדיר את הסיכות הדיגיטליות לכפתור ולרמקול שלנו. אנו רוצים להגדיר את סיכה 2 ככניסה לכפתור שלנו, ואנו רוצים להגדיר את סיכה 8 כפלט לרמקול שלנו.

אנו רוצים גם "לזרע" את מחולל המספרים האקראיים שלנו לבחירה אקראית של מנגינה כאשר מישהו מצלצל בפעמון הדלת שלנו. זריעת מחולל המספרים האקראיים פירושה הזנת קלט אקראי. אנו נזרע את מחולל המספרים האקראיים שלנו עם ערך המתח על הכניסה האנלוגית 0. מכיוון ששום דבר אינו מחובר לכניסה זו, יהיה על פין זה מתח "אקראי" משתנה המספק למחולל המספרים האקראיים שלנו ערכים רבים ושונים. זה מבטיח שיהיה לנו סדר אחר של בחירת שירים לפעמון הדלת שלנו. למידע נוסף על הפונקציה אקראית () Arduino, עבור לכאן:

#כלול "pitches.h"

#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8/ * function set up */void setup () {// אפשר קלט/פלט סיכות pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // פונקציית random seed () כך שנוכל לקבל סדר אחר randomSeed (analogRead (0)); }

לוּלָאָה:

בפונקציית הלופ (), נבדוק כל הזמן אם נלחץ על הכפתור (סיכה דיגיטלית 2 גבוהה). אם הסיכה גבוהה, אנו ממתינים 50 אלפיות השנייה ובודקים שוב כדי לוודא שהיא עדיין גבוהה. זה מבטיח ללחוץ על הלחצן וזה לא היה רעש תועה על סיכת הכניסה הדיגיטלית וגרם לחיוב כוזב.

לאחר שאישרנו כי לחצו על הכפתור, אנו משתמשים במחולל המספרים האקראי שלנו כדי לבחור אחד מחמשת השירים באמצעות הצהרת מתג. הנתונים עבור שירים אלה מאוחסנים ב- "songs.h" ומידע המגרש מאוחסן ב- "pitches.h". ברגע שאנו בוחרים שיר, אנו מעבירים את המידע הזה לפונקציה play_song ().

/ * הפונקציה main while loop */

לולאת void () {// בדוק אם נלחץ על הלחצן אם (digitalRead (BUTTON_PIN) == HIGH) {// עיכוב של 50 אלפיות השנייה כדי לוודא שהוא עדיין נלחץ // ימנע כל עיכוב קריאה שגויה (50); if (digitalRead (BUTTON_PIN) == HIGH) {// בחר באקראי שיר int song_choice = אקראי (5); // בחר איזה שיר להפעיל (song_choice) {case 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) {// עברו והשמעו את כל התווים עבור (int i = 0; i 0) {duration = tempo / noteDurations ; } // אם מדובר במספר שלילי, פירושו הערה מנוקדת // מגדילה את משך הזמן לחצי עבור תווים מנוקדים אחרת אם (noteDurations <0) {duration = tempo / abs (noteDurations ) * 1.5; } צליל (SPEAKER_PIN, לחן , משך הזמן); // כדי להבחין בין ההערות, הגדר זמן מינימלי ביניהן. // נראה כי משך השטר + 30% פועל היטב: int pauseBetweenNotes = משך * 1.30; עיכוב (pauseBetweenNotes); // עצור את נגינת הטון: noTone (SPEAKER_PIN); }}

דוגמה לשירים. H:

להלן דוגמא לאחד השירים ב"שירים.ה ". ההערות הן פקודות מאקרו המוגדרות ב- "pitches.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}; int hpLength = 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/

מוּמלָץ: