0

我正在使用类似矩阵板的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);
    }

这确实至少可以可靠地将所有东西变成白色。

在此处输入图像描述

4

0 回答 0