Menu
CoddyTech

ספירה לאחור עד אפס

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

כמו בסריקה של הסרוו, לולאת for יכולה לספור לאחור: מתחילים במספר גבוה, ממשיכים כל עוד המספר הוא 0 או יותר, ומחסירים 1 בכל פעם בעזרת n--:

for (int n = 5; n >= 0; n--) {
  showDigit(n);
  delay(1000);
}

כך מוצגים 5, 4, 3, 2, 1 ו־0. עם n > 0 הספירה הייתה נעצרת ב־1 ולעולם לא מציגה את 0.

ספירה לאחור צריכה להתרחש פעם אחת, ולא שוב ושוב. קוד בתוך setup() רץ פעם אחת, לכן כדאי לשים שם את הספירה לאחור ואת מה שקורה ב־0 אחריה. אפשר להשאיר את loop() ריקה, ו־0 יישאר בתצוגה.

challenge icon

אתגר

קל

הזמזם מחובר לפין 9. צרו ספירה לאחור לשיגור:

  • בתוך setup(), ספרו לאחור מ־5 עד 0, מספר אחד בכל שנייה
  • כשמגיעים ל־0, הפעילו את הזמזם באמצעות tone(buzzerPin, 880, 1000)
  • השאירו את 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
  0b1100110,  // 4
  0b1101101,  // 5
  0b1111101,  // 6
  0b0000111,  // 7
  0b1111111,  // 8
  0b1101111   // 9
};

void showDigit(int n) {
  for (int i = 0; i < 7; i++) {
    if (bitRead(digits[n], i) == 1) {
      digitalWrite(segmentPins[i], LOW);   // דולק
    } else {
      digitalWrite(segmentPins[i], HIGH);  // כבוי
    }
  }
}

const int buzzerPin = 9;

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

  // ספרו כאן לאחור מ-5 עד 0, ואז הפעילו את הזמזם
}

void loop() {
}
quiz iconבחנו את עצמכם

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

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

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