שעון NeoPixel: שילוב המחוגים
חלק מהיחידה פרויקטים במסלול ה-Arduino של Coddy. שיעור 23 מתוך 24.
מחוג השעות אדום. בלוח שעון יש 12 שעות, לכן השעה היא (now / 3600) % 12: בין 0 ל־11, כאשר 0 היא השעה 12. זה כבר מספר פיקסל.
עכשיו המחוגים יכולים להיפגש. בשעה 10:24:52 מחוג השניות נמצא בפיקסל 10, מעל מחוג השעות. כשמציירים אותם בזה אחר זה, השני מכסה את הראשון ואחד המחוגים נעלם.
אפשר לערבב את האור במקום זאת. תנו לכל מחוג רכיב צבע משלו (אדום לשעות, ירוק לדקות, כחול לשניות) והרכיבו כל פיקסל לפי המחוגים שנמצאים עליו:
for (int i = 0; i < pixelCount; i++) {
int r = 0;
int g = 0;
int b = 0;
if (i == hourPixel) {
r = 255;
}
if (i == minutePixel) {
g = 255;
}
if (i == secondPixel) {
b = 255;
}
ring.setPixelColor(i, ring.Color(r, g, b));
}במקום שבו המחוגים נפגשים, הרכיבים מצטרפים: אדום וכחול יוצרים מג׳נטה, ירוק וכחול יוצרים ציאן, אדום וירוק יוצרים צהוב. כל פיקסל מוגדר בכל מעבר, לכן הלולאה גם מחליפה את ring.clear().
אתגר
קשההוסף את מחוג השעות וערבב בין המחוגים:
- השעה היא
(now / 3600) % 12, ומוצגת בפיקסל הזה - בנה כל פיקסל בלולאת
for: אדום 255 אם מחוג השעות נמצא שם, ירוק 255 עבור מחוג הדקות, כחול 255 עבור מחוג השניות
לחץ על Run: השעון מתחיל ב־10:24:50, כשמחוג השניות ומחוג השעות מעורבבים. לאחר מכן לחץ על Check.
נסו בעצמכם
#include <Adafruit_NeoPixel.h>
const int ringPin = 6;
const int pixelCount = 12;
Adafruit_NeoPixel ring(pixelCount, ringPin, NEO_GRB + NEO_KHZ800);
// השעה שממנה השעון מתחיל, בשניות מאז חצות: 10:24:50
const unsigned long startTime = 10 * 3600UL + 24 * 60 + 50;
void setup() {
ring.begin();
}
void loop() {
unsigned long now = startTime + millis() / 1000; // השעה ביום, בשניות
int seconds = now % 60;
int minutes = (now / 60) % 60;
ring.clear();
ring.setPixelColor(seconds / 5, ring.Color(0, 0, 255)); // מחוג השניות: כחול
ring.setPixelColor(minutes / 5, ring.Color(0, 255, 0)); // מחוג הדקות: ירוק
ring.show();
delay(100); // לצייר מחדש עשר פעמים בשנייה
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה פרויקטים
6שעון NeoPixel
שעון NeoPixel: שניותשעון NeoPixel: דקותשעון NeoPixel: שילוב המחוגיםשעון NeoPixel: קביעת השעהתרגלו בעצמכם: Arduino אונליין