驴友花雕 发表于 5 天前

【花雕动手做】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模拟呼吸灯



驴友花雕 发表于 5 天前

【花雕动手做】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 灯] → [定义呼吸灯函数] → [设置颜色列表] → [循环播放每种颜色] → [异常时关闭灯光]

驴友花雕 发表于 5 天前

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

实验串口返回情况



实验场景图动态图












驴友花雕 发表于 5 天前

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


页: [1]
查看完整版本: 【花雕动手做】CanMV K230 AI视觉模块之使用RGB模拟呼吸灯