ساعة 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); // أعد الرسم عشر مرات في الثانية
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المشاريع
3مستشعر ركن السيارة
مستشعر ركن السيارة: المسافةمستشعر ركن السيارة: الأضواءمستشعر ركن السيارة: التنبيهات الصوتيةمستشعر ركن السيارة: الشاشة6ساعة NeoPixel
ساعة NeoPixel: الثوانيساعة NeoPixel: الدقائقساعة NeoPixel: مزج العقاربساعة NeoPixel: ضبط الوقتتدرّب بنفسك: Playground لـ Arduino