Радужное кольцо
Часть раздела Дисплеи и датчики путешествия по 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();Задание
СреднеРаскрасьте кольцо в цвета радуги:
- пиксель 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() {
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Дисплеи и датчики
Потренируйтесь самостоятельно: Песочница Arduino