单片机开发无线控制系列-手机控制200万色彩灯

本文介绍了如何使用STM32单片机实现手机控制200万色彩灯。通过三基色(红、绿、蓝)LED灯,利用PWM调制亮度,每种颜色可调节0~127的亮度,组合出丰富的色彩。单片机部分涉及硬件连接、LED控制代码编写及数据包收发;手机端包括建立工程、配置数据、编辑控件及运行。教程详细阐述了每个步骤,从初始化GPIO、TIM到创建数据包,以及手机端滑动条控制LED亮度的实现。
摘要由CSDN通过智能技术生成

这次送上进阶版的LED灯控制教程。

首先解释一下为什么说是200万色的彩灯。几乎所有人类可以看到的颜色都可以用三种基本的颜色表示出来,那就是三基色 红(Red) 绿(Green) 蓝(Blue)。

本次的彩灯正是基于此原理,本次使用了四脚全彩LED灯。如上图左上角所示,其有四个引脚,其中最长的引脚接GND,其它引脚分别控制不同颜色,这种接法被称为共阴。LED灯管里置入了三个不同颜色的LED,其本质上与下方的图是等价的。就是相当于接了三个LED灯。这里我们只需要调节三种颜色的灯的亮度即可调和出各种各样的颜色,本次设计中每种颜色的灯可以调节0~127的亮度,因此128*128*128 = 2的21次方 = 2*1024*1024 = 两百多万色。

一般调节灯光的亮度有两种方式,一种是调整电压,一种是调整PWM占空比。在这里我们使用PWM的方式,PWM(脉冲宽度调制),说白了就是在指定周期内,引脚为高电平(或低电平)的时间占比。引脚为高电平的时间越长,则LED的亮度越高。当然前提是周期尽量短,频率尽量快,使眼睛来不及捕捉到灯光的闪烁。这里我们使用了三个PWM输出通道,三个通道的周期都是128的时间单位。当PWM高电平为128时间单位时,灯亮度为最高。高电平时间为0个时间单位时,LED灯不发光。

好了废话不多说,开干。

一、单片机部分的工作

1.1硬件连接

这里面注意R、G、B这三个口,分别是三个PWM的输出引脚,在本次我使用了TIM3的CH1~CH3,分别对应PA6、PA7和PB0这三个引脚。

1.2LED控制代码编写

首先是初始化代码

void initColorLED(uint16_t period)

{

  GPIO_InitTypeDef GPIO_InitStructure;

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

TIM_OCInitTypeDef TIM_OCInitStructure;

  /* TIM3 clock enable */

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

  /* GPIOA and GPIOB clock enable */

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |

                          RCC_APB2Periph_AFIO, ENABLE);<

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值