基于stm32的串口/蓝牙控制LED灯的开关和亮度(超基础)

本文介绍了一个使用STM32核心板通过USB转TTL模块实现蓝牙控制LED灯的实验。理论部分涉及串口通信和PWM脉宽调制技术。程序设计中,通过开启串口接收中断,根据接收到的数据调整LED灯的状态或PWM亮度。用户可使用手机APP进行蓝牙测试,通过改变TIM3的比较值调节LED灯亮度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述▬▬▬▬▬▶蓝牙控制灯实验◀▬▬▬▬▬


⚔️硬件模块

STM32核心板
在这里插入图片描述


USB转TTL模块一个

在这里插入图片描述


手动焊接小灯两个


手动焊接LED灯两个

不会焊接用杜邦线接也一样

在这里插入图片描述


⚔️理论支持

1.串口通信(最常用且最基础的通讯,这里不展开)

2.PWM脉宽调制

脉冲宽度调制脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。


⚔️程序思路

开启串口接收中断,变量保存接受到的数据,数据定义标志位,主函数switch函数走不同的结果


⚔️主函数代码

本项目使用的串口测试,如需用蓝牙测试,只需要把rx,tx脚连到对应的蓝牙引脚即可

可用手机应用商店的APP下载测试

 int main(void)
 {		
	delay_init();	    	 //延时函数初始化	  
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	uart_init(9600);	 //串口初始化为9600
	TIM3_PWM_Init(899,0);
	TIM_SetCompare2(TIM3,1000);
	LED_Init();
	while(1)
	{
	    switch(flag)
         {
					case 0:
				    GPIO_ResetBits(GPIOA,GPIO_Pin_8);
                    printf("off\n");                
					break  ;
					case 1:  
				    GPIO_SetBits(GPIOA,GPIO_Pin_8);
                    printf("on\n");  
					break  ;
					case 2: 
				    TIM_SetCompare2(TIM3,1000);
					printf("亮度1\n"); 
					break  ;
					case 4:
				    TIM_SetCompare2(TIM3,800);
					printf("亮度2\n"); 
					break;
					case 5:
				    TIM_SetCompare2(TIM3,300);
					printf("亮度3\n"); 
					break;
	  }
	
	}
}

在这里插入图片描述▬▬▬▬▬▶点击获取程序源码◀▬▬▬▬▬


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日落悬崖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值