RVB2601应用开发实战系列二: 跑马灯

简介: 基于RVB2601的跑马灯程序是利用通过控制一颗RGB LED灯珠实现三色跑马灯效果。建议在在看本文之前,先详细看下RVB2601资源。本例程名为ch2601_marquee_demo,可以通过CDK直接从OCC拉取。
  1. 前言

基于RVB2601的跑马灯程序是利用通过控制一颗RGB LED灯珠实现三色跑马灯效果。

建议在在看本文之前,先详细看下RVB2601资源。本例程名为ch2601_marquee_demo,可以通过CDK直接从OCC拉取。

  1. 硬件配置

三色LED通过PIN引脚 PA7、PA25、PA4与CH2601主芯片GPIO控制器连通,主控可以通过对PA7、PA25和PA4的GPIO PIN的操作,可以实现三色LED不同颜色的闪烁。LED硬件原理图如下:
image.png

  1. 跑马灯开发

3.1 例程下载
打开CDK,点击HOME图标,查找ch2601_marquee_demo后,打开工程可以看到以下目录image.png

3.2 LED配置
led_pinmux_init
该功能函数位于app/src/led.c, 用于初始化三色LED灯的IO管脚。配置三色灯的PA7、PA25和PA4为IO模式,为每个IO管脚配置PWM通道以及占空比时间。

void led_pinmux_init()
{

    //7
csi_pin_set_mux(PA7, PA7_PWM_CH7);
csi_pin_set_mux(PA25, PA25_PWM_CH2);
csi_pin_set_mux(PA4, PA4_PWM_CH4);
ret = csi_pwm_init(&r, 0);
ret = csi_pwm_out_config(&r, 7 / 2, 300, 100, PWM_POLARITY_HIGH);
ret = csi_pwm_out_start(&r, 7 / 2);
    //25
ret = csi_pwm_out_config(&r, 2 / 2, 300, 100, PWM_POLARITY_HIGH);
ret = csi_pwm_out_start(&r, 2 / 2);
    //4
ret = csi_pwm_out_config(&r, 4 / 2, 300, 100, PWM_POLARITY_HIGH);
ret = csi_pwm_out_start(&r, 4 / 2);

led_refresh

该功能函数位于app/src/led.c, 用于依次闪烁LED。利用g_ctr计数器来判断闪烁LED灯。通过操作三根IO管脚来确定显示指定颜色的灯。

void led_refresh()
{

g_ctr++;
if (g_ctr == 3) {
        g_ctr = 0;
}
if (g_ctr == 0)
{
    csi_pwm_out_start(&r, 7 / 2);
    csi_pwm_out_stop(&r, 2 / 2);
    csi_pwm_out_stop(&r, 4 / 2);
}
else if (g_ctr == 1)
{        
    csi_pwm_out_start(&r, 2 / 2);
    csi_pwm_out_stop(&r, 7 / 2);
    csi_pwm_out_stop(&r, 4 / 2);
}
else //2
{
    csi_pwm_out_start(&r, 4 / 2);
    csi_pwm_out_stop(&r, 7 / 2);
    csi_pwm_out_stop(&r, 2 / 2);
}

}

demo_task
该功能函数位于app/src/main.c, 用于周期性点亮LED灯,在主函数里调用。

static void demo_task(void *arg)
{

lv_init();
oled_init();
lable_test();
led_pinmux_init();
while (1)
{
    lv_task_handler();
    udelay(1000 * 1000);
    lv_tick_inc(1);
    led_refresh();
}

}

3.3. 编译运行
编译通过后,点击下载成功,复位运行。可看左下角的灯依次闪烁。image.png

  1. 总结

本例程介绍了如何通过CSI接口配置IO管脚来控制LED灯,从而实现依次闪烁,达到跑马灯的效果。后续还有更多的开发例程,敬请期待!

相关文章
|
人工智能 搜索推荐 算法
【推荐系统】UserCF(基于用户的协同过滤)(理论+图解+代码实践)
【推荐系统】UserCF(基于用户的协同过滤)(理论+图解+代码实践)
2692 0
【推荐系统】UserCF(基于用户的协同过滤)(理论+图解+代码实践)
|
人工智能 自然语言处理 前端开发
Lobe Vidol:AI数字人交互平台,可与虚拟人和3D模型聊天互动
Lobe Vidol是一款开源的AI数字人交互平台,允许用户创建和互动自己的虚拟偶像。该平台提供流畅的对话体验、丰富的动作姿势库、优雅的用户界面设计以及多种技术支持,如文本到语音和语音到文本技术。Lobe Vidol适用于娱乐互动、在线教育、客户服务、品牌营销和社交媒体等多个应用场景。
760 7
Lobe Vidol:AI数字人交互平台,可与虚拟人和3D模型聊天互动
物联网卡不能使用在什么设备上
“物联网卡不能使用在什么设备上”这一操作或规定,通常基于物联网卡的特性、使用条款以及设备兼容性等因素。以下是对这一问题的详细分析和操作建议:
|
芯片
【TI速成】半小时入门MSPM0G3507简明教程之按键定时器(二)
半小时入门MSPM0G3507简明教程之按键定时器
1284 0
|
Dubbo Java 应用服务中间件
nacos常见问题之dubbo的耗时严重如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
922 0
|
Prometheus 监控 Cloud Native
Nacos集群监控搭建
Nacos 0.8.0版本完善了监控系统,支持通过暴露metrics数据接入第三方监控系统监控Nacos运行状态。
339 1
基于simiulink的flyback反激型电路建模与仿真
该文探讨了Flyback反激型电路的建模与仿真,这种电路常见于低至中功率应用,以其简单结构和低成本著称。文章详细介绍了电路原理、数学建模及仿真方法,包括储能和释能阶段的工作过程。使用MATLAB2022a进行仿真,并提到了电路搭建、参数设置及优化设计步骤。通过本文,读者可深入了解Flyback电路,为未来研究和优化设计打下基础,随着技术进步,该电路将在更多领域发挥潜力。
|
小程序 开发者
【经验分享】支付宝小程序如何获取外部链接携带的参数
【经验分享】支付宝小程序如何获取外部链接携带的参数
1083 7
|
数据建模 Java 开发工具
Android bugreport的使用
Android bugreport的使用
638 0