Печать

Китайская промышленность выпускает несколько типов светодиодов, светодиодных лент и микросхем для адресного управления каждым RGB светодиодом в цепочке. Микросхема управления может быть как в DIP или SMD корпусе, так и встроенная в светодиод.

Отличительной особенностью адресуемых светодиодов является трёхпроводное (+VCC, GND и DATA) подключение или четырёх проводное (+VCC, GND, DATA и CLOCK) подключение. Сигнал DATA - управление светодиодом, подключается к контакту DIN. Со светодиода уходит сигнал DOUT и подключается к следующему светодиоду к контакту DIN. То есть, сигнал управления передаётся от светодиода к светодиоду по цепочке. Каждому светодиоду предназначено 24 бита данных. 224 =  16777216 цветов. Существует сигнал RESET, который распространяется между всеми светодиодами одновременно. После сигнала RESET первый светодиод в цепочке забирает (отнимает) свои 24 бита данных а остальные биты c линии DIN передаёт на в DOUT для других светодиодов. И так поступает каждый светодиод в цепи. Адресация оказывается совсем не сложной.

Приведём пример программы Blink для одного светодиода:

#include <FastLED.h>

#define NUM_LEDS 1            // Количество светодиодов в ленте
#define DATA_PIN 12           // Для светодиодов с тремя проводами +, - и DATA необходимо выбрать только DATA_PIN
#define CLOCK_PIN 13          // Для светодиодов с четырьмя проводами +, -, DATA и CLOCK дополнительно выбираем CLOCK_PIN
CRGB leds[NUM_LEDS];          // Определяем массив светодиодов

void setup() {
  // Раскомментируйте одну из следующих строк в соответствии с типом светодиода
  // ## Clockless types ##
  // FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);  // GRB ordering is assumed
  // FastLED.addLeds<SM16703, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<TM1829, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<TM1812, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<UCS1904, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<UCS2903, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<WS2852, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<GS1903, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<SK6812, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<SK6822, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<APA106, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<PL9823, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<SK6822, DATA_PIN, RGB>(leds, NUM_LEDS);
  FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<WS2813, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<APA104, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<WS2811_400, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<GE8822, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<LPD1886, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<LPD1886_8BIT, DATA_PIN, RGB>(leds, NUM_LEDS);
  // ## Clocked (SPI) types ##
  // FastLED.addLeds<LPD6803, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<WS2803, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<P9813, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<DOTSTAR, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<SK9822, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
}

void loop() {
  leds[0] = CRGB::Green;           // Выбор цвета
  FastLED.show();
  delay(300);
  leds[0] = CRGB::Black;           // Выбор цвета
  FastLED.show();
  delay(100);
  leds[0] = CRGB::Blue;            // Выбор цвета
  FastLED.show();
  delay(300);
  leds[0] = CRGB::Black;           // Выбор цвета
  FastLED.show();
  delay(100);
  leds[0] = CRGB::Red;             // Выбор цвета
  FastLED.show();
  delay(300);
  leds[0] = CRGB::Black;           // Выбор цвета
  FastLED.show();
  delay(100);
}

Программа использует библиотеку FastLED. В функции setup() Вы видите большой перечень типов светодиодов.

Подключение светодиода очень простое, на VCC и GND светодиода подайте питание на D или DIN подайте сигнал с Arduino.Pin на плате Arduino определён в программе в строке #define DATA_PIN 12. Само собой разумеется, GND Arduino и GND светодиода должны быть соединены.