使用 SPI 总线控制 LED 灯带会导致整个灯带点亮

Controlling led strip with SPI bus causes entire strip to light up

我正在使用 this python 软件包来控制 LED 灯条。 使用 PWM 一切正常,但它不允许我 运行 没有 sudo 的脚本,这就是我切换到使用 SPI 的原因。

现在我遇到了这种奇怪的行为,整个 LED 灯带突然亮起,但呈渐变色:

条带连接到 GND、5V 和 GPIO10/MOSI/Pin 19。

Strip 的用法示例:

#strip = Adafruit_NeoPixel(led_count, led_pin, led_freq_hz, led_dma, led_invert, led_brightness, led_channel)
strip = Adafruit_NeoPixel(110, 10, 800000, 10, False, 255, 0)
# PWM would have GPIO 18 as led_pin
# strip = Adafruit_NeoPixel(110, 18, 800000, 10, False, 255, 0)
strip.begin()
strip.setPixelColor(0, Color(255, 255, 255))
strip.show()

我还实现了一种类似绘图的模式,我可以在其中为每个特定的 LED 设置颜色。在所有其他颜色设置请求周围都会发生此错误。我还将整个条带设置为相同的颜色,以检查渐变是否与功率有关,但效果很好...

我的解决方案:不要使用 SPI

经过几个小时的尝试和错误,我决定继续使用 PWM 由于这需要使用 root 运行 的脚本,我将 led 控制器外包在它自己的 python 程序中,并使用进程间通信从 flask 应用程序获取所需的信息到 led 控制器。

此控制器程序作为系统服务自动启动 - 除了此服务在午夜崩溃外一切正常。