שעון NeoPixel: שניות
חלק מהיחידה פרויקטים במסלול ה-Arduino של Coddy. שיעור 21 מתוך 24.
הפרויקט האחרון הוא שעון ללא מספרים: טבעת של 12 נוריות NeoPixel, כמו 12 השעות על לוח השעון, כאשר כל מחוג הוא אור צבעוני. פיקסל 0 נמצא למעלה, בשעה 12, והמספרים מתקדמים בכיוון השעון. שני כפתורים יאפשרו לכוון את השעה.
נתחיל במחוג השניות. בדקה יש 60 שניות, ובטבעת יש 12 פיקסלים, לכן המחוג מתקדם פיקסל אחד בכל 5 שניות.
seconds % 60 סופר מ-0 עד 59 ואז מתחיל שוב מ-0, כמו השניות בשעון. חלוקה במספר שלם ב-5 ממירה את המספרים מ-0 עד 59 למספרים מ-0 עד 11:
unsigned long seconds = millis() / 1000;
int secondPixel = (seconds % 60) / 5;בכל מעבר של loop(), צייר את הטבעת מחדש מההתחלה: ring.clear(), הגדר את הפיקסל של המחוג, ring.show(). בלי לנקות, המיקומים הישנים יישארו מוארים והטבעת תתמלא. עשר צביעות מחדש בשנייה מספיקות, לכן קוד הפתיחה מסתיים ב-delay(100).
אתגר
בינוניהטבעת מחוברת לפין 6. ציירו את מחוג השניות:
- חשבו את מספר השניות מאז ההפעלה באמצעות
millis() / 1000 - הפיקסל של המחוג הוא
(seconds % 60) / 5 - נקו את הטבעת, הדליקו את הפיקסל הזה בכחול באמצעות
ring.Color(0, 0, 255)והציגו אותו
השאירו את delay(100). לחצו על Run וצפו במחוג מסתובב, ואז לחצו על Check.
נסו בעצמכם
#include <Adafruit_NeoPixel.h>
const int ringPin = 6;
const int pixelCount = 12;
Adafruit_NeoPixel ring(pixelCount, ringPin, NEO_GRB + NEO_KHZ800);
void setup() {
ring.begin();
}
void loop() {
// חשב איפה נמצא מחוג השניות, וצייר אותו בכחול
delay(100); // צייר מחדש עשר פעמים בשנייה
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה פרויקטים
6שעון NeoPixel
שעון NeoPixel: שניותשעון NeoPixel: דקותשעון NeoPixel: שילוב המחוגיםשעון NeoPixel: קביעת השעהתרגלו בעצמכם: Arduino אונליין