- נדרש חומרה:
- הבנת פונקציית הטון () של ארדואינו:
- Pitches.h בקובץ הכותרת:
- מנגן תווים מוסיקליים על ארדואינו:
- סכמטי וחומרה:
- הסבר על תוכנית ארדואינו:
- עבודה של המנגן הזה של נגן המנגינה Arduino:
ארדואינו היא דרך מצוינת לפשט ולזרז את פרויקטי המיקרו-בקר שלך, הודות לקהילת המפתחים שלה שגרמו כמעט להיראות פשוטים. יש כאן המון פרויקטים של ארדואינו כדי שתוכלו ליהנות. חלק מהפרויקטים שלך עשויים להזדקק לפעולות צלילים כדי להודיע על משהו או סתם כדי להרשים את הצופים. מה אם הייתי אומר לך שכמעט כל שירי נושא שניתן לנגן עליהם בפסנתר ניתן לחקות את הארדואינו שלך בעזרת תוכנית פשוטה ורמקול זול של פיזו?
במדריך זה נלמד כמה קל וקל לנגן מנגינה על Piezo Buzzer או Speaker באמצעות פונקציית הטון Arduino (). בסוף הדרכה זו תוכלו לנגן כמה טונים מפורסמים של שודדי הקאריביים, צפרדע משוגעת, סופר מריו וטיטאניק. תוכלו ללמוד גם כיצד לנגן כל קטע של מוזיקת פסנתר עם ארדואינו. בדקו את הסרטון בסוף.
נדרש חומרה:
- ארדואינו (כל גרסה - משתמשים כאן ב- UNO)
- Piezo רמקול / זמזם או כל רמקול 8ohm אחר.
- קרש לחם
- חוטי חיבור
- ללחוץ על כפתורים
- נגד 1k (אופציונלי)
הבנת פונקציית הטון () של ארדואינו:
לפני שנוכל להבין כיצד עובד טון () עלינו לדעת כיצד עובד זמזם של פיזו. יכול להיות שלמדנו על גבישי פיזו בבית הספר שלנו, זה לא אלא גביש הממיר תנודות מכניות לחשמל או להיפך. כאן אנו מפעילים זרם (תדר) משתנה שעבורו הגביש רוטט וכך נוצר צליל. מכאן שכדי לגרום לזמזם הפיזו להשמיע קצת רעש עלינו לגרום לקריסטל הפיזו לרטוט, גובה הצליל ורמת הרעש תלוי כמה מהר הגביש רוטט. מכאן שניתן לשלוט על הטון והגובה על ידי שינוי תדירות הזרם.
אוקיי, אז איך נקבל תדר משתנה מארדואינו ? כאן נכנסת פונקציית הטון. הטון () יכול ליצור תדר מסוים על סיכה ספציפית. ניתן לציין את משך הזמן במידת הצורך. התחביר לטון () הוא
טון תחביר (סיכה, תדר) טון (סיכה, תדר, משך) סיכת פרמטרים: הסיכה בה ניתן ליצור את תדר הטון: תדירות הטון בהרץ - משך זמן לא חתום: משך הטון באלפיות השנייה (אופציונלי) - לא חתום ארוך
הערכים של סיכה יכולים להיות כל אחד מהסיכות הדיגיטליות שלך. השתמשתי כאן בסיכה 8. התדירות שניתן ליצור תלויה בגודל הטיימר בלוח ה- Arduino שלך. עבור UNO ורוב הלוחות הנפוצים האחרים התדר המינימלי שניתן לייצר הוא 31Hz והתדר המרבי שניתן לייצר הוא 65535Hz. עם זאת אנו בני האדם יכולים לשמוע רק תדרים בין 2000 הרץ ל -5000 הרץ.
Pitches.h בקובץ הכותרת:
כעת אנו יודעים להפיק רעש באמצעות פונקציית הטון הארדואינו () . אבל, איך נדע איזה סוג של טון ייווצר לכל תדר?
ארדואינו העניקו לנו טבלת תווים המשווה כל תדר לסוג תווים מוזיקלי ספציפי. טבלת פתקים זו נכתבה במקור על ידי ברט הגמן, שעל עבודתו התבססה פקודת הטון () . נשתמש בטבלת הערות זו כדי להשמיע את הנושאים שלנו. אם אתה מישהו שמכיר את הגיליונות, אתה אמור להיות מסוגל להבין קצת את הטבלה הזו, עבור אחרים כמוני אלה הם רק עוד גוש קוד.
#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 #define 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_A2 110 #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 #3define #define #define 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 #define5define #define #define 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 12d #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 #define #define #define #define 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 בקובץ ה- zip הזה , אתה רק צריך להוריד ולכלול את הקובץ בקוד Arduino שלנו כפי שניתן בסוף הדרכה זו או להשתמש בקוד המופיע בקובץ ה- zip.
מנגן תווים מוסיקליים על ארדואינו:
כדי לנגן מנגינה ראויה באמצעות ארדואינו, עלינו לדעת מהי המנגינות הללו. שלושת הגורמים העיקריים הנדרשים לצורך הפעלת נושא הם
- ערך הערה
- משך הערה
- טֶמפּוֹ
יש לנו את קובץ הכותרת pitches.h כדי להשמיע כל ערך תו, ועכשיו עלינו לגלות את משך התו הספציפי שלו להפעלתו . טמפו אינו אלא כמה מהר יש לנגן את המנגינה. ברגע שאתה יודע את הערה ואת משך הערה אתה יכול להשתמש בהם עם הטון () כמו
טון (pinName, ערך הערה, משך הערה);
עבור הטונים המושמעים במדריך זה נתתי לך את התו ערך ומשך ההערה בתוך קובץ הכותרת "themes.h" באמצעותו אתה יכול לנגן אותם בפרויקטים שלך. אבל אם יש לך צליל ספציפי במכרה שלך ואתה רוצה להשמיע אותו בפרויקט שלך, המשך לקרוא…. אחרת דלג על הנושא הזה וייפול למטה.
כדי לנגן טון ספציפי כלשהו, עליך להשיג את התווים של אותה מוסיקה מסוימת ולהמיר את התווים למערכון של Arduino על ידי קריאת ערך התו ומשך התו ממנו. אם אתה סטודנט מוזיקלי זו תהיה חתיכת עוגה בשבילך, אחרת בילה קצת זמן ושובר לך את הראש כמו שעשיתי. אבל בסופו של יום כאשר הטון שלך מתנגן על זמזם הפיזו תמצא את המאמץ שלך שווה את זה.
ברגע שיש לך את ערך ההערה ואת משך ההערה, טען אותם לתוכנית בתוך קובץ הכותרת "theme.h" כמוצג להלן
// ############### "" הוא פיראט "שיר הנושא של שודדי הקאריביים ** ################# 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_D 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_B3, NOTE_B3 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_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}; // ########### סוף סוף הוא שיר פיראטים ############# //
גוש הקוד שלעיל מציג את ערך ההערה ומשך ההערה של הנושא "הוא פיראט" מהסרט שודדי הקאריביים. אתה יכול להוסיף את הנושא שלך באופן דומה.
סכמטי וחומרה:
התרשים של פרויקט פרויקט מחולל טונים זה של Arduino מוצג באיור להלן:
החיבור די פשוט יש לנו רמקול Piezo המחובר לסיכה 8 ולאדמה של הארדואינו דרך נגד 1K. נגד 1k זה הוא נגד מגביל זרם, המשמש כדי לשמור על הזרם בגבולות הבטוחים. יש לנו גם ארבעה מתגים לבחירת המנגינה הנדרשת. קצה אחד של המתג מחובר לקרקע והקצה השני מחובר לסיכה 2, 3, 4 ו- 5 בהתאמה. למתגים יהיו נגדי משיכה מופעלים באופן פנימי באמצעות התוכנה. מכיוון שהמעגל די פשוט, ניתן לחבר אותו באמצעות לוח לחם כמוצג להלן:
הסבר על תוכנית ארדואינו:
לאחר שהבנתם את הרעיון, תוכנית הארדואינו די די קדימה. הקוד השלם ניתן בסוף ההדרכה. אם אינך מכיר הוספת קבצי כותרת אתה יכול להוריד את הקוד כקובץ ZIP מכאן ולהעלות אותו ישירות לארדואינו שלך.
השניים לעיל הם קבצי הכותרת שיש להוסיף. "Pitches.h" משמש כדי להשוות כל תו מוזיקלי לתדר מסוים ו- "themes.h" מכיל את ערך התו ומשך התו של כל ארבעת הטונים.
#include "pitches.h" #include "themes.h"
נוצרת פונקציה להשמעת כל טון במידת הצורך. כאן כאשר הפונקציה Play_Pirates () נקראת הטון "הוא פיראט". פונקציה זו מורכבת מפונקציית הטון המייצרת את התדר במספר סיכה 8. ה- NoTone (8) נקרא לעצור את המוסיקה לאחר השמעתה . אם אתה רוצה לשחק הטון שלך, לשנות את Pirates_note ו Pirates_duration לערכי הפתק ומשך החדשים ששמרת ב "themes.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);
מתחת לבלוק הקוד משמש להשמעת השיר כאשר לוחצים על כפתור. הוא קורא את הערך הדיגיטלי של כל כפתור וכאשר הוא מקבל נמוך (אפס) הוא מניח שלוחצים על הכפתור ומשמיע את הטון המתאים על ידי קריאה לפונקציה הנדרשת.
אם (digitalRead (2) == 0) {Serial.println ("נבחר -> 'הוא פיראט'"); Play_Pirates (); } אם (digitalRead (3) == 0) {Serial.println ("נבחר -> 'צפרדע מטורפת'"); Play_CrazyFrog (); } אם (digitalRead (4) == 0) {Serial.println ("נבחר -> 'Mario UnderWorld'"); Play_MarioUW (); } אם (digitalRead (5) == 0) {Serial.println ("נבחר -> 'הוא פיראט'"); Play_Pirates (); }
עבודה של המנגן הזה של נגן המנגינה Arduino:
ברגע שהקוד והחומרה שלך מוכנים, פשוט צרוב את התוכנית בארדואינו שלך, ותוכל להיות מסוגל לנגן את הטון פשוט על ידי לחיצה על הכפתורים. אם יש לך בעיות, עיין בצג הסידורי שלך לצורך איתור באגים או השתמש בסעיף ההערות כדי לדווח על הבעיה ואשמח לעזור לך.
העבודה המלאה של הפרויקט מוצגת בסרטון להלן. מקווה שנהנית מהפרויקט והיית משתמש בו בחלק מהפרויקט שלך או תיצור טון חדש לפרויקט שלך. אם כן אל תהסס לשתף את עבודתך בסעיף ההערות.