首页 动态 版块 商城 我的
 退出
游客  
等级:
金币:
经验值:

WS2812灯编程灯带 跑马灯流水灯树莓派Pico主板Python编程

  57 
 0
 3

Image

一:WS2812可编程灯带介绍

WS2812(常称 “内置 IC 幻彩灯珠”)是一种将RGB 三原色 LED 与控制驱动电路(IC)集成在同一 5050 封装内的智能像素光源,核心是单线串行、单点单控、可编程全彩。简单理解:WS2812 把 “控制 + 发光” 合一,一根线控一串、每颗灯独立变色,是低成本做动态全彩灯光的最佳方案。灯带普遍采用低电压安全供电,适配创客、电竞、家装、商装、舞台等动态灯光场景,支持自定义色彩、流光、跑马、律动等复杂效果。

如果想了解RGB三原色原理可查看这个视频资料:https://www.ydxhuo.com/index.php?c=read&id=153


核心参数

  • 产品型号:WS2812B 5V 可编程 RGB 灯带
  • 工作电压:DC 5V(宽压 4.5–5.5V)
  • 控制方式:单线串行、单点单控、像素级可编程
  • 数据速率:800Kbps
  • 信号特性:内置信号整形,支持断点续传、长距离级联
  • 灯珠规格:5050 RGB 集成 WS2812 驱动 IC
  • 发光角度:120°
  • 灰度等级:每色 256 级,24 位真彩,亿级配色
  • 驱动类型:内置恒流,无需外接驱动板
  • 使用寿命:>50000 小时

PCB 宽度:8–10mm(常规 60 灯 / 米)

裁剪间距:1 灯 1 剪(可编程款)

防水等级:IP30(不防水)

工作温度:-25℃~+80℃

存储温度:-40℃~+85℃

接口定义:3P 端子(红线正极、黄线信号、黑线负极)

Image


工作原理(级联控制)

  1. 单总线协议:只用一根数据线(DIN) 控制整串灯珠。
  2. 数据转发
  3. 1.控制器发送一长串24bit / 灯数据(G8、R8、B8)。
  4. 2.第 1 颗灯珠截取前 24bit作为自己的颜色,剩余数据经整形放大后从 DOUT 传给下一颗。
  5. 3.逐颗传递,直到所有灯珠都拿到各自数据。

  6. 复位刷新:收到 **>280μs 低电平复位信号后,所有灯珠同时更新 ** 颜色并保持。
  7. Image

二:硬件连接

以树莓派Pico开发板为例,提醒: 请按下图的引脚标识接线,务必不能接错。如果接错线通电后会导致设备烧毁!

Image

三:Python代码

ws2812 下载这个ws2812源代码文件直接上传树莓派Pico文件内,直接运行查看数据(如下图) 

Image


运行程序后,可观察灯带颜色变化如下

 


以下对代码逐段解析

from machine import Pin,导入控制树莓派 Pico 的引脚

import neopixel ,导入neopixel:专门驱动 WS2812 彩灯的库

import time,导入time:用来控制速度、延时


LED_COUNT = 60  # 60颗灯 可自己修改灯珠数量

LED_PIN = 0     # 数据线接 GP0,灯带信号线接GP0引脚可自己修改


核心功能:颜色函数 hue_to_rgb(hue)这是彩虹渐变的核心!它的作用:输入一个数字(0~360) → 输出一个漂亮的彩虹色(红、橙、黄、绿、青、蓝、紫)

0 = 红

60 = 黄

120 = 绿

180 = 青

240 = 蓝

300 = 紫

360 = 回到红

可以把它理解成:给一个数字,还你一个颜色。


关灯函数 clear()

python

运行

def clear():

    np.fill((0, 0, 0))

    np.write()

作用:把所有灯变成黑色(熄灭)

程序启动和结束时会调用一次,干净清爽。

流水灯逻辑

python

运行

def flow_water():

    hue = 0               # 起点颜色

    while True:           # 无限循环

    

        for i in range(LED_COUNT):

            # 给第i颗灯 设置颜色

            # 颜色 = 基础色相 + 灯的位置 × 8

            np[i] = hue_to_rgb(hue + i * 8)

        

        np.write()        # 把颜色发送到灯带

        

        hue = (hue + 3) % 360  # 整体颜色偏移

        time.sleep(0.025)      # 控制速度

这里用最通俗的话讲:

① hue = 0

最开始的颜色从 红色 开始。

② for i in range(LED_COUNT)

循环给 60 颗灯逐个设置颜色。

③ np[i] = hue_to_rgb(hue + i * 8)

第 0 颗灯:hue + 0 → 颜色 A

第 1 颗灯:hue + 8 → 颜色 B

第 2 颗灯:hue + 16 → 颜色 C

...

第 59 颗灯:hue + 59*8 → 颜色 Z

结果:60 颗灯形成一条完美彩虹渐变!

④ hue = hue + 3

整体彩虹整体往前挪一点点!

这就是流水、流动的秘密!

⑤ time.sleep(0.025)

延时 25 毫秒,控制流动速度。

数字越小 → 越快

数字越大 → 越慢

三、整体流动原理总结(一句话)

给 60 颗灯设置连续渐变彩虹色

每过 25 毫秒,整体颜色偏移一点点

看起来就像彩虹在灯带上面流动

四、你可以自己改的参数(超简单)

python

运行

np[i] = hue_to_rgb(hue + i * 8)

数字 8 → 越大,颜色渐变越明显

数字 3 → 越大,流动越快

python

运行

hue = (hue + 3) % 360

python

运行

time.sleep(0.025)

越小越快


总结

代码功能:生成一条连续彩虹 → 不断整体偏移 → 形成流动效果全程所有灯都亮,没有熄灭效果。



标签:
作者签名:    楼主  2026-04-19 16:18:32
回复列表
Powered by YDXHUO _VERSION
© 2017-2026 跃动芯火版权
您的IP: 216.73.216.60 , 2026-04-28 01:11:27
Powered by YDXHUO _VERSION
© 2017-2026 跃动芯火版权
(3) 分享
分享

请保存二维码或复制链接进行分享

取消
免责声明
1、本站资源,均来自网络与个人作者,所有资源和文章仅限用于学习和研究目的 。
2、不得用于商业或非法用途,否则,一切责任由该用户承担 !

侵权删除请致信 E-Mail:ydxho@qq.com
已有0次打赏