18. 综合实验四 - 氛围灯

18.1. 实验介绍

18.1.1. 实验物料清单

名称

数量

备注

野火RGB灯模块

1

野火W25Q64模块

1

按键

1

扩展板板载

18.1.2. 实验现象介绍

这是一个基于RGB灯变色兼有呼吸效果的程序。程序运行初期会加载FLASH里保存的氛围灯数据, 若检测到FLASH没有氛围灯数据,则使用默认的氛围灯数据。程序运行期间,按下KEY1,会生成一组随机 的氛围灯数据,并立刻应用在RGB灯上和保存到FLASH中。按下KEY2,擦除已保存的氛围灯数据。

18.1.3. 实验接线

野火RGB灯模块接线:参考《18.I2C接口 OLED屏幕》章节。

野火W25Q64模块接线:参考《17.读写SPI FLASH模块》章节。

18.2. 实验操作

18.2.1. 开启插件

本次实验以鲁班猫1为例,执行如下命令并开启相关插件:

1
sudo vi /boot/uEnv/uEnv.txt
../_images/show-dtbo7.png

18.2.2. 获取程序

综合实验三程序位于lubancat_rk_code_storage/expansion_board/experiment/experiment_4_RGB, 将experiment_4_RGB整个文件夹拷贝到板卡。

本次的氛围灯综合实验基于两种实现方式,如上一章《17. RGB LED》。分为GPIO翻转驱动和SPI驱动。

18.3. GPIO翻转驱动

这里需要提前参考《17. RGB LED》章节,编译安装ws2812驱动。

本实验要用到的外设配置已经在配置文件gpio/configuration.json中定义,运行程序前可按实际情况修改。一般 只需要修改按键的输入事件,因为每次上电后,这些输入事件的注册顺序不一定每次相同。

18.3.1. c代码测试

c测试代码为:gpio/c/main.c

执行如下命令运行程序:

1
2
3
4
5
6
7
8
# 进入c程序目录
cd experiment_4_RGB/gpio/c

# 编译程序
sudo make

# 运行程序
sudo ./main

程序开始运行后,会在默认的颜色数据(四个颜色)间进行呼吸渐变。按Key1重新随机生成四个颜色数据并保存到flash, 按下Key2清除flash数据。

注解

目前基于GPIO翻转驱动实现的RGB渐变呼吸灯效果不佳,会大几率出现频闪和颜色误识别。

../_images/show-operation-runcode-gpio.gif

18.4. SPI驱动

需要将RGB灯模块的IN脚接到扩展板SPI接口的DI脚,SPI Flash接线不变,接线对照表如下:

野火三色RGB灯模块

鲁班猫扩展板SPI接口

5V

5V

GND

GND

IN

DI

本实验要用到的外设配置已经在配置文件spi/configuration.json中定义,运行程序前可按实际情况修改。一般 只需要修改按键的输入事件,因为每次上电后,这些输入事件的注册顺序不一定每次相同。

18.4.1. c代码测试

c测试代码为:spi/c/main.c

执行如下命令运行程序:

1
2
3
4
5
6
7
8
# 进入c程序目录
cd experiment_4_RGB/spi/c

# 编译程序
sudo make

# 运行程序
sudo ./main

程序开始运行后,会在默认的颜色数据(四个颜色)间进行呼吸渐变。按Key1重新随机生成四个颜色数据并保存到flash, 按下Key2清除flash数据。

../_images/show-operation-runcode-spi.gif