מה נלמד כאן
- פסנתר מלא
Pin.PULL_UP— נגדים בתוך השבב- הפרויקט המסכם
הפרויקט האחרון

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

| הקלַיד | התו | התדר |
|---|---|---|
| 1 | דו | 523 |
| 2 | רה | 587 |
| 3 | מי | 659 |
| 4 | פה | 698 |
| 5 | סול | 784 |
| 6 | לה | 880 |
| 7 | סי | 988 |
Pin.PULL_UP — בלי נגדים
בשיעור 4 בנינו Pull-Up עם נגד חיצוני. כאן יש שבעה לחצנים — שבעה נגדים ושבעה חוטים.
הפתרון:
btn = Pin(16, Pin.IN, Pin.PULL_UP)
ל-ESP32 יש נגדי Pull-Up מובנים בשבב. הפרמטר השלישי מפעיל אותם — ומייתר את כל שבעת הנגדים.
⚠️ ההיגיון נשאר הפוך: לחיצה = 0, משוחרר = 1.
שווה לדעת שזה היה קיים כל הזמן. למדנו את הדרך הארוכה קודם — כי בלי להבין מה עושה נגד Pull-Up,
PULL_UPהיה נשאר קסם.
ההרכבה
בלי ערכת הבנייה — אפשר לבנות על שני לוחות ניסוי.
שלבי ההרכבה:




























הניסוי
המטרה: שבעה לחצנים מנגנים שבעה תווים.
רשימת רכיבים
| הרכיב | כמות |
|---|---|
| לוח ESP32 | 1 |
| לוח ניסוי 400 נקודות | 2 |
| זמזם פסיבי | 1 |
| לחצנים | 7 |
| טרנזיסטור + נגד 1kΩ | 1 |
שבעה לחצנים ואפס נגדי Pull-Up.
הקוד
from machine import Pin, PWM
import time
key_pins = [16, 17, 18, 19, 23, 12, 13]
notes = [523, 587, 659, 698, 784, 880, 988]
keys = [Pin(p, Pin.IN, Pin.PULL_UP) for p in key_pins]
buzzer = PWM(Pin(14))
buzzer.duty(0)
while True:
for i in range(7):
if keys[i].value() == 0:
time.sleep_ms(50) # ריטוט
if keys[i].value() == 0:
print(i + 1)
buzzer.duty(512)
buzzer.freq(notes[i])
while keys[i].value() == 0: # כל עוד מחזיקים
pass
buzzer.duty(0)
למה הקוד כל כך קצר
שלושה דברים:
1. רשימות מקבילות — keys[i] הלחצן, notes[i] התו. התבנית משיעור 9.
2. Pin.PULL_UP — חסך שבעה נגדים.
3. ה-while — וכאן הוא דווקא רצוי. הוא מחזיק את הצליל בדיוק כל עוד מחזיקים את הקלַיד.
שימו לב שזה ההפך משיעור 37, שם ה-
whileהיה בעיה. אותו כלי, הקשר אחר. להבין מתי להשתמש במה — זה מה שמפריד בין להעתיק קוד לכתוב קוד.
סיימתם את הקורס
עצרו רגע ותסתכלו אחורה.
התחלתם עם נורית אחת ובשאלה למה צריך להבדיל בין רגל ארוכה לקצרה.
ובדרך למדתם: machine.Pin ואובייקטים, PWM ו-duty, ADC ו-atten, תשעה סוגי חיישנים, מנועים וסרוו, תצוגות וסריקה דינמית, רשימות ומילונים, try/except, מכונות מצבים והיסטרזיס, ספריות על הלוח, בלוטות' ו-WiFi — ובניתם שרת אינטרנט על שבב.
וכל זה בפייתון — שפה שתשמש אתכם גם הרבה מעבר לחומרה.
מה שלמדתם לא ספציפי לערכה הזו. MicroPython רצה על עשרות לוחות שונים, ואותם עקרונות עובדים בכולם.
עכשיו תבנו משהו שאף אחד לא אמר לכם לבנות. זה החלק הכי טוב.
נסו בעצמכם
- נגנו "כוכב קטן" — התווים משיעור 9.
- הוסיפו נורית לכל קלַיד.
- הוסיפו מתג אוקטבה: לחצן שמכפיל את התדרים ב-2.
- הקליטו רצף: שמרו את התווים ברשימה ונגנו חזרה.
- שלבו עם שיעור 33: פסנתר שנשלט מהדפדפן.


