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

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

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

תצוגת שבעה מקטעים — להציג ספרות

מה בשיעור?

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

מה נלמד כאן

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

הספרות שבכל מקום

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

תצוגת שבעה מקטעים


הידע שצריך

1. איך זה בנוי

התצוגה בנויה משמונה נוריות עצמאיות מסודרות בצורת הספרה 8:

מבנה התצוגה וסימון המקטעים

  • שבעה מקטעים — מסומנים באותיות a, b, c, d, e, f, g
  • נקודה עשרוניתdp

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

לדוגמה, כדי להציג 5: מדליקים את a, f, g, c, d ומכבים את b, e, dp. נסו לצייר את זה בראש — זה בדיוק נראה כמו 5.

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

שימו לב ל-8: כל המקטעים דולקים. ול-1: רק שניים. זו הספרה הכי "זולה" בתצוגה.

3. מערך דו-ממדי

הטבלה למעלה היא טבלה — שורות ועמודות. ובקוד, טבלה היא מערך דו-ממדי:

int number_array[][8] = {
  { 1, 1, 1, 1, 1, 1, 0, 0 },  // 0
  { 0, 1, 1, 0, 0, 0, 0, 0 },  // 1
  // ...
};

ניגשים אליו עם שני אינדקסים:

number_array[5][0]   // המקטע a של הספרה 5 → 1
number_array[1][3]   // המקטע d של הספרה 1 → 0

הראשון הוא השורה (הספרה), השני הוא העמודה (המקטע). זה בדיוק מה שהופך את הטבלה שלמעלה לקוד.

4. פונקציה משלכם

עד עכשיו השתמשתם בפונקציות שמישהו כתב. הפעם תכתבו אחת:

void display_number(int num) {
  for (int i = 0; i < 8; i++) {
    digitalWrite(pin_array[i], HIGH);        // מכבים הכול
  }
  for (int i = 0; i < 8; i++) {
    digitalWrite(pin_array[i], number_array[num][i]);   // מדליקים לפי הטבלה
  }
}

מה זה נותן? במקום לכתוב שמונה שורות digitalWrite בכל פעם שרוצים להציג ספרה — כותבים display_number(7). פעם אחת מגדירים, ואז משתמשים.

מבנה פונקציה:

void שם_הפונקציה(פרמטרים) {
  // מה שהיא עושה
}

void פירושו "לא מחזירה ערך" — היא רק עושה משהו.


הניסוי

המטרה: להציג את הספרות 0 עד 9, כל אחת חצי שנייה.

רשימת רכיבים

הרכיב כמות
לוח ESP32 1
לוח ניסוי 400 נקודות 1
תצוגת שבעה מקטעים 1
נגד 220Ω 8

שמונה נגדים — אחד לכל מקטע. כל מקטע הוא נורית, וכל נורית צריכה הגנה משלה.

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

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

החיבור

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

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


הקוד

// הפינים של כל מקטע
int pin_a = 5;   int pin_b = 16;  int pin_c = 17;  int pin_d = 18;
int pin_e = 19;  int pin_f = 23;  int pin_g = 12;  int pin_dp = 13;

int pin_array[8] = { pin_a, pin_b, pin_c, pin_d, pin_e, pin_f, pin_g, pin_dp };

// טבלת הספרות — מערך דו-ממדי
int number_array[][8] = {
  { 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
};

void display_number(int num) {
  for (int i = 0; i < 8; i++) {
    digitalWrite(pin_array[i], HIGH);
  }
  for (int i = 0; i < 8; i++) {
    digitalWrite(pin_array[i], number_array[num][i]);
  }
}

void setup() {
  for (int i = 0; i < 8; i++) {
    pinMode(pin_array[i], OUTPUT);
    digitalWrite(pin_array[i], HIGH);
  }
}

void loop() {
  for (int i = 0; i < 10; i++) {
    display_number(i);
    delay(500);
  }
}

מה אמור לקרות

התצוגה סופרת


נסו בעצמכם

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

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

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

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