定时器PWM控制RGB彩灯案例

1.脉冲宽度调制PWM

  PWM(Pulse Width Modulation)简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在测量、通信、工控等方面。
  PWM的一个优点是从处理器到​​ ​被控系统​​​信号都是数字形式的,再进行数模转换。可将噪声影响降到最低(可以跟电脑一样)。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。

2.STM32定时器

  通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)。
  使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。
在这里插入图片描述
  定时器脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。在TIMx_CCMRx寄存器中的OCxM位写入’110’(PWM模式1)或’111’(PWM模式2),能够独立地设置每个OCx输出通道产生一路PWM。必须设置TIMx_CCMRx寄存器OCxPE位以使能相应的预装载寄存器,最后还要设置TIMx_CR1 寄存器的ARPE位, (在向上计数或中心对称模式中)使能自动重装载的预装载寄存器。
  本次RGB彩灯即可通过定时器PWM控制,实现全彩颜色显示。

3.RGB彩灯

在这里插入图片描述
在这里插入图片描述
  本次使用的RGB彩灯设备是国巨的RS-3535,亮度可达8000nit。使用RGB三个引脚,通过三原色的设置从而实现全彩颜色显示。
  硬件接口如下:

接口引脚
LED_RPB4(TIM3_CH1)
LED_GPB5(TIM3_CH2)
LED_BPB8(TIM4_CH3)

4.软件配置

4.1 定时器PWM通道配置

  根据硬件接口,接下来需要完成对定时器3的CH1和CH2配置,定时器4的CH3的配置。将通道配置为PWM输出模式。根据实际亮度测试,仅需将亮度周期时间设置为255即可,软件代码配置如下:
在这里插入图片描述
  定时器4的CH3配置:
在这里插入图片描述

4.2 定时器2配置

  为了实现呼吸灯效果,这里通过定时器2实现,设置周期时间为50ms,CNT+1时间为0.1ms。
在这里插入图片描述
在这里插入图片描述

5.代码生成

5.1 PW配置生成代码

  定时器3的CH1和CH2代码生成:
在这里插入图片描述
  定时器4的CH3代码生成:
在这里插入图片描述

5.2 增加PWM启动代码

  在软件生成代码过程中,PWM通道需要手动启动,添加代码如下:
在这里插入图片描述

5.3 RGB彩灯控制函数

  编写函数,实现RGB彩灯控制,后续仅需调用该函数即可实现全彩颜色显示。

/************rgb***************
函数功能:检测按键值
形  参:r,g,b --红绿蓝灯,取值范围为0~255
公  司:北京万邦易嵌
作  者:IT_阿水
*******************************/
void RGB_Ctl(uint8_t r,uint8_t g,uint8_t b)
{htim3.Instance->CCR1=(r/25);htim3.Instance->CCR2=(g/20);htim4.Instance->CCR3=(b/10);
}

6. RGB彩色呼吸灯实现

  通过定时器2,设置计数周期为50ms,计数器+1的时间为0.1ms。即没50ms改变一次RGB彩灯颜色。功能实现如下:
在这里插入图片描述
  在定时器2中断服务函数中,没进一次中断,即改变一次RGB颜色值,RGB颜色变化效果为:红—绿—蓝三种颜色逐渐转换。

uint8_t rgb[53*3][3] = {{0,0,0},{10,0,0},{20,0,0},{30,0,0},{40,0,0},{50,0,0},{60,0,0},{70,0,0},{80,0,0},{90,0,0},{100,0,0},{110,0,0},{120,0,0},{130,0,0},{140,0,0},{150,0,0},{160,0,0},{170,0,0},{180,0,0},{190,0,0},{200,0,0},{210,0,0},{220,0,0},{230,0,0},{240,0,0},{250,0,0},{255,0,0},{250,0,0},{240,0,0},{230,0,0},{220,0,0},{210,0,0},{200,0,0},{190,0,0},{180,0,0},{170,0,0},{160,0,0},{150,0,0},{140,0,0},{130,0,0},{120,0,0},{110,0,0},{100,0,0},{90,0,0},{80,0,0},{70,0,0},{60,0,0},{50,0,0},{40,0,0},{30,0,0},{20,0,0},{10,0,0},{0,0,0},{0,0,0},{0,10,0},{0,20,0},{0,30,0},{0,40,0},{0,50,0},{0,60,0},{0,70,0},{0,80,0},{0,90,0},{0,100,0},{0,110,0},{0,120,0},{0,130,0},{0,140,0},{0,150,0},{0,160,0},{0,170,0},{0,180,0},{0,190,0},{0,200,0},{0,210,0},{0,220,0},{0,230,0},{0,240,0},{0,250,0},{0,255,0},{0,250,0},{0,240,0},{0,230,0},{0,220,0},{0,210,0},{0,200,0},{0,190,0},{0,180,0},{0,170,0},{0,160,0},{0,150,0},{0,140,0},{0,130,0},{0,120,0},{0,110,0},{0,100,0},{0,90,0},{0,80,0},{0,70,0},{0,60,0},{0,50,0},{0,40,0},{0,30,0},{0,20,0},{0,10,0},{0,0,0},{0,0,0},{0,0,10},{0,0,20},{0,0,30},{0,0,40},{0,0,50},{0,0,60},{0,0,70},{0,0,80},{0,0,90},{0,0,100},{0,0,110},{0,0,120},{0,0,130},{0,0,140},{0,0,150},{0,0,160},{0,0,170},{0,0,180},{0,0,190},{0,0,200},{0,0,210},{0,0,220},{0,0,230},{0,0,240},{0,0,250},{0,0,255},{0,0,250},{0,0,240},{0,0,230},{0,0,220},{0,0,210},{0,0,200},{0,0,190},{0,0,180},{0,0,170},{0,0,160},{0,0,150},{0,0,140},{0,0,130},{0,0,120},{0,0,110},{0,0,100},{0,0,90},{0,0,80},{0,0,70},{0,0,60},{0,0,50},{0,0,40},{0,0,30},{0,0,20},{0,0,10},{0,0,0}};
void TIM2_IRQHandler(void)
{/* USER CODE BEGIN TIM2_IRQn 0 */static uint16_t i=0;/* USER CODE END TIM2_IRQn 0 */HAL_TIM_IRQHandler(&htim2);/* USER CODE BEGIN TIM2_IRQn 1 */i++;if(i>=159)i=0;RGB_Ctl(rgb[i][0],rgb[i][1],rgb[i][2]);/* USER CODE END TIM2_IRQn 1 */
}

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/593668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

x-cmd pkg | bit - 实验性的现代化 git CLI

目录 简介首次用户功能特点竞品和相关作品进一步探索 简介 bit,由 Chris Walz 于 2020 年使用 Go 语言开发,提供直观的命令行补全提示和建立在 git 命令之上的封装命令,旨在建立完全兼容 git 命令的现代化 CLI。 首次用户 使用 x bit 即可自…

test ui-03-cypress 入门介绍

cypress 是什么? 简而言之,Cypress 是一款专为现代Web构建的下一代前端测试工具。我们解决了开发人员和质量保证工程师在测试现代应用程序时面临的关键问题。 我们使以下操作成为可能: 设置测试编写测试运行测试调试测试 Cypress经常与Se…

使用宝塔在Linux面板搭建网站,并实现公网远程访问

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 前言 宝塔面板作为简单好用的服务器运维管理面板,它支持Linux/Windows系统,我们可用它来一键配置LAMP/LNMP环境、网站、数据库、FTP等&…

如何在anaconda里安装basemap和pyproj库

当直接使用conda命令进行安装basemap和pyproj库时,会出现版本不对应的报错问题(如下图),所以此篇博客用以展示如何安装basemap和pyproj库 题主默认使用的anaconda源已经切换成了清华大学源,但是仍然会出现报错,所以不是源的问题&a…

CMake入门教程【核心篇】函数(function)

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「本文的内容」:CMake入门教程 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 1. 函数的定义与基本…

labview 与三菱FX 小型PLC通信(OPC)

NI OPC服务器与三菱FX3U PLC通讯方法 一、新建通道名称为:MIT 二、选择三菱FX系列 三、确认端口号相关的参数(COM端:7.波特率:9600,数据位:7,校验:奇校验,停止位&#xf…

海外住宅IP代理的工作原理和应用场景分析,新手必看

海外住宅IP代理作为一种技术解决方案,为用户提供了访问全球网络资源和维护隐私安全的方法。本文将介绍海外住宅IP代理的工作原理和应用场景,帮助读者更好地理解和利用这一技术。 一、工作原理 海外住宅IP代理的工作原理基于代理服务器和IP地址的转发。它…

ITSS服务工程师vs ITSS服务经理:哪个职位更适合你?

✨在信息技术服务领域,ITSS服务工程师和ITSS服务经理是两个极具吸引力的职位。但它们各自的特点和要求是什么?哪个更适合你的职业规划和个人兴趣?接下来,我们将为你详细解读这两个职位的区别,帮助你做出明智的选择&…

Win32 基本程序设计原理总结

目录 1. Windows系统 基本原理 2. 需要什么函数库(.LIB) 2.1 C Runtimes: 2.2 Windows API 3. 需要什么头文件(.H) 4. Windows 程序运行的本质 5. 窗口类的注册与窗口的诞生 6.消息 6.1 消息分类:…

咖啡茶饮营销不止「9 块 9」,门店「VACS」需要全面提升

每一座城市 CBD 的写字楼下和热门商圈的街边,都是咖啡茶饮的战场。作为餐饮行业的热门赛道,咖啡茶饮近年来一直保持高速增长。据统计,截至今年 10 月 31 日,陆陆续续又有约 15 万家店铺开门营业…… 白热化竞争下,茶饮…

2023到2024年:前端发展趋势展望

本文探讨了2023年至2024年之间前端领域的发展趋势。我们将关注以下几个方面的变化:无代码/低代码开发的兴起、WebAssembly的广泛应用、跨平台技术的发展、人工智能在前端的应用以及用户体验的不断优化。 随着技术的飞速发展,前端开发在推动互联网与移动应…

Google Gemini接口调用(node版)

一、打开Google AI Studio https://makersuite.google.com/app/apikey 二、在国外服务器上部署一个接口用于真正的请求 const sdAxiosOnAzure async (req, res) > {let {config {url: https://sinkin.ai/api/inference,method: post,data: {},timeout: 30 * 60 * 1000,}…

Python爬虫中的协程

协程 基本概念 协程:当程序执行的某一个任务遇到了IO操作时(处于阻塞状态),不让CPU切换走(就是不让CPU去执行其他程序),而是选择性的切换到其他任务上,让CPU执行新的任务&#xff…

网络安全—认证技术

文章目录 加密认证对称密钥体制公钥密码体制公钥的加密公钥身份认证和加密 鉴别码认证MAC鉴别码 报文摘要认证认证 加密只认证数字签名 通过了解以前前辈们使用的消息认证慢慢渐进到现代的完整的认证体系。所以在学习的时候也很蒙圈,因为前期的很多技术都是有很严重…

这次,数据泄露的目标受害者指向了---救护车服务公司

已停业的救护车服务遭到勒索软件攻击导致近百万人受到威胁! 此次数据泄露的目标受害者是法伦救护车服务公司,该公司是Transformative Healthcare的子公司。ALPHV勒索软件团伙声称对2023年4月下旬对Transformative Healthcare的攻击负责,并导…

SpringBoot 集成支付宝支付

网页操作步骤 1.进入支付宝开发平台—沙箱环境 使用开发者账号登录开放平台控制平台 2.点击沙箱进入沙箱环境 说明:沙箱环境支持的产品,可以在沙箱控制台 沙箱应用 > 产品列表 中查看。 3.进入沙箱,配置接口加签方式 在沙箱进行调试前…

rime中州韵小狼毫 inputShow lua Translator 输入字符透传翻译器

在 rime中州韵小狼毫 help lua Translator 中我们分享了如何使用 lua 脚本定义一个 translator,并以 五笔・拼音 为例引用了该 translator,并且达到了预期的效果。 今天,我们继续通过 lua 脚本为 rime中州韵/小狼毫 输入法打造一个 translat…

实验3 vTPM相关

可以代做实验手册等私聊 一、实验目的 1.了解vTPM原理和相关知识;2.创建具备vTPM的虚拟机;3.加深对可信计算技术的理解。 二、实验内容 安装seabios,libtpms,swtpm,qemu‐tpm;启动vTPM;安装…

守正出奇,穿越周期 - Bytebase 的 2023

前情提要:Bytebase 的 2022|埋头苦干,孕育希望 产品迭代 2023 年共发布了 25 个版本。这个数字和 2022 年一样,除开春节和一次全员疫情,做到了两周一次的更新。 版本号从 1.11.0 升级到了 2.13.0。其中在 5 月份&…

MySQL常见面试题总结

1.MySQL基础 1.1什么是关系型数据库? 顾名思义,关系型数据库(RDB,Relational Database)就是一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系(一对一、一对多、多对多…