מה נלמד כאן
- זמזם פסיבי ושליטה בתדר
freq()לידduty()- רשימות בפייתון
- לנגן "כוכב קטן"
מהצפצוף למנגינה

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

אין לו מעגל תנודות בפנים. הוא מרעיד בתדר שאתם נותנים: 523Hz → דו. 784Hz → סול.
הפסיבי הוא זה שפתוח מלמטה.
2. freq() — הפקודה החדשה
בשיעור 2 השתמשנו ב-duty() כדי לשלוט בהספק. כאן נוסיף:
buzzer = PWM(Pin(5))
buzzer.duty(512) # עוצמה — חצי מחזור פעולה
buzzer.freq(523) # תדר — התו שמתנגן
שני פרמטרים עצמאיים:
dutyקובע כמה חזקfreqקובע איזה צליל
ב-Arduino הייתה פקודה אחת,
tone(). ב-MicroPython זה מפורק לשניים — וזה בעצם מדויק יותר, כי אלה באמת שני דברים שונים.
להשתקה: buzzer.duty(0).
3. תווים ותדרים

| התו | דו | רה | מי | פה | סול | לה | סי |
|---|---|---|---|---|---|---|---|
| סימון | C4 | D4 | E4 | F4 | G4 | A4 | B4 |
| תדר | 523 | 587 | 659 | 698 | 784 | 880 | 988 |
4. רשימות
notes = [C4, C4, G4, G4, A4, A4, G4, F4, F4, E4, E4, D4, D4, C4]
beats = [1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2]
רשימה (list) היא מבנה הנתונים הבסיסי של פייתון. האינדקס מתחיל מאפס: notes[0] הוא הראשון.
שתי רשימות מקבילות: איבר i בשתיהן מתאר את אותו תו — מה מנגנים וכמה זמן.
ורשימות בפייתון נוחות בהרבה ממערכים ב-C: אין צורך להצהיר גודל, אפשר לערבב אורכים, ו-
len(notes)נותן את המספר. אין את התעלול שלsizeofחלקיsizeof.
5. קצב

בתווים כתוב ♪ = 100 — 100 פעימות בדקה, כלומר 60,000 ÷ 100 = 600 מילי-שניות לפעימה.
הניסוי
המטרה: לנגן "כוכב קטן".
רשימת רכיבים
| הרכיב | כמות |
|---|---|
| לוח ESP32 | 1 |
| לוח ניסוי 400 נקודות | 1 |
| זמזם פסיבי | 1 |
| טרנזיסטור + נגד 1kΩ | 1 |
אותו חיבור כמו בשיעור הקודם — רק הזמזם מתחלף.
התרשים החשמלי

החיבור

הקוד
from machine import Pin, PWM
import time
C4 = 523; D4 = 587; E4 = 659; F4 = 698
G4 = 784; A4 = 880; B4 = 988
buzzer = PWM(Pin(5))
notes = [C4, C4, G4, G4, A4, A4, G4,
F4, F4, E4, E4, D4, D4, C4]
beats = [1, 1, 1, 1, 1, 1, 2,
1, 1, 1, 1, 1, 1, 2]
while True:
buzzer.duty(512) # עוצמה
for i in range(len(notes)):
buzzer.freq(notes[i]) # התו
time.sleep_ms(int(beats[i] * 600))
buzzer.duty(0) # הפסקה קצרה בין תווים
time.sleep_ms(50)
buzzer.duty(512)
buzzer.duty(0)
time.sleep(2) # הפסקה לפני חזרה
len(notes) מחזירה את מספר האיברים. הוסיפו תווים לרשימה — והלולאה תתאים את עצמה לבד.
מה אמור לקרות

נסו בעצמכם
- שנו את המקדם 600 ל-300 ואז ל-1000.
- הוסיפו את החלק השני של השיר לשתי הרשימות.
- נגנו אוקטבה גבוה: הכפילו כל תדר ב-2.
- הסירו את
duty(0)בין התווים. למה המנגינה מתמזגת? - שלבו עם שיעור 7: הפוטנציומטר שולט בקצב.


