模块: WS2812B 灯带
约 641 字大约 2 分钟
2026-09-06
构建固件和导入到JS
额外组件
该功能需要安装 beshell-drv-ws2812b 组件才能使用。
安装方法:
- 编辑项目根目录下的
idf_component.yml文件,添加依赖:
dependencies:
become-cool/beshell-drv-ws2812b: '>=1.1.0'- 或在 ESP-IDF 环境的命令行中执行:
idf.py add-dependency "become-cool/beshell-drv-ws2812b>=1.1.0"在 C++ 里加入以下代码, 然后重新编译构建固件:
// 为了控制固件的尺寸,BeShell 的 module 是按需引入的。
beshell.use<be::driver::ws2812b::WS2812B>() ;在JS中导入 ws2812b module:
在.js文件中
import * as ws2812b from 'ws2812b'在REPL命令行下
import ws2812b简介
WS2812B 全彩 LED 灯带模块
提供 WS2812B 灯带的驱动与动画能力:
- Strip:灯带驱动类,像素级 RGB/HSV 颜色设置,支持首尾相接的回环模式
- Section:灯带分段,描述一段带起终点 HSV 渐变、过渡缓动与前后阴影的区段
- Rainbow:动画主控,内建 animator Timeline,用关键帧驱动分段属性并自动重绘
hsv2rgb():HSV 到 RGB 的颜色转换函数
使用前需在 C++ 侧注册模块(级联注册 Strip / Section / Rainbow):
#include <beshell/driver/ws2812b/WS2812B.hpp>
beshell.use<be::driver::ws2812b::WS2812B>() ;示例:
import { Strip, Section, Rainbow } from "ws2812b"
// 创建灯带(16 个 LED,回环模式)
const strip = new Strip()
strip.setup({ pin: 8, length: 16, loop: true })
// 创建动画主控:30fps,300 帧循环
const rainbow = new Rainbow(strip, { fps: 30, frames: 300, repeat: true })
// 一个彩虹分段绕圈跑动
const sec = rainbow.addSection(new Section({
x: 0, len: 8, h0: 0, h1: 360, shadowBack: 2
}))
rainbow.set(0, sec, { x: 0 })
rainbow.set(300, sec, { x: 16 })
rainbow.draw()
rainbow.play()模块函数
函数 hsv2rgb
原型: hsv2rgb (h:number, s:number, v:number)
HSV 转 RGB
C++ 侧完成转换,供 JS 侧/编辑器预览颜色换算。
示例:
import { hsv2rgb } from "ws2812b"
console.log(hsv2rgb(120, 1, 1)) // [0, 255, 0]参数:
h
类型number
参数说明色相(0-360,自动回卷)
s
类型number
参数说明饱和度(0-1)
v
类型number
参数说明明度(0-1)
返回值:
类型Array<number>
说明[r, g, b],各通道范围 0-255
