【花雕动手做】CanMV K230 AI视觉模块之使用RGB模拟呼吸灯
什么是 CanMV K230?
CanMV K230是一款高性价比的RISC-V边缘AI平台,凭借低功耗、强视觉处理能力和开放的开发生态,成为嵌入式AI开发的理想选择,尤其适合需要快速部署视觉与AI功能的创客、中小企业及教育场景。CanMV 是一套 AI 视觉开发平台,K230 是其核心芯片。该模块结合了图像采集、AI推理、边缘计算等能力,适合嵌入式视觉应用开发。
CanMV:类似 OpenMV 的图像处理框架,支持 Python 编程,简化视觉识别开发流程。
K230 芯片:嘉楠科技推出的 AIoT SoC,采用 RISC-V 架构,内置第三代 KPU(AI加速单元),算力高达 6 TOPS,性能是 K210 的 13.7 倍。
CanMV K230 AI视觉识别模块之使用板载RGB模拟呼吸灯
【花雕动手做】CanMV K230 AI视觉模块之使用RGB模拟呼吸灯
测试实验代码#【花雕动手做】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()
# 控制每一步的时间间隔,使整个过程持续 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()
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, color, color)# 调用呼吸灯函数
except Exception:
# 如果程序异常退出,确保关闭 RGB 灯
rgb.show_rgb()
通过控制 RGB 灯的亮度渐变,使其呈现类似“呼吸”般的柔和闪烁效果,并循环播放多种颜色。
代码解读:
Python
#【花雕动手做】CanMV K230 AI视觉识别模块之使用板载RGB模拟呼吸灯
程序标题注释,说明这是一个教学示例,主题是使用 K230 模块控制 RGB 灯实现呼吸灯效果。
Python
from ybUtils.YbRGB import YbRGB
导入 YbRGB 类,这是控制板载 RGB 灯的封装库。
Python
import time
导入时间模块,用于延时控制灯光变化节奏。
Python
import math
导入数学模块,用于计算正弦函数,让亮度变化更自然流畅。
Python
rgb = YbRGB()
创建 RGB 灯控制对象,后续通过它来设置颜色。
呼吸灯函数定义
Python
def breath_effect(r, g, b, duration=2):
定义一个函数,用于实现呼吸灯效果。参数 r, g, b 是目标颜色,duration 是一次呼吸周期的时间(秒)。
Python
steps = 1000
设置渐变的步数,步数越多,变化越平滑。
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()
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()
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, color, color)
无限循环,每次调用 breath_effect() 播放一个颜色的呼吸灯效果。
异常处理
Python
except Exception:
rgb.show_rgb()
如果程序异常退出,确保 RGB 灯关闭,避免持续发光。
程序流程图
[初始化 RGB 灯] → [定义呼吸灯函数] → [设置颜色列表] → [循环播放每种颜色] → [异常时关闭灯光]
【花雕动手做】CanMV K230 AI视觉模块之使用RGB模拟呼吸灯
实验串口返回情况实验场景图动态图
【花雕动手做】CanMV K230 AI视觉模块之使用RGB模拟呼吸灯
页:
[1]