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

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

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

זמזם פסיבי ורשימות — לנגן מנגינה

מה בשיעור?

  • למה זמזם פסיבי יכול לנגן
  • freq ו-duty — שני פרמטרים עצמאיים
  • טבלת תווים ותדרים
  • רשימות בפייתון ו-len
  • שתי רשימות מקבילות: תווים וקצב

מה נלמד כאן

  • זמזם פסיבי ושליטה בתדר
  • 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: הפוטנציומטר שולט בקצב.

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

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

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