Menu
CoddyTech

דפוסי ספרות בבייטים

חלק מהיחידה צגים וחיישנים במסלול ה-Arduino של Coddy. שיעור 2 מתוך 24.

שבע שורות digitalWrite() לכל ספרה הן הרבה קוד. שמרו כל ספרה כתבנית: ביט אחד לכל מקטע, 1 לדולק ו־0 לכבוי.

byte הוא מספר שלם בין 0 ל־255 שמורכב משמונה ביטים. כתבו אותו בבינארי עם 0b לפניו. קראו את הביטים מימין: הביט האחרון הוא המקטע a, זה שלפניו הוא b, וכך הלאה עד g.

//           gfedcba
byte one = 0b0000110;  // b ו-c: הערך 1

עשר תבניות נכנסות למערך, כך ש־digits[3] היא התבנית של הספרה 3. bitRead(), מתוך המונה הבינארי, קוראת ביט אחד ממנו, בספירה מימין והחל מ־0:

bitRead(0b0000110, 0)  // 0: המקטע a כבוי
bitRead(0b0000110, 1)  // 1: המקטע b דולק

פונקציה יכולה לעבור על שבעת הביטים באמצעות לולאת for ולהגדיר כל פין של מקטע, כך שציור של כל ספרה נעשה בקריאה אחת: showDigit(7);

challenge icon

אתגר

בינוני

בתבנית ההתחלתית מופיעות כל התבניות מלבד 4 ו-7, ו-loop() מציגה את 1, 4 ו-7.

  • מלאו את 4 (המקטעים b, c, f, g) ואת 7 (a, b, c)
  • כתבו את showDigit(n): עבור כל i מ-0 עד 6, הגדירו את segmentPins[i] ל-LOW כאשר הביט i של digits[n] הוא 1, ול-HIGH כאשר הוא 0

לחצו על Run, ואז על Check.

נסו בעצמכם

const int segmentPins[7] = {2, 3, 4, 5, 6, 7, 8};  // a, b, c, d, e, f, g

// תבנית אחת לכל ספרה, קוראים מימין: הביט האחרון הוא מקטע a.
//                     gfedcba
const byte digits[10] = {
  0b0111111,  // 0
  0b0000110,  // 1
  0b1011011,  // 2
  0b1001111,  // 3
  0b0000000,  // 4: יש להשלים
  0b1101101,  // 5
  0b1111101,  // 6
  0b0000000,  // 7: יש להשלים
  0b1111111,  // 8
  0b1101111   // 9
};

void showDigit(int n) {
  // הדלק את המקטעים של digits[n], וכבה את השאר
}

void setup() {
  for (int i = 0; i < 7; i++) {
    pinMode(segmentPins[i], OUTPUT);
  }
}

void loop() {
  showDigit(1);
  delay(1000);
  showDigit(4);
  delay(1000);
  showDigit(7);
  delay(1000);
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה צגים וחיישנים

תרגלו בעצמכם: Arduino אונליין