19浏览
查看: 19|回复: 3

[项目] 【花雕动手做】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模拟呼吸灯图2

【花雕动手做】CanMV K230 AI视觉模块之使用RGB模拟呼吸灯图3

CanMV K230 AI视觉识别模块之使用板载RGB模拟呼吸灯


【花雕动手做】CanMV K230 AI视觉模块之使用RGB模拟呼吸灯图1

驴友花雕  中级技神
 楼主|

发表于 8 小时前

【花雕动手做】CanMV K230 AI视觉模块之使用RGB模拟呼吸灯

测试实验代码

  1. #【花雕动手做】CanMV K230 AI视觉识别模块之使用板载RGB模拟呼吸灯
  2. # 导入控制 RGB 灯的库
  3. from ybUtils.YbRGB import YbRGB
  4. # 导入时间库,用于延时控制
  5. import time
  6. # 导入数学库,用于计算正弦函数实现渐变效果
  7. import math
  8. # 创建 RGB 灯控制对象
  9. rgb = YbRGB()
  10. # 定义呼吸灯效果函数
  11. def breath_effect(r, g, b, duration=2):
  12.     """
  13.     实现呼吸灯效果:
  14.     - r, g, b:目标颜色的 RGB 值(范围 0–255)
  15.     - duration:一次完整呼吸周期的持续时间(单位:秒)
  16.     """
  17.     steps = 1000  # 设置渐变的步数,步数越多,变化越平滑
  18.     # 渐亮过程:从暗到亮
  19.     for i in range(steps):
  20.         # 使用正弦函数计算当前亮度,使变化更自然
  21.         brightness = math.sin(i / steps * math.pi)
  22.         # 根据亮度调整当前颜色值
  23.         current_r = int(r * brightness)
  24.         current_g = int(g * brightness)
  25.         current_b = int(b * brightness)
  26.         # 显示当前颜色
  27.         rgb.show_rgb([current_r, current_g, current_b])
  28.         # 控制每一步的时间间隔,使整个过程持续 duration 秒
  29.         time.sleep(duration / (2 * steps))
  30.     # 渐暗过程:从亮到暗
  31.     for i in range(steps - 1, -1, -1):
  32.         brightness = math.sin(i / steps * math.pi)
  33.         current_r = int(r * brightness)
  34.         current_g = int(g * brightness)
  35.         current_b = int(b * brightness)
  36.         rgb.show_rgb([current_r, current_g, current_b])
  37.         time.sleep(duration / (2 * steps))
  38. # 定义一组用于呼吸灯的颜色
  39. colors = [
  40.     (255, 0, 0),    # 红色
  41.     (0, 255, 0),    # 绿色
  42.     (0, 0, 255),    # 蓝色
  43.     (255, 0, 255),  # 紫色
  44.     (255, 165, 0),  # 橙色
  45.     (0, 255, 255),  # 青色
  46. ]
  47. # 主程序循环:依次播放每种颜色的呼吸灯效果
  48. try:
  49.     while True:
  50.         for color in colors:
  51.             breath_effect(color[0], color[1], color[2])  # 调用呼吸灯函数
  52. except Exception:
  53.     # 如果程序异常退出,确保关闭 RGB 灯
  54.     rgb.show_rgb([0, 0, 0])
复制代码

通过控制 RGB 灯的亮度渐变,使其呈现类似“呼吸”般的柔和闪烁效果,并循环播放多种颜色。
代码解读:

Python

  1. #【花雕动手做】CanMV K230 AI视觉识别模块之使用板载RGB模拟呼吸灯
复制代码

程序标题注释,说明这是一个教学示例,主题是使用 K230 模块控制 RGB 灯实现呼吸灯效果。

Python

  1. from ybUtils.YbRGB import YbRGB
复制代码

导入 YbRGB 类,这是控制板载 RGB 灯的封装库。

Python
  1. import time
复制代码

导入时间模块,用于延时控制灯光变化节奏。

Python
  1. import math
复制代码

导入数学模块,用于计算正弦函数,让亮度变化更自然流畅。

Python
  1. rgb = YbRGB()
复制代码

创建 RGB 灯控制对象,后续通过它来设置颜色。

呼吸灯函数定义
Python
  1. def breath_effect(r, g, b, duration=2):
复制代码

定义一个函数,用于实现呼吸灯效果。参数 r, g, b 是目标颜色,duration 是一次呼吸周期的时间(秒)。
Python  
  1. steps = 1000
复制代码

设置渐变的步数,步数越多,变化越平滑。
Python  
  1. for i in range(steps):
  2.         brightness = math.sin(i / steps * math.pi)
  3.         current_r = int(r * brightness)
  4.         current_g = int(g * brightness)
  5.         current_b = int(b * brightness)
  6.         rgb.show_rgb([current_r, current_g, current_b])
  7.         time.sleep(duration / (2 * steps))
复制代码


渐亮过程:使用正弦函数计算亮度,从暗到亮。每一步都设置新的颜色并延时一点时间。
Python  
  1. for i in range(steps-1, -1, -1):
  2.         brightness = math.sin(i / steps * math.pi)
  3.         current_r = int(r * brightness)
  4.         current_g = int(g * brightness)
  5.         current_b = int(b * brightness)
  6.         rgb.show_rgb([current_r, current_g, current_b])
  7.         time.sleep(duration / (2 * steps))
复制代码


渐暗过程:亮度从高到低,形成完整的呼吸灯周期。
定义颜色列表
Python

  1. colors = [
  2.     (255, 0, 0),    # 红色
  3.     (0, 255, 0),    # 绿色
  4.     (0, 0, 255),    # 蓝色
  5.     (255, 0, 255),  # 紫色
  6.     (255, 165, 0),  # 橙色
  7.     (0, 255, 255),  # 青色
  8. ]
复制代码


定义一组颜色,每个颜色都会依次播放呼吸灯效果。

主循环
Python

  1. try:   
  2.    while True:
  3.         for color in colors:
  4.             breath_effect(color[0], color[1], color[2])
复制代码

无限循环,每次调用 breath_effect() 播放一个颜色的呼吸灯效果。

异常处理
Python

  1. except Exception:
  2.     rgb.show_rgb([0, 0, 0])
复制代码


如果程序异常退出,确保 RGB 灯关闭,避免持续发光。

程序流程图
[初始化 RGB 灯] → [定义呼吸灯函数] → [设置颜色列表] → [循环播放每种颜色] → [异常时关闭灯光]

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 8 小时前

【花雕动手做】CanMV K230 AI视觉模块之使用RGB模拟呼吸灯

实验串口返回情况

【花雕动手做】CanMV K230 AI视觉模块之使用RGB模拟呼吸灯图4

实验场景图  动态图

【花雕动手做】CanMV K230 AI视觉模块之使用RGB模拟呼吸灯图1


【花雕动手做】CanMV K230 AI视觉模块之使用RGB模拟呼吸灯图2


【花雕动手做】CanMV K230 AI视觉模块之使用RGB模拟呼吸灯图3

【花雕动手做】CanMV K230 AI视觉模块之使用RGB模拟呼吸灯图5


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 8 小时前

【花雕动手做】CanMV K230 AI视觉模块之使用RGB模拟呼吸灯

【花雕动手做】CanMV K230 AI视觉模块之使用RGB模拟呼吸灯图1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail