דלגו לתוכן המרכזי
KitLab
שיעור קודם
פסנתר אלקטרוני — שבעה קלידים שמנגנים באמת· 41 / 41
פסנתר אלקטרוני — שבעה קלידים שמנגנים באמת
🎬

הסרטון בדרך אלינו

בינתיים — התמלול המלא של השיעור מחכה לכם למטה

פסנתר אלקטרוני — שבעה קלידים שמנגנים באמת

מה בשיעור?

  • להסביר איך פסנתר אלקטרוני הופך לחיצה לצליל
  • להרכיב פסנתר עץ שלם עם שבעה קלידים
  • לחבר שני לוחות ניסוי יחד ולחווט שבעה כפתורים
  • לנגן תווים עם הבלוק buzzer frequency
  • להשתמש בבלוק wait until כדי שהצליל ייפסק בשחרור
  • לבנות שבעה בלוקים משלכם עם define וסדר נקי
  • להגדיר פינים כקלט עם הבלוק set pin mode to input pullup

מה נלמד כאן

  • איך פסנתר אלקטרוני הופך לחיצה על קליד לצליל
  • להרכיב פסנתר עץ אמיתי עם שבעה קלידים שנלחצים
  • לחבר שני לוחות ניסוי לאחד ולחווט עליהם שבעה כפתורים
  • לנגן תו מדויק עם הבלוק buzzer frequency
  • לבנות בלוק נפרד לכל תו עם define — ולסדר תוכנית ארוכה

מה זה בעצם צליל

לפני שנבנה פסנתר, שאלה אחת: למה "דו" נשמע אחרת מ"סול"?

צילום של פסנתר אלקטרוני

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

  • 262 רעידות בשנייה = התו דו (במוזיקה קוראים לו C4)
  • 294 רעידות בשנייה = רה (D4)
  • 330 = מי (E4)

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

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

זה הפרויקט האחרון בקורס. תיהנו ממנו.


איך פסנתר אלקטרוני עובד

חמישה שלבים, מהאצבע ועד האוזן:

  1. לחיצה — הקליד לוחץ על מתג שסוגר מעגל חשמלי.
  2. בחירת תדר — המוח של הכלי יודע איזה קליד נלחץ, ומתאים לו מספר: התדר.
  3. יצירת האות — מעגל מייצר אות חשמלי שמתנדנד בדיוק במספר הזה של פעמים בשנייה.
  4. הגברה — האות מוגבר כדי שיהיה חזק מספיק להזיז ממברנה.
  5. השמעה — רמקול הופך את האות לרעידות אוויר. שומעים תו.

בפסנתר שלנו: הכפתורים הם שלב 1, ה-ESP32 עושה את שלבים 2 ו-3, טרנזיסטור קטן עושה את שלב 4, והזמזם הפסיבי עושה את שלב 5.


הרכיבים

זמזם פסיבי

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

שבעה כפתורים ושבעה נגדי 10kΩ

כל כפתור מחובר דרך נגד 10kΩ ל-5V, ודרך הכפתור עצמו ל-GND. זה נקרא נגד מעלה (pull-up). כשהכפתור משוחרר הפין קורא 1, וכשלוחצים עליו הוא קורא 0. כן, הפוך ממה שהיה נראה הגיוני — ובכל זאת זאת הדרך הנפוצה בעולם.

נגד 1kΩ וטרנזיסטור

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

שני לוחות ניסוי 400 חורים

שבעה כפתורים לא נכנסים ללוח אחד. נחבר שניים יחד ללוח ארוך.


מרכיבים את הפסנתר

אין לכם את ערכת העץ? דלגו ל"החיבור" — התוכנית תעבוד גם על כפתורים בלוח ניסוי על השולחן.

שלב 1 — מתקינים את לוח ה-ESP32

ארבעה עמודי נחושת M3 באורך 12 מ״מ מרימים את הלוח מעל הבסיס, ושבעה ברגי M3 שטוחים באורך 6 מ״מ מחזיקים הכול.

פירוק לוח ה-ESP32, עמודי הנחושת והברגים אל לוח הבסיס

הלוח מוברג על עמודי הנחושת

שלב 2 — לוחות הצד של הפסנתר

פירוק לוחות הצד

לוחות הצד במקומם

שלב 3 — מחברים את שני לוחות הניסוי

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

שמרו על פסי הכוח מיושרים — הפס האדום מול האדום והכחול מול הכחול. אחרת החיווט בהמשך יהיה סיוט.

פירוק שני לוחות הניסוי לפני החיבור

הלשונית נכנסת לחריץ

שני הלוחות מחוברים ללוח ארוך אחד

שלב 4 — נועצים את הכפתורים ואת הזמזם

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

פירוק שבעת הכפתורים והזמזם אל לוח הניסוי

הכפתורים והזמזם נעוצים במקומם

שלב 5 — מקבעים את לוח הניסוי

שתי מדבקות דו-צדדיות מצמידות את הלוח לבסיס. בדקו את המיקום פעמיים לפני שאתם מסירים את הנייר המגן.

פירוק המדבקות הדו-צדדיות

לוח הניסוי מודבק לבסיס

מבט מלמעלה על הלוח המקובע

שלב 6 — תומך הקלידים

פירוק תומך הקלידים

התומך מותקן מעל הכפתורים

שלב 7 — לוח החזית

פירוק לוח החזית

לוח החזית במקומו

⚠️ עצרו כאן וחווטו לפני שתסגרו. ברגע שלוחות העץ הבאים ייכנסו, לא תוכלו להגיע ללוח הניסוי. השלימו את כל החיווט לפי הטבלה שב"החיבור", ורק אז המשיכו לשלב 9.

שלב 8 — החיווט

זהו השלב הארוך ביותר. קחו אוויר ועשו אותו חוט אחרי חוט, לא הכול ביחד.

פירוק החיווט — חוטים מהכפתורים אל הלוח

חוט מחבר בין שני לוחות הניסוי

חשוב במיוחד: שני לוחות הניסוי לא מחוברים חשמלית רק בגלל שהם נצמדו. צריך למתוח חוט מפס ה-5V של הלוח הראשון לפס ה-5V של השני, וחוט נוסף בין שני פסי ה-GND. בלי שני החוטים האלה, ארבעת הקלידים שמימין פשוט לא יגיבו.

כיפוף רגלי חוטי הדופונט

החיווט המלא מוכן

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

שלב 9 — מרכיבים את הקלידים

שבעה ברגי M3 באורך 10 מ״מ ושבעה אומי M3 — בורג לכל קליד.

פירוק הקלידים והברגים

הקלידים מוברגים

שלב 10 — מתקינים את מערך הקלידים

פירוק מערך הקלידים אל גוף הפסנתר

הקלידים במקומם מעל הכפתורים

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

שלב 11 — מגביה הקלידים

פירוק מגביה הקלידים

המגביה מותקן

שלב 12 — לוח הגב

פירוק לוח הגב

לוח הגב סוגר את הפסנתר

שלב 13 — מכסה הפסנתר

הלוח האחרון, זה עם החורים הקטנים שמעליו — דרכם יוצא הצליל של הזמזם.

פירוק מכסה הפסנתר

הפסנתר סגור ומוכן


החיבור

התרשים החשמלי. שבעה מעגלי כפתור זהים לגמרי, ומעגל אחד של הזמזם:

תרשים חשמלי — שבעה כפתורים עם נגדי 10k וזמזם דרך טרנזיסטור

וכך זה נראה על שני לוחות הניסוי:

חיבור בפועל — שבעה כפתורים וזמזם על שני לוחות ניסוי מחוברים

הקליד התו התדר הפין בלוח
1 דו (C4) 262 Hz 16
2 רה (D4) 294 Hz 17
3 מי (E4) 330 Hz 18
4 פה (F4) 349 Hz 19
5 סול (G4) 392 Hz 23
6 לה (A4) 440 Hz 12
7 סי (B4) 494 Hz 13

הזמזם מחובר לפין 14 דרך הנגד של 1kΩ והטרנזיסטור. הפינים אינם לפי הסדר — 12 ו-13 באים אחרי 23 — אז עקבו אחרי הטבלה ולא אחרי ההיגיון.


הבלוקים

התוכנית הזאת היא דוגמה מושלמת לסדר. יש בה הרבה מאוד בלוקים, אבל היא קלה יותר לקריאה מכל תוכנית אחרת בקורס — כי היא מחולקת נכון.

התוכנית הראשית — שמונה בלוקים בלבד

התוכנית הראשית של הפסנתר, הגדרת Si והגדרת Initialize

מתחת ל-start the program יש רק זה:

  • Initialize — בלוק ורוד אחד.
  • forever — ובתוכו שבעה בלוקים ורודים: Do, Re, Mi, Fa, Sol, La, Si.

זהו. כל התוכנית הראשית. אפשר להבין אותה במבט אחד — וזאת בדיוק המטרה.

מה זה בלוק ורוד

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

הבלוק Initialize

בתוך define Initialize יושבים שבעה בלוקים זהים:

set pin [16] mode to [input pullup], ואחריו אותו דבר עבור 17, 18, 19, 23, 12 ו-13.

מה הם עושים? אומרים ללוח: "הפין הזה הוא קלט — אני הולך לקרוא ממנו, לא לכתוב אליו. וחוץ מזה, תחזיק אותו במתח גבוה מבפנים." זה מה ש-input pullup אומר. כך, כשהכפתור לא לחוץ הפין קורא 1, וכשלוחצים עליו הוא מתחבר ל-GND וקורא 0.

שבעת בלוקי התווים

הגדרות הבלוקים Do, Re, Mi, Fa, Sol ו-La

כל שבעת בלוקי התווים בנויים בדיוק אותו דבר. הנה define Do במלואו:

if <(read digital pin [16]) = (0)> then   buzzer [14] frequency [C4]   wait until <(read digital pin [16]) = (1)>   buzzer [14] stop

ארבע שורות, וכל אחת מהן עושה משהו אחד:

if <(read digital pin [16]) = (0)> — הבלוק העגלגל read digital pin עונה מה קורה על הפין. 0 פירושו הקליד לחוץ.

buzzer [14] frequency [C4] — הבלוק הכחול שמנגן. בתיבה הראשונה מספר הפין של הזמזם, ובתיבה השנייה רשימה נפתחת של תווים: C4, D4, E4 וכן הלאה. אתם בוחרים מהרשימה במקום לזכור מספרי הרץ. ברגע שהבלוק הזה רץ, הזמזם מתחיל לנגן — וממשיך לנגן עד שמישהו יעצור אותו.

wait until <(read digital pin [16]) = (1)> — וזה הבלוק שהופך את הפסנתר לפסנתר. wait until עוצר את התוכנית במקום ומחכה עד שהתנאי במשושה יתקיים. כאן התנאי הוא "הפין חזר ל-1", כלומר הקליד שוחרר. כל עוד האצבע על הקליד — הצליל ממשיך.

buzzer [14] stop — האצבע עלתה, הצליל נפסק.

וזה בדיוק ההבדל בין צפצוף לכלי נגינה: בכלי נגינה אתם קובעים כמה זמן נמשך כל תו.

למה שבעה בלוקים ולא תוכנית אחת ארוכה

אפשר היה לדחוס את כל 28 השורות לתוך ה-forever. זה היה עובד — ואף אחד, גם לא אתם עצמכם בעוד שבוע, לא היה מצליח לקרוא את זה.

כשמפרידים לבלוקים עם שם, קורים שלושה דברים טובים: התוכנית הראשית נקראת כמו משפט בעברית; אם "מי" לא עובד, אתם יודעים בדיוק לאיזה בלוק להיכנס; וכשתרצו להוסיף קליד שמיני, תעתיקו בלוק קיים ותשנו שני דברים. זאת הדרך שבה עובדים מתכנתים אמיתיים, ובשיעור הזה עשיתם את זה בעצמכם.


מריצים

⬇ להורדת הקובץ Electronic_Piano.sb3 — גוררים אותו לתוך ACECode ולוחצים Upload.

ההסבר המלא על צריבה נמצא בשיעור ההתקנה.

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

הפסנתר האלקטרוני המוכן

ועכשיו נסו לנגן משהו. "פרה פרה" הוא מי-רה-דו-רה-מי-מי-מי. "יום הולדת" מתחיל בדו-דו-רה-דו-פה-מי.

לא עובד?

  • אף קליד לא מגיב → כנראה חסרים שני חוטי הגישור בין לוחות הניסוי. ראו שלב 8.
  • ארבעת הקלידים הימניים שותקים → אותו דבר בדיוק: פס הכוח של הלוח השני לא מחובר.
  • קליד אחד לא עובד → בדקו את הנגד 10kΩ שלו ואת החוט לפין. הפינים 12 ו-13 הם אלה שהכי קל להתבלבל בהם.
  • הזמזם רועש רעש צורם ולא תו → ודאו שהזמזם הוא הפסיבי. האקטיבי לא יודע לנגן תווים.
  • הצליל לא נפסק → הכפתור נתקע לחוץ. לחצו ושחררו כמה פעמים, ואם צריך העלו את הקליד ובדקו שאינו מתחכך בעץ.

מה קרה כאן

הפכתם לחיצה למספר, ומספר לצליל.

הבלוק buzzer frequency אמר לזמזם כמה פעמים בשנייה לרעוד. הבלוק wait until נתן לכם שליטה על משך התו. הבלוק set pin mode to input pullup הכין את שבעת הפינים לקריאה. והבלוקים הוורודים של define הפכו תוכנית שיכלה להיות בלגן אחד גדול לתוכנית ראשית בת שמונה בלוקים.


סיימתם את הקורס

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

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

וזה בדיוק המקום שאליו כדאי להמשיך: הקורס באותה ערכה עם Arduino ב-C++ או הקורס עם MicroPython. אותם רכיבים, אותם פרויקטים, שפה חדשה. אתם כבר יודעים איך הכול עובד — נשאר רק ללמוד איך לכתוב את זה.


תרגילים

  1. מעבירים את הפסנתר לאוקטבה גבוהה. בכל אחד משבעת בלוקי התווים שנו את התו ברשימה הנפתחת של buzzer frequency לאוקטבה הבאה — C4 יהפוך ל-C5, D4 ל-D5 וכן הלאה. אותו סולם בדיוק, רק צייצני יותר.
  2. קליד עם נורית. בחרו קליד אחד, והוסיפו בתוך הבלוק שלו set digital pin to [high] לפני הצליל ו-set digital pin to [low] אחרי buzzer stop. חברו נורית עם נגד 220Ω לפין פנוי. הקליד יאיר בזמן שהוא מנגן.
  3. תו שנשמע גם אחרי שעזבתם. בבלוק Do, הוסיפו wait (300) milliseconds מיד אחרי wait until, לפני buzzer stop. עכשיו לתו יש "זנב" קצר, כמו בפסנתר עם דוושה.
  4. אתגר — נגן שיר לבד. הוסיפו קליד שמיני (או השתמשו באחד הקיימים) שיפעיל רצף של שישה בלוקי buzzer frequency עם wait ביניהם — וינגן מנגינה קצרה לבד. רמז: פתחו בלוק define חדש בשם Song, שימו בתוכו את כל הרצף, וקראו לו מתוך התנאי של הקליד.

🧰 הרכיבים לשיעור הזה

רוצים את חומרי הקורס והעדכונים?

נשלח למייל את קובצי הקוד, החומרים ועדכונים על שיעורים חדשים. בלי ספאם.