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

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

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

מונה — שארית וחילוק שלמים

מה בשיעור?

  • שלושת שלבי המונה
  • פעולת שארית והדימוי של התפוחים
  • פירוק מספר לספרות
  • למה // ולא / בפייתון
  • max ו-min להגבלת טווח בשורה אחת

מה נלמד כאן

  • פעולת שארית (%)
  • לפרק מספר לספרות
  • מונה עם שלושה כפתורים

מונים

מונה

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


הידע שצריך

1. שלושת השלבים

כפתורים (+1, -1, איפוס) → עיבוד עם הגבלת טווח → תצוגה.

2. פעולת שארית

פעולת השארית

% מחזירה את מה שנשאר אחרי חלוקה:

1234 ÷ 10 = 123, שארית 4

הדימוי — תפוחים: 5 תפוחים ל-4 אנשים → כל אחד מקבל אחד, שארית 1.

3. פירוק מספר לספרות

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

הספרה הנוסחה התוצאה
יחידות 1234 % 10 4
עשרות (1234 // 10) % 10 3
מאות (1234 // 100) % 10 2
אלפים 1234 // 1000 1

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

⚠️ בפייתון חייבים // ולא /. סימן אחד נותן מספר עשרוני (1234 / 10 = 123.4), ושניים נותנים חילוק שלמים (123). ב-C זה קרה לבד כשחילקו מספרים שלמים. כאן צריך לבקש במפורש.

ובפייתון יש קיצור נחמד:

digits = [count // 1000, (count // 100) % 10, (count // 10) % 10, count % 10]

הניסוי

המטרה: שלושה כפתורים, והתוצאה על ארבע ספרות.

רשימת רכיבים

הרכיב כמות
לוח ESP32 1
לוח ניסוי 400 נקודות 1
תצוגת ארבע ספרות 1
לחצנים 3
נגד 220Ω 8
נגד 10kΩ 3

הפרויקט הגדול ביותר עד כה — 12 פינים ו-11 נגדים. תכננו לפני שמחברים.

התרשים החשמלי

התרשים החשמלי

החיבור

חיבור הרכיבים


מבנה התוכנית

count = 0

while True:
    # 1. כפתורים
    if btn_up.value() == 0:
        time.sleep(0.2)
        while btn_up.value() == 0: pass
        count += 1
    if btn_down.value() == 0:
        time.sleep(0.2)
        while btn_down.value() == 0: pass
        count -= 1
    if btn_reset.value() == 0:
        time.sleep(0.2)
        while btn_reset.value() == 0: pass
        count = 0

    # 2. הגבלת טווח
    count = max(0, min(9999, count))

    # 3. פירוק לספרות
    digits = [count // 1000, (count // 100) % 10, (count // 10) % 10, count % 10]

    # 4. סריקה
    for i in range(4):
        display_number(i, digits[i])
        time.sleep_ms(5)

שימו לב לשורה count = max(0, min(9999, count))בשורה אחת היא מגבילה את הערך משני הכיוונים. בלעדיה, -1 על 0 ייתן מספר שלילי והפירוק ייתן זבל.

תמיד תגבילו טווח לפני שמציגים.

מה אמור לקרות

המונה בפעולה


נסו בעצמכם

  • הגיעו ל-9999 והוסיפו. עצר? עכשיו הסירו את ההגבלה ונסו שוב.
  • הפכו לשעון עצר: count += 1 כל שנייה.
  • הוסיפו זמזם בכל 10.
  • נסו / במקום //. איזו שגיאה מקבלים, ולמה?
  • איך תפרקו מספר בן שש ספרות?

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

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

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