תקציר
“זמזם” (Buzzer, באנגלית) הוא רכיב אלקטרוני שמפיק (אני יודע, מפתיע מאוד) זמזום. על פניו, זו נשמעת כמו תכונה לא ממש חשובה - אבל במציאות, היכולת להפיק צלילים היא במקרים רבים מה שהופך משחק או פרויקט נחמד - למשהו באמת מגניב וכיפיי.
למיקרוביט בגרסה V2 (הגרסה העדכנית ביותר של הכרטיס, נכון לכתיבת שורות אלה) יש זמזם מובנה על הכרטיס עצמו, ובערכת המיקרוביט למתחילים יש לנו זמזם נוסף, חיצוני. למה אנחנו צריכים שני זמזמים? האמת, ברוב המקרים הזמזם המובנה יספיק לנו, כנראה - אבל פה ושם יכולים להיות מקרים שבהם היכולת להציב זמזם רחוק מהכרטיס עצמו יכולה להיות מועילה: למשל, אם אנחנו מציבים מספר חיישנים בכמה מקומות שונים, ורוצים זמזם ליד כל אחד מהחיישנים. במדריך זה, אם כן, נגלה איך עובד זמזם, איך מחברים את הזמזם החיצוני למיקרוביט, ואיך מפעילים את שני הזמזמים - המובנה והחיצוני - באמצעות תוכנה.
זמזם פסיבי וזמזם אקטיבי
ישנם שני סוגים עקרוניים של זמזמים: פסיבי ואקטיבי. ההבדל ביניהם הוא סביב השאלה: מי מייצר את האות שמפעיל את הזמזם?
לצורך ההסבר, נדמיין שני סוגי רכבים: רכב אוטונומי, ורכב רגיל. ברכב הרגיל, הנהג האנושי מסובב את ההגה - וגורם לגלגלים לפנות ימינה או שמאלה: במילים אחרות, האות שגורם לגלגלים לפנות מיוצר על ידי הנהג. ברכב אוטונומי, המחשב הוא זה שאומר לגלגלים לאן לפנות: ז”א, למרות שהתוצאה הסופית היא אותה התוצאה - הרכב משנה את כיוון הנסיעה - מקור האות שגורם לשינוי הזה שונה בכל פעם.
אותו הדבר בזמזמים. זמזם אקטיבי הוא זמזם שמכיל בתוכו מעגל אלקטרוני שמפעיל אותו ושולט עליו: אנחנו, המשתמשים, צריכים רק לבקש מהמעגל הזה להשמיע צליל מסוים - והוא כבר דואג להכל. זה קצת כמו המחשב ברכב האוטונומי, שאנחנו אומרים לו - ‘קח אותנו לבית של סבתא’, והוא כבר דואג לתת לגלגלים את הפקודות הנכונות כדי להגיע לשם. זמזם פסיבי, לעומת זאת, הוא קצת יותר “טיפש”: כדי לגרום לו להשמיע צליל כלשהו אנחנו צריכים לספק לו את האות החשמלי המדויק שיגרום לו להפיק את הצליל הזה - כמו נהג שמסובב את ההגה כדי לגרום לרכב לפנות.
הזמזם המובנה של כרטיס המיקרוביט, והזמזם החיצוני שכלול בערכה למתחילים הם שניהם זמזמים פסיביים. יש בערכה גם זמזם חיצוני אקטיבי - שעליו ארחיב באחד המדריכים הבאים.
איך עובד זמזם פסיבי?
גם כשמדובר בזמזמים פסיביים, ישנם שני סוגים עקרוניים: זמזם פיאזואלקטרי, וזמזם מגנטי. מכיוון ששני הזמזמים בהם נתמקד היום הם מגנטיים - אסביר על עקרון הפעולה שלהם, ואת הזמזם הפיאזואלקטרי נשאיר להזדמנות אחרות. אז איך עובד זמזם מגנטי פסיבי?

זמזם מגנטי פסיבי
בתוך עטיפת הפלסטיק השחורה ישנם שלושה רכיבים בסיסיים: דיאפרגמה (המכונה לעיתים גם ‘ממברנה’), מגנט קבוע, וסליל. הדיאפרגמה היא לוחית מתכתית דקיקה, והיא זו שמייצרת את הצלילים: כשהיא רוטטת - דהיינו, נעה קדימה ואחורה כמו בוכנה - היא דוחפת את האוויר שסביבה, והדחיפות האלה יוצרות את גלי הקול שאנחנו שומעים. אם הדיאפרגמה רוטטת מהר, נשמע צליל גבוה - ואם היא רוטטת לאט, נשמע צליל נמוך. השאלה המתבקשת היא, אם כן - איך אנחנו גורמים לדיאפרגמה לרטוט קדימה ואחורה, ואיך אנחנו שולטים על המהירות של הרטט הזה?
נתחיל מהמגנט הקבוע. כפי שמעיד שמו, המגנט הקבוע מייצר שדה מגנטי קבוע - והשדה המגנטי הזה מושך אליו את הדיאפרגמה המתכתית. אבל הדיאפרגמה שבתוך הזמזם מוחזקת במקומה על ידי הפלסטיק שעוטף אותה, ולא נותן לה להיצמד למגנט הקבוע. אז הדיאפרגמה נשארת במקום, אבל “נמתחת” קצת לכיוון של המגנט הקבוע. זוכרים את המשחק Angry Birds? שם, אנחנו מותחים גומיה עם ציפור עצבנית - וזה מאוד דומה למה שקורה לדיאפרגמה תחת השפעת המגנט הקבוע. אז עכשיו הדיאפרגמה שבתוך הזמזם נמצאת בשיווי משקל, כמו הציפור העצבנית רגע לפני ששיחררנו אותה לעבר החזירים המעצבנים: המגנט הקבוע מושך אותה לצד אחד, אבל האלסטיות הטבעית שלה שומרת עליה שתישאר מתוחה ולא תזוז מהמקום.
החלק השלישי במערכת הזו הוא הסליל. סליל הוא רכיב שכאשר עובר בו זרם חשמלי, נוצר סביבו שדה מגנטי. ככל שעוצמת הזרם משתנה, כך משתנה גם עוצמת השדה; אם הזרם קבוע, גם השדה קבוע.
אז עכשיו נדמיין שיש לנו מתג ששולט על זרם חשמלי: כשהמתג למעלה, זרם זורם דרך הסליל, וכשהוא למטה - הזרם מפסיק. נעלה את המתג: רגע אחד אין זרם דרך הסליל - ורגע לאחריו יש זרם, משמע יצרנו זרם משתנה. זרם חשמלי משתנה גורם לסליל שלנו להפיק שדה מגנטי, והשדה המגנטי הזה מתווסף לשדה המגנטי שמפיק המגנט הקבוע ומפעיל כוח חזק יותר על הדיאפרגמה שגורם לה להימתח קצת יותר ממקודם.
כעת נוריד את המתג. הזרם החשמלי ידעך, ואיתו גם השדה המגנטי שמפיק הסליל. הדיאפרגמה, אם כן, חוזרת להיות פחות מתוחה ממקודם.
אם נשחק עם המתג שלנו למעלה ולמטה שוב ושוב ושוב, התוצאה תהיה שהדיאפרגמה תרטוט קדימה ואחורה, קדימה ואחורה כמו נפנף מעל מנגל - שזה, אני מזכיר, בדיוק מה שרצינו שיקרה: הרטט של הדיאפרגמה הוא זה שיוצר את גלי הקול, הצלילים שמפיק הזמזם. המהירות שבה נשחק עם המתג שלנו תקבע את תדירות הצלילים: אם נעלה ונוריד את המתג בזה אחר זה במהירות, נקבל רטט מהיר וצלילים גבוהים - ואם נמתין זמן ארוך יותר בין מיתוג למיתוג, נקבל רטט איטי וצלילים נמוכים.
בשורה התחתונה, אם כן, זמזם מגנטי פסיבי בנוי מדיסקה דקיקה - דיאפרגמה - המגנט הקבוע והשדה המגנטי שהסליל יוצר גורמים לדיסקה הזו לרטוט. מי שקובע באיזו מהירות תרטוט הדיסקה הוא האות החשמלי שמגיע אל הזמזם. כעת, אם כן, בואו נגלה איך אפשר להפיק את האות החשמלי הזה.
הרכבת המעגל החשמלי
הזמזם שמובנה בתוך המיקרוביט כבר מוכן להפעלה - אבל את הזמזם החיצוני נצטרך לחבר אל הכרטיס שלנו כדי שנוכל להוליך אליו אותות חשמליים. תזכורת קצרה: הברדבורד הוא לוח שמאפשר הרכבה קלה של מעגלים חשמליים. חמשת החורים בכל צד של אותה השורה מחוברים זה לזה בתוך הלוח, כך שכל פין שנכניס לאחד מחמשת החורים - יהיה מחובר חשמלית לכל פין אחר באותה השורה. ישנם עוד שתי עמודות בקצוות הברדבורד - אך הן לא רלוונטיות לענייננו ולא נדון בהן.
מטרתנו היא לחבר את פין מס’ 0 של המיקרוביט אל פין ה-”+” של הזמזם, ואת פין האדמה (GND) של המיקרוביט אל הפין השני של הזמזם. באופן הזה זרם חשמלי יעבור מפין 0, דרך הזמזם ומשם אל פין האדמה של המיקרוביט.
עקבו אחר ההוראות:
- נכניס את המיקרוביט לתוך המתאם מסוג T.
- נכניס את המתאם לתוך הברדבורד כך שפין מס’ 0 של המתאם נמצא בשורה מס’ 1 של הברדבורד.
- נתקע את הבאזר לתוך הברדבורד כך שהפין המסומן ב-”+” נמצא בשורה 30, והפין השני בשורה 33.
- ניקח חוט כחול: צד אחד שלו נכניס לחור בשורה 1, בצד של פין מס’ 0 של המתאם. את הצד השני נכניס לחור בשורה 30.
- ניקח חוט אדום: צד אחד שלו נכניס לחור בשורה 1 בצד של פין GND של המתאם. את הצד השני נכניס לחור בשורה 33.

בואו נבדוק שהזמזם שלנו עובד. נחבר את המיקרוביט אל המחשב שלנו באמצעות כבל ה-USB שמגיע עם הערכה, ונפתח את הקישור הבא. זו התוכנה שאמורה להופיע על המסך:

נלחץ על כפתור ה-Download: העורך יטען את הקוד אל הכרטיס. כעת נלחץ על כפתור A שעל הכרטיס: אם הכל עובד כשורה, אנחנו אמורים לשמוע זמזום מהזמזם שלנו.
זמזם עם אות דיגיטלי
נתרגם את הקוד שלנו לשפה מדוברת:
אם כפתור A נלחץ, חזור על הפעולה הבאה 1000 פעם: קבע את ערכו של פין P0 ל-‘1’, המתן שתי אלפיות השניה, שנה את ערכו של פין P0 ל-‘0’, המתן עוד שתי אלפיות השניה, וחוזר חלילה.
פין P0 הוא הפין שחיברנו, כזכור, לפין ה-+ של הזמזם, והמשמעות המעשית של קביעת ערכו ל-‘1’ היא דחיפה של זרם חשמלי דרך הפין ואל הסליל שבתוך הזמזם. המיתוג המהיר בין הלוך ושוב בין 1 ו-0 גורם לדיאפרגמה שבזמזם לרטוט.
כפי שציינתי קודם, יש קשר ישיר בין המהירות שבה נמתג את הזרם החשמלי - ה”תדר” של המיתוג - לבין הצליל שיפיק הזמזם: למשל, ככל שנמתג את האות לאט יותר - דהיינו, בתדר נמוך יותר - כך הצליל יהיה נמוך יותר. במקרה שלנו, אנחנו משנים את ערכו של הפין בכל שתי אלפיות שנייה - או בניסוח אחר, הפין משלים מחזור שלם של שינויים וחוזר בחזרה לערכו המקורי בכל ארבע אלפיות השנייה. “תדר” מוגדר כמספר המחזורים בכל שניה - דהיינו, כמה פעמים נכנס מחזור של ארבע אלפיות השנייה בשנייה אחת. בשפת המתמטיקה, המשפט הזה ייכתב כך:
Frequency = 1/0.004 = 250
דהיינו, הצליל שאנחנו אמורים לשמוע מהזמזם הוא צליל בתדר של 250 מחזורים בכל שניה, או 250 הרץ.
אולי שמתם לב שכתבתי “אמורים”, כי במציאות אנחנו מקבלים צליל בתדר מעט שונה. מדוע? כי המעבד - ‘המוח’ של המיקרוביט - הוא איטי יחסית, והוא לא מסוגל לשנות את ערכו של פין P0 בקצב מהיר כל כך. תוכלו להיווכח בכך בעצמכם: שנו את זמני ההמתנה בין מיתוג למיתוג משתי אלפיות השנייה לארבע אלפיות השנייה. אם הפקודות האלה היו מתבצעות כלשונם היינו אמורים לשמוע צליל בתדר נמוך יותר (שהרי האות ממותג לאט יותר) - אבל כפי שתשמעו בעצמכם, הצליל נשמע בדיוק אותו דבר.
המשמעות היא שהתוכנה שאנחנו משתמשים בה היא לא הדרך הנכונה להפיק צלילים מהזמזם. למזלנו, ישנה דרך אחרת, מוצלחת יותר.
זמזם עם אות אנלוגי
הבה נשנה את התוכנה שלנו כך:

נטען את הקוד אל הכרטיס, ונלחץ על כפתור A: הזמזם ישמיע צליל - וליתר דיוק, את התו “דו”. כעת נלחץ על Middle C ובחלונית שתיפתח נבחר צליל אחר. נטען את הקוד ושוב נלחץ על הכפתור - הפעם נוכל לשמוע בברור שהצליל החדש שונה מהצליל הקודם. למה? מה השתנה? מה שקרה הוא שהקוד החדש שכתבנו מפעיל חומרה ייעודית במיקרוביט: מעגלים אלקטרוניים שתוכננו במיוחד כדי להיות מסוגלים לשנות את האותות החשמליים שמפיק הכרטיס במהירות הגבוהה שנדרשת כדי להשמיע צלילים מדויקים.
הבה נבחן את הקוד החדש שלנו.
- הפקודה set built-in speaker OFF מכבה את הזמזם המובנה שעל הכרטיס, וזאת מכיוון שברירת המחדל של אותה חומרה ייעודית שתיארתי היא לשלוח את האותות שהיא מפיקה אל הזמזם המובנה הזה. אם תשנו את ערכה של הפקודה הזו ל-ON, תוכלו לשמוע שגם הזמזם המובנה יפיק צליל במקביל לזמזם החיצוני.
- הפקודה set volume 255 קובעת את עוצמתם של האותות שנשלחים אל הזמזם: 255 פירושו עוצמה מירבית (הקול שיופק יהיה החזק ביותר), ו-0 היא עוצמה מינימלית (הקול החלש ביותר - או למעשה, שקט).
- הפקודה play tone Middle C for 4 beat until done מנחה את הכרטיס להפיק את הצליל “דו” למשך 4 פעימות, פרקי זמן קצרים - ואז להפסיק. ההבדל בין until done ל-in background הוא ש-until done מכריחה את המעבד לחכות עד לסיום הצליל לפני שיבצע את הפקודה הבאה, בעוד ש in background מאפשרת למעבד להמשיך ולבצע פקודות נוספות בזמן שהצליל מתנגן. האפשרות השלישית, looping in background, עושה את אותו הדבר אבל הצליל ממשיך להתנגן בלולאה ללא הפסקה.
הפקודה ring tone (Hz) Middle C מפיקה גם היא את הצליל “דו”, אבל בניגוד ל- play tone הצליל יופק ללא הפסקה, לנצח - או עד שנפסיק אותו באמצעות הפקודה stop all sounds.

אם אנחנו רוצים להפיק מנגינה של ממש, עורך הקוד נותן לנו פקודה נוחה לעשות זאת:

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


תגובות
אין תגובות עדיין. אפשר להיות הראשונים להגיב.