我正在使用类似矩阵板的neopixel进行一个小项目。有问题的董事会在这里。现在这是我对可寻址 LED 板的第一次冒险。我非常沮丧地得知董事会的文档为零,互联网上也没有任何关于它的信息。我最终确实在板上的 LED 上找到了一些文档。
它们是 WS2812b,文档在这里。所以我根据我对它如何工作的理解编写了一些代码。文档并不是最好的。所以我确定我误解了它。
这是它的代码。
using namespace std;
#define DATA 23
void send1()
{
//T1H
digitalWrite(DATA, HIGH);
usleep(0.85);
//T1L
digitalWrite(DATA, LOW);
usleep(0.4);
}
void send0()
{
//T0H
digitalWrite(DATA, HIGH);
usleep(0.4);
//T1L
digitalWrite(DATA, LOW);
usleep(0.85);
}
void sendReset()
{
//Treset
digitalWrite(DATA, LOW);
usleep(55);
}
int main(void)
{
wiringPiSetupSys();
while (true)
{
//256 pixels total
for (int i = 0; i < 256; i++) {
//3 bytes GRB
for (int a = 0; a < 3; a++) {
//G set to 0
for (int g = 0; g < 8; g++) {
send0();
}
//R set to 255
for (int r = 0; r < 8; r++) {
send1();
}
//B set to 0
for (int b = 0; b < 8; b++) {
send0();
}
}
//reset after bytes sent
sendReset();
}
}
return 0;
}
结果如下
如您所见,它根本不起作用!
使用该代码,我在我的 gpio 引脚上运行了一个范围,这就是它的样子。
我已经为此工作了几个小时,我能做的最多就是将所有 LED 都打开为白色。我用这段代码做到了
while (true) {
digitalWrite(DATA, HIGH);
digitalWrite(DATA, LOW);
}
这确实至少可以可靠地将所有东西变成白色。