【花雕动手做】行空板K10系列实验之使用AB按键来控制8位 WS2812 灯柱模块


行空板K10是一款专为快速体验物联网和学习人工智能而设计的开发学习板,100%采用国产芯片,知识产权自主可控,符合信息科技课程中编程学习、物联网及人工智能等教学需求。该板集成2.8寸LCD彩屏、WiFi蓝牙、摄像头、麦克风、扬声器、RGB指示灯、多种传感器及丰富的扩展接口。凭借高度集成的板载资源,教学过程中无需额外连接其他设备,便可轻松实现传感器控制、物联网应用以及人脸识别、语音识别、语音合成等AI人工智能项目。
主要特点
集成摄像头&内置算法,可进行离线图像检测
集成麦克风&内置算法,可进行离线语音识别
集成扬声器&内置算法,可进行离线语音合成
2.8寸彩色屏幕,数据展示更清晰
集成度高,利于教学
接口丰富,兼容软件多,扩展性好

板载 3Pin PH2.0全功能IO接口 x 2

引脚操作相关积木

引脚操作相关积木说明

执行器:灯带模块

板载传感器

辅助:屏幕显示相关积木

WS2812灯柱模块
一、模块概述
WS2812 是串行全彩 RGBLED 智能彩灯执行器,8 位灯柱 = 8 颗 WS2812 灯珠串联在一条信号线,单引脚即可控制全部灯珠的红、绿、蓝三色亮度,可实现渐变、流水、分段亮灯。本课搭配板载光敏:光线越暗点亮灯珠越多,光线越亮灯珠熄灭。
二、引脚定义(3 针)

三、关键参数
供电:5V,8 颗全亮功耗偏高,大批量建议外接电源
控制:单根 IO 口串行控制,内置驱动 IC,无需多个 PWM 引脚
色彩:单灯 RGB 三色,颜色范围0x000000~0xFFFFFF(24 位真彩)
灯珠数量:固定 8 颗,编号 0~7(从 DIN 输入端开始为第 0 颗)
四、驱动原理
只用 1 根信号线依次下发 8 颗灯的色彩数据,数据自动依次移位,一颗灯接收完数据传给下一颗,单线级联。
0xRRGGBB:RR 红、GG 绿、BB 蓝,数值 0~FF,0 熄灭、FF 最亮。
五、K10 库常用控制函数
k10.ws2812Init(P0,8); //初始化:P0引脚、8颗灯珠(setup中)
k10.ws2812SetPixel(编号,颜色); //设置单个灯颜色
k10.ws2812Show(); //刷新显示(必须调用才亮灯)
k10.ws2812Clear(); //全部熄灭
六、使用注意事项
严格控制亮度,这里选择25
电源线尽量粗,多灯满载容易压降偏暗;
接线不能反接 VCC/GND,极易烧毁灯珠;
数据 DIN 不要接 3.3V,必须 5V 电平。

【花雕动手做】行空板K10系列实验之使用AB按键来控制WS2812灯柱模块
实验开源代码
#include "unihiker_k10.h"
#include <DFRobot_NeoPixel.h>
// 动态变量
volatile float mind_n_k;
// 创建对象
uint8_t screen_dir=3;
UNIHIKER_K10 k10;
DFRobot_NeoPixel neoPixel_P0;
// 主程序开始
void setup() {
k10.begin();
k10.initScreen(screen_dir);
k10.creatCanvas();
k10.setScreenBackground(0x000000);
k10.canvas->canvasText(" 八位WS2812B灯柱", 4, 0xFFFFFF);
k10.canvas->updateCanvas();
neoPixel_P0.begin(P0, 8);
neoPixel_P0.setBrightness(25);
mind_n_k = 0;
}
void loop() {
if ((k10.buttonA->isPressed())) {
neoPixel_P0.showRainbow(0, 7, 1, 360);
k10.canvas->canvasText(" 渐变颜色", 6, 0xFFFFFF);
k10.canvas->updateCanvas();
delay(3000);
k10.canvas->canvasClear(6);
}
if ((k10.buttonB->isPressed())) {
k10.canvas->canvasText(" 循环点亮", 8, 0xFFFFFF);
k10.canvas->updateCanvas();
for (int index = 0; index < 8; index++) {
neoPixel_P0.showBarGraph(0, 7, mind_n_k, 7);
mind_n_k += 1;
delay(300);
}
for (int index = 0; index < 8; index++) {
neoPixel_P0.showBarGraph(0, 7, mind_n_k, 7);
mind_n_k -= 1;
delay(300);
neoPixel_P0.setRangeColor(0, 0, 0x000000);
}
k10.canvas->canvasClear(8);
}
}
八位 WS2812 灯柱代码解读
一、头文件与全局变量
#include "unihiker_k10.h"
#include <DFRobot_NeoPixel.h>
unihiker_k10.h:行空板 K10 底层库,屏幕、按键、系统初始化;
DFRobot_NeoPixel.h:WS2812 全彩灯专用驱动库,封装渐变、柱状图、单点上色等函数。
volatile float mind_n_k;
uint8_t screen_dir=3;
UNIHIKER_K10 k10;
DFRobot_NeoPixel neoPixel_P0;
mind_n_k:浮点计数变量,控制点亮灯珠数量,做流水增减;
screen_dir=3:屏幕正向显示;
k10:K10 主板对象;
neoPixel_P0:WS2812 灯柱实例,绑定 P0 引脚。
二、setup () 上电初始化(只运行 1 次)
void setup() {
k10.begin();
k10.initScreen(screen_dir);
k10.creatCanvas();
k10.setScreenBackground(0x000000); //屏幕黑色底色
k10.canvas->canvasText(" 八位WS2812B灯柱", 4, 0xFFFFFF);//第4行白色标题
k10.canvas->updateCanvas();//刷新屏幕
neoPixel_P0.begin(P0, 8); //P0引脚、一共8颗灯珠(0~7)
neoPixel_P0.setBrightness(25);//亮度0~255,25降低亮度防刺眼
mind_n_k = 0;//计数初始值=0
}
neoPixel.begin(引脚,灯珠总数)是 WS2812 必备初始化。
三、loop () 循环:A 键彩虹渐变、B 键柱状流水
1.A 按键:彩虹渐变特效
if ((k10.buttonA->isPressed())) {
neoPixel_P0.showRainbow(0, 7, 1, 360); //0~7全灯珠彩虹渐变
k10.canvas->canvasText(" 渐变颜色", 6, 0xFFFFFF);
k10.canvas->updateCanvas();
delay(3000); //彩虹保持3秒
k10.canvas->canvasClear(6);//清空第6行文字
}
showRainbow(起始灯,结束灯,步长,起始色相):整段灯珠自动七彩渐变。
2.B 按键:柱状流水(从 0→8 点亮,再 8→0 熄灭)
if ((k10.buttonB->isPressed())) {
k10.canvas->canvasText(" 循环点亮", 8, 0xFFFFFF);
k10.canvas->updateCanvas();
//第一轮:灯逐个增加点亮 0→7
for (int index = 0; index < 8; index++) {
neoPixel_P0.showBarGraph(0, 7, mind_n_k, 7); //柱状图:前mind_n_k颗点亮
mind_n_k += 1;
delay(300);//间隔300ms
}
//第二轮:灯逐个减少熄灭 7→0
for (int index = 0; index < 8; index++) {
neoPixel_P0.showBarGraph(0, 7, mind_n_k, 7);
mind_n_k -= 1;
delay(300);
neoPixel_P0.setRangeColor(0, 0, 0x000000);//最后单点清零
}
k10.canvas->canvasClear(8);
}
核心函数:showBarGraph(首灯,尾灯,当前数值,满值)
满值 = 7(8 颗灯 0~7):
mind_n_k=0:全灭
mind_n_k=3:前 0、1、2 三颗点亮
mind_n_k=7:8 颗全部点亮
四、硬件接线(8 位 WS2812 灯柱)

五、整体功能总结
按下 A 键:8 颗灯全彩彩虹渐变,持续 3 秒;
按下 B 键:灯从下往上逐个点亮→再从上往下逐个熄灭,流水柱状效果;
屏幕同步提示当前运行模式。
六、关键库函数汇总

Mind+图形编程

实验场景图与视频记录





AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)