P9813 драйвер RGB LEDs
Немного расскажу про драйвер светодиодной ленты на микросхеме P9813. В русскоязычном интернете по нему нашлось очень мало информации поэтому решил поделиться опытом настройки данного девайса.
Фото

Характеристики модуля
- Максимальная мощность нагрузки: 72 Вт.
- Напряжение входное (цепь нагрузки): 12В.
- Напряжение выходное: 12В.
- Напряжение входное (цепь управления): 5В.
- Тип управления: логический.
Подключение
Можно объединить несколько модулей в одну цепь соединив их контакты управления последовательно по шине управления. Для примера я буду управлять данной лентой при помощи Arduino UNO.

На схеме показано как к одной плате Ардуино можно подключить три модуля. По факту я не могу сказать сколько точно можно максимально соединить таких плат в одну цепь, предполагаю что максимум может быть 128 или 256.
На плате Ардуино PIN6 — DATA, PIN7 — CLOCK.
Управление
Для управления этой вереницей контроллеров я взял библиотеку FastLED для Arduino IDE. Загрузить ее можно через встроенный в IDE менеджер библиотек, в поиске нужно вписать “fastled”. Или вручную с сайта разработчика библиотеки — https://github.com/FastLED/FastLED
#include "FastLED.h"
#define NUM_LEDS 1 // Указываем количество модулей подключенных к МК.
#define DATA_PIN 6 // Пин DATA
#define CLOCK_PIN 7 // Пин CLOCK
uint16_t gHue = 0; // Стартовая позиция цветового спектра
uint8_t gHueDelta = 3; // Шаг изменения цветового спектра
bool gHueUp = true; // Направление изменения цветового спектра
CRGB leds[NUM_LEDS];
void setup() {
FastLED.addLeds<P9813, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
}
void loop() {
if(gHueUp){
gHue += gHueDelta;
if(gHue >= 360){
gHueUp = false;
gHue = 360;
}
}
else{
gHue -= gHueDelta;
if(gHue <= 0){
gHueUp = true;
gHue = 0;
}
}
for(int i=0; i<NUM_LEDS; i++){
leds[i] = CHSV(gHue, 200, 200);
FastLED.show();
delay(20);
}
}
В данном скетче мы каждый новый цикл работы МК изменяем позицию цветового спектра на заданный шаг равный 3 градусам до момента пока не достигнем позиции равной 360 градусов, потом изменяется направление изменения цветового спектра от 360 до 0 градусов. И так циклично до бесконечности для всех контроллеров на шине.
Для определения конечного цвета светодиодов используется функция CHSV(Hue, Saturation, Value);
В качестве атрибутов для этой функции выступают три параметра:
- Hue (0-359) — градус цветового спектра.
- Saturation (0-255) — смещение от центра к краю.
- Value (0-255) — яркость.

Таким образом параметром Hue мы выбираем нужный цвет, параметром Saturation задаем насколько этот цвет будет выражен (значение 0 означает белый цвет, а 255 будет давать ярко выраженный цвет спетра), а параметром Value мы задаем яроксть свечения диодов в интервале от 0 до 255, где 255 это 100% яркости свечения.
Далее функцией .show() мы отправляем команду в шину данных.
Вот в принципе и все, далее можно собирать собственные проекты ))
Если вам понравился данный пост, поставьте пожалуйста лайк, это будет сигналом для меня, что контент кому-то оказался полезен ))