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Проверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Дисплеи и датчики

Потренируйтесь самостоятельно: Песочница Arduino