Радуга через ColorHSV

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

Продвинутый уровень Arduino Uno C++
Схема подключения: Радуга через ColorHSV
Схема в симуляторе. Нажмите «Открыть в симуляторе», чтобы запустить её и поменять.

Что понадобится

Как подключить

ОткудаКуда
Arduino Uno5V→NeoPixel 1VDD
Arduino UnoGND→NeoPixel 1VSS
Arduino UnoD6→NeoPixel 1DIN
NeoPixel 1DOUT→NeoPixel 2DIN
NeoPixel 1VDD→NeoPixel 2VDD
NeoPixel 1VSS→NeoPixel 2VSS
NeoPixel 2DOUT→NeoPixel 3DIN
NeoPixel 2VDD→NeoPixel 3VDD
NeoPixel 2VSS→NeoPixel 3VSS

Скетч

#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» в симуляторе