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

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

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

פסנתר בננות — נגיעה בפרי מנגנת תו

מה בשיעור?

  • להסביר מה זה חיישן מגע קיבולי ואיך הגוף שלכם משנה אותו
  • לזהות אילו פינים בלוח ESP32 מסומנים Touch ואילו אסור להשתמש בהם
  • לקרוא ערך מגע עם הבלוק read touch pin ולהבין למה מספר קטן = נגיעה
  • לבחור סף (threshold) נכון לפי המספרים שרואים בקונסול
  • לחבר שבע בננות לשבעה פינים ולהתאים לכל אחת תו
  • לשרשר שבעה בלוקי if בתוך forever ולהבין למה הסדר לא משנה

מה נלמד כאן

  • למה בננה יכולה לשמש כמקש של פסנתר
  • מה זה מגע קיבולי ואיך הלוח מרגיש שאצבע מתקרבת
  • אילו פינים ב-ESP32 יודעים לזהות מגע, ואילו שניים כדאי לעקוף
  • איך קוראים ערך מגע עם הבלוק read touch pin
  • איך בוחרים סף — המספר שמפריד בין ״לא נוגעים״ ל״נוגעים״
  • איך בונים שבעה תנאים בתוך לולאה אחת

פסנתר שאפשר לאכול

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

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

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

ילד מנגן על שבע בננות המחוברות בחוטים צבעוניים ללוח בקרה כחול על שולחן עץ


הרכיבים

מגע קיבולי — הרעיון בלי מילים מסובכות

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

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

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

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

אילו פינים יודעים לעשות את זה

לא כל פין בלוח. רק פינים שמסומנים Touch בתרשים הפינים. תסתכלו על התרשים — ליד כל פין כזה כתוב Touch0, Touch4, Touch5 וכן הלאה.

תרשים פינים של לוח ESP32 של ACEBOTT עם תוויות צבעוניות, כולל סימוני Touch ליד פינים 4, 12, 13, 14, 27, 32 ו-33

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

הפינים הבטוחים למגע הם: 4, 12, 13, 14, 27, 32, 33. בדיוק שבעה. ובדיוק שבעה תווים יש בסולם. במקרה? ממש לא — בגלל זה הפרויקט הזה בנוי כך.

הזמזם הפסיבי

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

הוא מחובר לפין 5 דרך טרנזיסטור S8050 ונגד 1KΩ. הטרנזיסטור הוא מין ברז חשמלי: הפין של הלוח נותן סימן חלש, והטרנזיסטור פותח בשבילו זרם חזק יותר מהמתח הראשי. ככה הזמזם מקבל מספיק כוח בלי שהפין העדין יצטרך לספק אותו בעצמו.


החיבור

סכמת חיבורים: זמזם המחובר דרך טרנזיסטור S8050 ונגד 1 קילואוהם לפין IO05, ושבעה פינים IO04, IO12, IO13, IO14, IO27, IO32, IO33 המחוברים לשבעה פירות

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

חלק ראשון — הזמזם. בצד שמאל: פין IO05 יוצא דרך נגד 1KΩ אל הרגל האמצעית של הטרנזיסטור S8050. הזמזם יושב מעל הטרנזיסטור, והרגל השלישית של הטרנזיסטור הולכת ל-GND. את זה מרכיבים על הבּרֶדבּוֹרד.

חלק שני — הבננות. בצד ימין פשוט שבעה חוטים שיוצאים מהלוח ישר לפירות:

פין פרי תו
IO4 בננה 1 DO
IO12 בננה 2 RE
IO13 בננה 3 MI
IO14 בננה 4 FA
IO27 בננה 5 SO
IO32 בננה 6 LA
IO33 בננה 7 TI

תרשים חיבורים מפורט: לוח ESP32 עם ברדבורד ועליו זמזם וטרנזיסטור, ושבעה חוטים צבעוניים היוצאים מהלוח לשבע בננות המסודרות בשורה

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

שלושה דברים שכדאי לדעת מראש:

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

הבלוקים

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

תוכנית בלוקים מלאה: בלוק אתחול זמזם, ואחריו לולאת forever עם שבע שורות הדפסה לקונסול ושבעה בלוקי if שכל אחד בודק read touch pin ומנגן תו

הבלוק החדש

הבלוק הכחול read touch pin עם תיבת בחירה שבה כתוב 27

הכוכב של השיעור הוא read touch pin [27]. הוא נמצא בקטגוריה Robots בארגז הבלוקים. הצורה שלו עגולה — כלומר הוא לא פעולה, הוא מספר. אי אפשר לשים אותו לבד בתוכנית; הוא תמיד נכנס לתוך חור של בלוק אחר, בדיוק כמו שמספר נכנס לחור.

מה הוא מחזיר? מספר שלם שמייצג את מצב המגע על הפין. ככל שהמספר קטן יותר — כך הנגיעה חזקה יותר. בתיבת הבחירה בוחרים את מספר הפין, ורק אחד מהשבעה הבטוחים: 4, 12, 13, 14, 27, 32, 33.

השורה שרצה פעם אחת

set the buzzer [5] beat duration to [600] ms — זה בלוק האתחול של הזמזם. הוא אומר שני דברים: הזמזם יושב על פין 5, וכל ״פעימה שלמה״ תימשך 600 אלפיות שנייה. אם תשנו את 600 ל-300, כל תו יהיה קצר וקופצני. אם תשימו 1200, התווים יימרחו. שחקו עם זה.

הלולאה האינסופית

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

החלק שמדפיס לקונסול

שבע השורות הכחולות הראשונות הן serial port [115200] prints continuously [...]. כל אחת מדפיסה טקסט אל הקונסול במחשב — למשל T0: 34. הסוגריים בתוכן מכילים בלוקי join (חיבור מחרוזות) שמדביקים יחד את השם (T0), את הנקודתיים ואת המספר שחוזר מ-read touch pin.

השורה serial print [115200] ( ) בסוף שולחת שורה ריקה, כדי שכל סבב יתחיל בשורה חדשה.

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

שבעת התנאים

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

if < read touch pin [4] < [20] > then

לבלוק if יש חור משושה בראש — מקום שרק תנאי נכנס אליו. בפנים יושב בלוק ההשוואה < (קטן מ-), ובתוכו משמאל read touch pin [4] ומימין המספר 20.

תקראו את זה בקול: ״אם הערך שחוזר מפין המגע 4 קטן מ-20, אז...״. וזוכרים את הכלל? קטן = נוגעים. אז זה בעצם אומר: אם נוגעים בבננה הראשונה.

בתוך ה-if יושב בלוק אחד:

p-buzzer [5] frequency [C4] duration [whole beat] beat

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

וכך נמשך הרצף:

תנאי תו בבלוק שם בעברית
read touch pin 4 < 20 C4 דו
read touch pin 12 < 20 D4 רה
read touch pin 13 < 20 E4 מי
read touch pin 14 < 20 F4 פה
read touch pin 27 < 20 G4 סול
read touch pin 32 < 20 A4 לה
read touch pin 33 < 20 B4 סי

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

המספר 20

המספר 20 הוא הסף. הוא הגבול שאתם מחליטים עליו: מתחתיו זו נגיעה, מעליו זו סתם בננה שיושבת.

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

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


מריצים

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

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

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

למעלה: שבע בננות המחוברות בחוטים ללוח ESP32 עם סוללה. למטה: חלון קונסול שחור המציג שורות של ערכי מגע T0 עד T6 בין 21 ל-36

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

ואז תנגנו. דו רה מי פה סול לה סי.


מה קרה כאן

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

הבלוק read touch pin מביא את המספר הזה לתוכנית. בלוק ההשוואה < הופך אותו לתשובת כן/לא. בלוק ה-if מחליט אם לפעול. ובלוק p-buzzer מוציא את התו.

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


תרגילים

  1. תכווננו את הסף שלכם. קראו בקונסול את הערכים של כל שבע הבננות במנוחה, וגם בזמן נגיעה. בחרו מספר שנמצא באמצע, ושנו את כל שבעת בלוקי < מ-20 למספר שלכם.

  2. שנו את אורך התו. שנו את set the buzzer [5] beat duration to [600] ms ל-250. עכשיו נסו לנגן מנגינה מהירה. איזה אורך נוח יותר לנגינה — ולמה?

  3. העלו אוקטבה. החליפו את כל שבעת התווים בבלוקי p-buzzer מ-C4, D4, E4... ל-C5, D5, E5... מה קרה לצליל? נסו להסביר במילים שלכם למה המספר ליד האות משנה את הגובה.

  4. בננה שגם מדליקה. הוסיפו בתוך אחד מבלוקי ה-if בלוק set digital pin [2] to [high] לפני התו ובלוק set digital pin [2] to [low] אחריו, וחברו נורית לפין 2 כמו בשיעור 1. עכשיו התו הזה גם מהבהב.

  5. אתגר: נסו להחליף פרי אחד בכוס מים, בכף מתכת או בסליל נייר כסף. מה עובד הכי טוב? מה זה מלמד אתכם על מה הלוח באמת מודד?

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

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

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