מה נלמד כאן
- תצוגת שבעה מקטעים
- טבלת קודי הספרות
- רשימה של רשימות ופונקציה בפייתון
הספרות שבכל מקום

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

שמונה נוריות בצורת הספרה 8: שבעה מקטעים (a-g) ונקודה עשרונית (dp).
כל מקטע הוא נורית רגילה. צירופים שונים = ספרות ואותיות. להצגת 5: מדליקים a, f, g, c, d.
2. טבלת הקודים

| הספרה | a | b | c | d | e | f | g | dp |
|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
| 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
| 2 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
| 3 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 |
| 4 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
| 5 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
| 6 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 |
| 7 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
| 8 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
| 9 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |
3. רשימה של רשימות
בפייתון, טבלה היא פשוט רשימה שכל איבר שלה הוא רשימה:
number_list = [
[1, 1, 1, 1, 1, 1, 0, 0], # 0
[0, 1, 1, 0, 0, 0, 0, 0], # 1
...
]
ניגשים עם שני אינדקסים:
number_list[5][0] # המקטע a של הספרה 5 → 1
הראשון הוא השורה (הספרה), השני העמודה (המקטע).
בפייתון זה הרבה יותר טבעי מ-C: אין צורך להצהיר
int number_array[][8]עם גדלים — פשוט רושמים רשימות.
4. פונקציה
def display_number(num):
for i in range(8):
pins[i].value(number_list[num][i])
def מגדירה פונקציה. במקום שמונה פקודות בכל פעם — display_number(7).
בפייתון אין
void, אין סוגי החזרה, ואין סוגריים מסולסלים. ההזחה היא המבנה — מה שמוזח פנימה שייך לפונקציה.
הניסוי
המטרה: להציג 0 עד 9, כל אחת חצי שנייה.
רשימת רכיבים
| הרכיב | כמות |
|---|---|
| לוח ESP32 | 1 |
| לוח ניסוי 400 נקודות | 1 |
| תצוגת שבעה מקטעים | 1 |
| נגד 220Ω | 8 |
שמונה נגדים — אחד לכל מקטע.
התרשים החשמלי

החיבור

זה החיבור הצפוף ביותר שבניתם. קחו את הזמן.
הקוד
from machine import Pin
import time
pin_a = 5; pin_b = 16; pin_c = 17; pin_d = 18
pin_e = 19; pin_f = 23; pin_g = 12; pin_dp = 13
pin_list = [pin_a, pin_b, pin_c, pin_d, pin_e, pin_f, pin_g, pin_dp]
number_list = [
[1, 1, 1, 1, 1, 1, 0, 0], # 0
[0, 1, 1, 0, 0, 0, 0, 0], # 1
[1, 1, 0, 1, 1, 0, 1, 0], # 2
[1, 1, 1, 1, 0, 0, 1, 0], # 3
[0, 1, 1, 0, 0, 1, 1, 0], # 4
[1, 0, 1, 1, 0, 1, 1, 0], # 5
[1, 0, 1, 1, 1, 1, 1, 0], # 6
[1, 1, 1, 0, 0, 0, 0, 0], # 7
[1, 1, 1, 1, 1, 1, 1, 0], # 8
[1, 1, 1, 1, 0, 1, 1, 0], # 9
]
# יוצרים אובייקט Pin לכל מקטע — בשורה אחת
pins = [Pin(p, Pin.OUT) for p in pin_list]
def display_number(num):
for i in range(8):
pins[i].value(number_list[num][i])
while True:
for n in range(10):
display_number(n)
time.sleep(0.5)
שימו לב לשורה הזו:
pins = [Pin(p, Pin.OUT) for p in pin_list]
זו הבנת רשימה (list comprehension) — תכונה של פייתון שיוצרת רשימה שלמה בשורה אחת. היא יוצרת שמונה אובייקטי Pin, אחד לכל מספר ברשימה.
ב-C היה צריך לולאה של ארבע שורות. כאן שורה אחת שנקראת כמעט כמו משפט באנגלית.
מה אמור לקרות

נסו בעצמכם
- הוסיפו לטבלה את האות A (a,b,c,e,f,g דולקים).
- הדליקו את הנקודה: שנו את העמודה האחרונה ל-1.
- ספרו לאחור:
range(9, -1, -1). - שלבו עם שיעור 4: לחיצה מקדמת את הספרה.
- נסו לכתוב את שורת ה-
pinsבלולאה רגילה. כמה שורות יצאו?


