Menu
CoddyTech
flag Ar iconالعربيةdown icon

حلقة قوس قزح

جزء من قسم الشاشات والمستشعرات في رحلة 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