您好!
我使用单个5951来控制8个 RGB LED。
问题:
由于 GS 值(针对所有 LED) 从0上升至4095、LED 亮度每256步(不是预期的4096)从零升至完全打开(100%占空比)。 这会重复、立即从100%占空比下降到0%、并在接下来的256个计数(256至512)中再次开始斜升。 这会导致它在达到4095的 GS 计数之前上升到最大占空比16次。这是令人沮丧的、因为 FC 位197/198被设置为零。
我的设置如下。 该代码是5951 Arduino 代码的简短版本。 请提供任何援助。 所有其他功能都可以工作(DC、BC、FC 位(可能不包括197/198)。 谢谢!
设置
我将 GSSin 用于所有数据、而不是 DCSin。 IREF 设置为20mA。 VCC 为3.3V。 DCSin 和 DCSCK 接地。
将函数控制寄存器设置为 B1111100、以获得4095的重复 GS。 直流电压设置为最大值127、BC 全部设置为255。 GSKR、G、B 全部连接到31.25k 时钟。
UCONTROLLER 和 CODE
- Arduino Nano。 此代码仅控制 RGB LED 0。
#include
#include
//定义控制引脚
#define GSLAT 5.
#define XBLNK 6.
#define GSCKGRB 9.
TLC5951 tlc;
void setup(){
//将 GSCKR、GSCKG 和 GSCKB 连接在一起
//将 Arduino GSCK R、G、B 设置为31.25KHZ
TCCR1B = TCCR1B 和0b11111000 | 0x01;//引脚9和10 @ 31250Hz
引脚模式(GSCKGRB、输出);
analogWrite (GSCKGRB、127);
tlc.init(GSLAT、XBLNK、0);
//启动 SPI
SPI.begin();
SPI.setClockDivider(SPI_CLOCK_DIV2);
Serial.begin(115200);
//设置寄存器- DC、FC、BC
tlc.setAllDCData(127);
tlc.setFunctionData(B1111100);// 7位函数寄存器-位0和位1设置为4095 GS (0、0)
tlc.setBrightness(255、255、255);
TLC 更新();
}
void loop(){
//循环 LED 0 GS 值从0到4095
对于(uint16_t I = 0;I < 4095;I += 1){
tlc.setLED(0、I、I);//仅三色 LED 0
TLC.updateGs();
serial.println(i);
延迟(200);
}
}
再次感谢您的帮助。
谢谢!
Eric Frische