Используйте светодиодные кластеры для создания динамичной подсветки.
В качестве мозга для управления светодиодным модулем WS2811 рассмотрим платформу Arduino Uno.
Прошейте платформу Arduino скетчем приведённым ниже.
// библиотека для работы со светодиодными модулями WS2811/WS2812 #include <Adafruit_NeoPixel.h> // номер пина, к которому подключен светодиодный модуль #define LED_MODULE_PIN 6 // количество кластеров #define CLASTER_COUNT 20 // создаём объект класса Adafruit_NeoPixel Adafruit_NeoPixel matrix = Adafruit_NeoPixel(CLASTER_COUNT, LED_MODULE_PIN, NEO_GRB + NEO_KHZ800); void setup() { // инициализация светодиодного модуля matrix.begin(); } void loop() { // заполняем светодиодный модуль по кластерам «бегущий огонь» красного цвета colorWipe(matrix.Color(255, 0, 0), 50); // заполняем светодиодный модуль по кластерам «бегущий огонь» зелёного цвета colorWipe(matrix.Color(0, 255, 0), 50); // заполняем светодиодный модуль по кластерам «бегущий огонь» синего цвета colorWipe(matrix.Color(0, 0, 255), 50); // тушим светодиодный модуль по кластерам «бегущая тень» colorWipe(matrix.Color(0, 0, 0), 50); } // функция заполнения каждого сегмента (кластера) void colorWipe(uint32_t c, uint8_t wait) { for (uint16_t i = 0; i < matrix.numPixels(); i++) { // заполняем текущий сегмент выбранным цветом matrix.setPixelColor(i, c); matrix.show(); // ждём delay(wait); } }
В качестве мозга для управления светодиодным модулем WS2811 рассмотрим платформу Iskra JS.
Прошейте платформу Iskra JS скриптом приведённым ниже.
// инициализируем шину SPI SPI1.setup({baud:3200000, mosi:P6, sck:A5, miso:P2}); // количество светодиодов var ledCount = 20; // создаём объект для работы со светодиодным модулем WS2811/WS2812 var ledModule = require('@amperka/led-strip').connect(SPI1, ledCount, 'GRB'); // гасим все светодиоды ledModule.clear(); // устанавливаем максимальную яркость светодиодного модуля ledModule.brightness(1); setInterval(function() { // заполняем светодиодный модуль по кластерам «бегущий огонь» красного цвета for (var i = 0; i < ledCount; i++) { ledModule.putColor(i, [1, 0, 0]); ledModule.apply(); } }, 100);