Menu
CoddyTech

حلقة قوس قزح

جزء من قسم الشاشات والمستشعرات في رحلة Arduino على Coddy. الدرس 17 من 24.

اختيار الأحمر والأخضر والأزرق لقوس قزح أمر صعب. درجة اللون أسهل: رقم واحد يدور حول عجلة الألوان، من الأحمر مرورًا بالأصفر والأخضر والسماوي والأزرق والأرجواني، ثم يعود إلى الأحمر.

تحوّل ring.ColorHSV(hue) درجة اللون إلى لون. تتراوح درجة اللون من 0 إلى 65535: القيمة 0 هي الأحمر، وحوالي 21845 هي الأخضر، وحوالي 43690 هي الأزرق، أما 65536 فستكون الأحمر مجددًا.

لتوزيع قوس قزح واحد على 16 بكسلًا، أضف إلى كل بكسل خطوة مقدارها 65536 / 16 = 4096 مقارنةً بالبكسل الذي يسبقه. يحتاج البكسل 15 إلى القيمة 61440، وهي أكبر مما يمكن أن يستوعبه int، لذا احتفظ بدرجة اللون في long واكتب الرقم بالشكل 4096L؛ فالحرف L يجعل عملية الضرب تستخدم long أيضًا:

for (int i = 0; i < 16; i++) {
  long hue = i * 4096L;
  ring.setPixelColor(i, ring.ColorHSV(hue));
}
ring.show();
challenge icon

التحدي

متوسط

ارسم قوس قزح حول الحلقة:

  • البكسل 0 أحمر (درجة اللون 0)
  • كل بكسل تالٍ يتقدم بمقدار 4096 حول عجلة الألوان، باستخدام ring.ColorHSV()
  • وبذلك تدور البكسلات الـ16 دورة كاملة

اضغط على Run، ثم Check.

جرّب بنفسك

#include <Adafruit_NeoPixel.h>

// 16 بكسلًا، البيانات على الطرف 6
Adafruit_NeoPixel ring(16, 6, NEO_GRB + NEO_KHZ800);

void setup() {
  ring.begin();

  // أعطِ كل بكسل درجة لون خاصة به، وليكن الأحمر عند البكسل 0

  ring.show();
}

void loop() {
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الشاشات والمستشعرات

تدرّب بنفسك: Playground لـ Arduino