上图为真实的效果图每个单独的LED均可单独控制
WS2812B线路图
VSS零线(地线)
DIN数据输入(控制颜色以及亮度)
DOUT数据输出(将数据传给下一个LED)
VDD电源供电 (+3.5V~+5.3V)
WS2812B灯带线路图
WS2812B接线方法
安装插件sudoapt-getinstallpython-pip
sudopipinstallrpi_ws281x
编写脚本ws2812b.pyimporttime
importrandom
fromrpi_ws281ximportAdafruit_NeoPixel,Color
#LED配置:
LED_COUNT=10#要控制LED的数量.
LED_PIN=18#GPIO接口(PWM编码).
LED_BRIGHTNESS=255#设置LED亮度(0-255)
#以下LED配置无需修改
LED_FREQ_HZ=800000#LED信号频率(以赫兹为单位)(通常为800khz)
LED_DMA=10#用于生成信号的DMA通道(尝试5)
LED_INVERT=False#反转信号(使用NPN晶体管电平移位时)
#创建NeoPixel对象
strip=Adafruit_NeoPixel(LED_COUNT,LED_PIN,LED_FREQ_HZ,LED_DMA,LED_INVERT,LED_BRIGHTNESS)
#初始化库
strip.begin()
#设置整体亮度关闭LED为0最亮为255范围0-255
#该函数与下面的设置颜色都不会直接对LED进行修改,可以理解为将修改数据保存到缓存区。
#strip.setBrightness(200)
#numPixels()函数介绍:取NeoPixel对象创建时设置的LED数量
foriinrange(0,strip.numPixels()):#设置个循环(循环次数为LED数量)
#setPixelColor()函数介绍:设置LED色值(RGB).
#参数1:LED的ID(从0开始,比如第5个LED)
#参数2:RGB色值Color()RGB转Color值,参数依次为R,G,B
#例子:设置第5个LED颜色为红色
#strip.setPixelColor(4,Color(255,0,0))
#该函数不会直接对LED进行修改,可以理解为将修改数据保存到缓存区。
strip.setPixelColor(i,Color(0,0,255))
#提交缓存区的修改数据到WS2812B,以显示效果
strip.show()
time.sleep(0.1)#延迟0.1秒
执行脚本sudopythonws2812b.py#需要管理员权限
#执行完毕后其效果为:
#一共10个LED,除了第5个LED为红色,其他LED全是蓝色
#其源码已经做了很详细的标注。
#注意:写脚本不要把注释写进去,因为不支持中文