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() мы отправляем команду в шину данных.

Вот в принципе и все, далее можно собирать собственные проекты ))

Если вам понравился данный пост, поставьте пожалуйста лайк, это будет сигналом для меня, что контент кому-то оказался полезен ))

Добавить комментарий

Ваш адрес email не будет опубликован.