דפוסי ספרות בבייטים
חלק מהיחידה צגים וחיישנים במסלול ה-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);
אתגר
בינוניבתבנית ההתחלתית מופיעות כל התבניות מלבד 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);
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה צגים וחיישנים
תרגלו בעצמכם: Arduino אונליין