Радуга через ColorHSV
Цвет задаётся тоном, а не тремя каналами: оттенок едет по кругу, лента переливается.

Что понадобится
Как подключить
| Откуда | Куда | |||
|---|---|---|---|---|
| Arduino Uno | 5V | → | NeoPixel 1 | VDD |
| Arduino Uno | GND | → | NeoPixel 1 | VSS |
| Arduino Uno | D6 | → | NeoPixel 1 | DIN |
| NeoPixel 1 | DOUT | → | NeoPixel 2 | DIN |
| NeoPixel 1 | VDD | → | NeoPixel 2 | VDD |
| NeoPixel 1 | VSS | → | NeoPixel 2 | VSS |
| NeoPixel 2 | DOUT | → | NeoPixel 3 | DIN |
| NeoPixel 2 | VDD | → | NeoPixel 3 | VDD |
| NeoPixel 2 | VSS | → | NeoPixel 3 | VSS |
Скетч
#include <Adafruit_NeoPixel.h>
// ColorHSV(тон, насыщенность, яркость): тон 0…65535 — это круг цветов.
// Сдвигаем тон каждый такт, а по ленте раскладываем его со сдвигом.
Adafruit_NeoPixel pixels(3, 6, NEO_GRB + NEO_KHZ800);
unsigned long hue = 0;
void setup() {
pixels.begin();
pixels.setBrightness(140);
Serial.begin(9600);
}
void loop() {
int n = pixels.numPixels();
for (int i = 0; i < n; i++) {
unsigned long h = hue + (unsigned long)i * 65536 / n;
pixels.setPixelColor(i, pixels.ColorHSV(h % 65536, 255, 255));
}
pixels.show();
hue += 1200;
if (hue >= 65536) {
hue = hue % 65536;
Serial.println("круг цветов пройден");
}
delay(60);
}
Коротко о детали: NeoPixel
Адресный светодиод WS2812: в одном корпусе три кристалла и управляющая микросхема. Цвет передаётся по одной сигнальной линии, поэтому светодиоды соединяют цепочкой — выход предыдущего во вход следующего. Питание 5 В.
Ещё примеры с деталью «NeoPixel»
Попробуйте сами
Симулятор работает прямо в браузере: схему можно менять, код — править, а результат видно сразу. Бесплатно, без установки и регистрации.
Открыть «Радуга через ColorHSV» в симуляторе