【花雕动手做】行空板K10系列实验之屏幕显示与引脚操作八位WS2812B灯环
实验开源代码
- #include "unihiker_k10.h"
- #include <DFRobot_NeoPixel.h>
- // 创建对象
- uint8_t screen_dir=3;
- UNIHIKER_K10 k10;
- DFRobot_NeoPixel neoPixel_P0;
-
-
- // 主程序开始
- void setup() {
- k10.begin();
- k10.initScreen(screen_dir);
- k10.creatCanvas();
- k10.setScreenBackground(0xFFFFFF);
- k10.canvas->canvasText(" 八位WS2812B灯环", 3, 0x0000FF);
- k10.canvas->updateCanvas();
- neoPixel_P0.begin(P0, 8);
- neoPixel_P0.setBrightness(35);
- }
- void loop() {
- neoPixel_P0.setRangeColor(0, 1, 0xFF0000);
- k10.canvas->canvasText(" 红色灯亮", 5, 0xFF0000);
- k10.canvas->updateCanvas();
- delay(1000);
- k10.canvas->canvasClear(5);
- neoPixel_P0.setRangeColor(2, 3, 0x0000FF);
- k10.canvas->canvasText(" 蓝色灯亮", 6, 0x0000FF);
- k10.canvas->updateCanvas();
- delay(1000);
- k10.canvas->canvasClear(6);
- neoPixel_P0.setRangeColor(4, 5, 0xFF6600);
- k10.canvas->canvasText(" 橙色灯亮", 7, 0xFF6600);
- k10.canvas->updateCanvas();
- delay(1000);
- k10.canvas->canvasClear(7);
- neoPixel_P0.setRangeColor(6, 7, 0x00FF00);
- k10.canvas->canvasText(" 绿色灯亮", 8, 0x00FFFF);
- k10.canvas->updateCanvas();
- delay(1000);
- k10.canvas->canvasClear(8);
- neoPixel_P0.clear();
- delay(1000);
- }
复制代码
代码解析
工程功能:屏幕文字提示 + 分四段依次点亮 8 颗 RGB 彩灯,循环流水变色,搭载 DFRobot WS2812 驱动库、K10 屏幕库。
一、头文件与全局定义
- #include "unihiker_k10.h" // K10屏幕驱动库,画布、文字、底色接口
-
- #include <DFRobot_NeoPixel.h> // WS2812(NeoPixel)全彩灯带驱动库
-
- uint8_t screen_dir=3; // 屏幕方向=3,旋转显示
-
- UNIHIKER_K10 k10; // K10屏幕实例
-
- DFRobot_NeoPixel neoPixel_P0; // WS2812彩灯对象,接引脚P0
复制代码
硬件配置:P0 引脚外接 8 颗串联 WS2812 灯环。
二、setup () 上电初始化(只运行一次)
- void setup() {
-
- k10.begin(); // K10硬件初始化
-
- k10.initScreen(screen_dir); // 设置屏幕旋转方向3
-
- k10.creatCanvas(); // 创建绘图画布
-
- k10.setScreenBackground(0xFFFFFF);// 屏幕底色:白色
-
- // 在画布写入标题:八位WS2812B灯环,字号3,蓝色字体
-
- k10.canvas->canvasText(" 八位WS2812B灯环", 3, 0x0000FF);
-
- k10.canvas->updateCanvas(); // 刷新标题到屏幕
-
-
-
- neoPixel_P0.begin(P0, 8); // WS2812初始化:引脚P0、一共8颗灯珠(编号0~7)
-
- neoPixel_P0.setBrightness(35); // 设置全局亮度35(取值0~255,防止过亮)
-
- }
复制代码
上电效果:白屏 + 蓝色标题「八位 WS2812B 灯环」。
三、loop () 循环主体,分 5 个阶段,一轮总耗时 5 秒
灯珠编号:0、1、2、3、4、5、6、7 八个灯,两两一组,分四色点亮,最后全灭。
阶段 1(1s):0、1 号红灯点亮
- neoPixel_P0.setRangeColor(0, 1, 0xFF0000); // 灯0~1设红色
-
- k10.canvas->canvasText(" 红色灯亮", 5, 0xFF0000);//5号字号红字提示
-
- k10.canvas->updateCanvas();
-
- delay(1000);
-
- k10.canvas->canvasClear(5); // 清除第5行文字,不擦除标题
复制代码
阶段 2(1s):2、3 号蓝灯点亮
- neoPixel_P0.setRangeColor(2, 3, 0x0000FF); //灯2~3蓝色
-
- k10.canvas->canvasText(" 蓝色灯亮", 6, 0x0000FF);//6号字号蓝字
-
- k10.canvas->updateCanvas();
-
- delay(1000);
-
- k10.canvas->canvasClear(6); //清空第6行
复制代码
阶段 3(1s):4、5 号橙灯点亮
- neoPixel_P0.setRangeColor(4, 5, 0xFF6600);//灯4~5橙色
-
- k10.canvas->canvasText(" 橙色灯亮", 7, 0xFF6600);//7行橙字
-
- k10.canvas->updateCanvas();
-
- delay(1000);
-
- k10.canvas->canvasClear(7);
复制代码
阶段 4(1s):6、7 号绿灯点亮
- neoPixel_P0.setRangeColor(6, 7, 0x00FF00);//灯6~7绿色
-
- k10.canvas->canvasText(" 绿色灯亮", 8, 0x00FFFF);//8行青色字体提示
-
- k10.canvas->updateCanvas();
-
- delay(1000);
-
- k10.canvas->canvasClear(8);
复制代码
阶段 5(1s):所有彩灯熄灭
- neoPixel_P0.clear(); //全部WS2812关灯
-
- delay(1000);
复制代码
四、完整运行时序(循环往复)

5 秒一个周期,无限循环。
五、关键函数说明
setRangeColor(起始灯号,结束灯号,颜色):批量设置连续灯珠颜色
canvasText(文字,字号,颜色):指定字号在屏幕换行写入文字,自动向下换行(5/6/7/8 代表不同行)
canvasClear(行号):只清空指定一行文字,保留标题,不用全画布清空
neoPixel_P0.clear():所有 WS2812 断电熄灭
六、颜色对照表

|