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

Posted 文妹怒敲键盘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于stm32的串口/蓝牙控制LED灯的开关和亮度(超基础)相关的知识,希望对你有一定的参考价值。

效果视频演示

串口控制oled灯的开关/亮度

硬件模块

单片机一块
在这里插入图片描述

USB转ttl接口一只
在这里插入图片描述
手动焊接小灯两个
手动焊接LED灯两个(分别用于开关和亮度,引脚用排针引出更方便接线)
在这里插入图片描述
理论支持

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

2,PWM脉宽调制

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

脉冲宽度调制是一种模拟控制方式,其根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶 体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。

程序思路

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

主函数代码

小贴士

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

测试可使用商店的串口软件即可

 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;
	  }
	
	}
}

工程免费分享 群号721421120

以上是关于基于stm32的串口/蓝牙控制LED灯的开关和亮度(超基础)的主要内容,如果未能解决你的问题,请参考以下文章

STM32按钮控制LED灯的开关

4-ESP8266+onenet+STM32定时器的PWM应用(onenet云平台远程控制LED灯的亮度)

STM32之USART1串口:蓝牙接收字符控制LED亮灭

Android蓝牙串口通信控制Arduino全彩呼吸灯

arduino电位器调整led灯颜色

串口通信小试牛刀——GPIO端口完成3只LED灯的周期闪烁