测试实验代码
- #【花雕动手做】CanMV K230 AI视觉识别模块之使用板载RGB模拟呼吸灯
-
- # 导入控制 RGB 灯的库
- from ybUtils.YbRGB import YbRGB
-
- # 导入时间库,用于延时控制
- import time
-
- # 导入数学库,用于计算正弦函数实现渐变效果
- import math
-
- # 创建 RGB 灯控制对象
- rgb = YbRGB()
-
- # 定义呼吸灯效果函数
- def breath_effect(r, g, b, duration=2):
- """
- 实现呼吸灯效果:
- - r, g, b:目标颜色的 RGB 值(范围 0–255)
- - duration:一次完整呼吸周期的持续时间(单位:秒)
- """
- steps = 1000 # 设置渐变的步数,步数越多,变化越平滑
-
- # 渐亮过程:从暗到亮
- for i in range(steps):
- # 使用正弦函数计算当前亮度,使变化更自然
- brightness = math.sin(i / steps * math.pi)
- # 根据亮度调整当前颜色值
- current_r = int(r * brightness)
- current_g = int(g * brightness)
- current_b = int(b * brightness)
- # 显示当前颜色
- rgb.show_rgb([current_r, current_g, current_b])
- # 控制每一步的时间间隔,使整个过程持续 duration 秒
- time.sleep(duration / (2 * steps))
-
- # 渐暗过程:从亮到暗
- for i in range(steps - 1, -1, -1):
- brightness = math.sin(i / steps * math.pi)
- current_r = int(r * brightness)
- current_g = int(g * brightness)
- current_b = int(b * brightness)
- rgb.show_rgb([current_r, current_g, current_b])
- time.sleep(duration / (2 * steps))
-
- # 定义一组用于呼吸灯的颜色
- colors = [
- (255, 0, 0), # 红色
- (0, 255, 0), # 绿色
- (0, 0, 255), # 蓝色
- (255, 0, 255), # 紫色
- (255, 165, 0), # 橙色
- (0, 255, 255), # 青色
- ]
-
- # 主程序循环:依次播放每种颜色的呼吸灯效果
- try:
- while True:
- for color in colors:
- breath_effect(color[0], color[1], color[2]) # 调用呼吸灯函数
-
- except Exception:
- # 如果程序异常退出,确保关闭 RGB 灯
- rgb.show_rgb([0, 0, 0])
复制代码
通过控制 RGB 灯的亮度渐变,使其呈现类似“呼吸”般的柔和闪烁效果,并循环播放多种颜色。
代码解读:
Python
- #【花雕动手做】CanMV K230 AI视觉识别模块之使用板载RGB模拟呼吸灯
复制代码
程序标题注释,说明这是一个教学示例,主题是使用 K230 模块控制 RGB 灯实现呼吸灯效果。
Python
- from ybUtils.YbRGB import YbRGB
复制代码
导入 YbRGB 类,这是控制板载 RGB 灯的封装库。
Python
复制代码
导入时间模块,用于延时控制灯光变化节奏。
Python
复制代码
导入数学模块,用于计算正弦函数,让亮度变化更自然流畅。
Python
复制代码
创建 RGB 灯控制对象,后续通过它来设置颜色。
呼吸灯函数定义
Python
- def breath_effect(r, g, b, duration=2):
复制代码
定义一个函数,用于实现呼吸灯效果。参数 r, g, b 是目标颜色,duration 是一次呼吸周期的时间(秒)。
Python
复制代码
设置渐变的步数,步数越多,变化越平滑。
Python
- for i in range(steps):
-
- brightness = math.sin(i / steps * math.pi)
-
- current_r = int(r * brightness)
-
- current_g = int(g * brightness)
-
- current_b = int(b * brightness)
-
- rgb.show_rgb([current_r, current_g, current_b])
-
- time.sleep(duration / (2 * steps))
复制代码
渐亮过程:使用正弦函数计算亮度,从暗到亮。每一步都设置新的颜色并延时一点时间。
Python
- for i in range(steps-1, -1, -1):
-
- brightness = math.sin(i / steps * math.pi)
-
- current_r = int(r * brightness)
-
- current_g = int(g * brightness)
-
- current_b = int(b * brightness)
-
- rgb.show_rgb([current_r, current_g, current_b])
-
- time.sleep(duration / (2 * steps))
复制代码
渐暗过程:亮度从高到低,形成完整的呼吸灯周期。
定义颜色列表
Python
- colors = [
-
- (255, 0, 0), # 红色
-
- (0, 255, 0), # 绿色
-
- (0, 0, 255), # 蓝色
-
- (255, 0, 255), # 紫色
-
- (255, 165, 0), # 橙色
-
- (0, 255, 255), # 青色
-
- ]
复制代码
定义一组颜色,每个颜色都会依次播放呼吸灯效果。
主循环
Python
- try:
-
- while True:
-
- for color in colors:
-
- breath_effect(color[0], color[1], color[2])
复制代码
无限循环,每次调用 breath_effect() 播放一个颜色的呼吸灯效果。
异常处理
Python
- except Exception:
-
- rgb.show_rgb([0, 0, 0])
复制代码
如果程序异常退出,确保 RGB 灯关闭,避免持续发光。
程序流程图
[初始化 RGB 灯] → [定义呼吸灯函数] → [设置颜色列表] → [循环播放每种颜色] → [异常时关闭灯光]
|