39-基于stm32单片机智能语音声音控制台灯源程序、原理图、元件清单实物制作

本文介绍了使用STM32单片机配合LD3320语音识别模块实现的智能语音控制台灯系统,包括LED亮度调节、OLED显示和不同语音指令响应。程序附带中文注释,适合新手学习。

功能介绍:采用stm32单片机作为主控CPU,采用LD3320语音识别模块来识别语音命令,通过单片机PWM调节LED的光照亮度,通过OLED显示当前的亮度值以及相关信息,可以通过语音命令控制LED开关、关闭、调亮、调暗等相关设置,文末有资料分享:

39-基于stm32单片机智能语音声音控制台灯(程序+原理图+元件清单全套资料)

 程序部分展示,有中文注释,新手容易看懂

int main(void)
{	

		delay_init();	    	 //延时函数初始化	  
		NVIC_Configuration(); 	 //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 	LED_Init();			     //LED端口初始化
		OLED_Init();			//初始化OLED  
		OLED_Clear(); 

		TIM1_PWM_Init(); //TIM1 PWM波输出初始化,并使能TIM1 PWM输出	  
	  //uart_init(9600);//初始化串口1 uart_init
    usart2_Init(9600);	//初始化串口2
	  EXTIX_Init();
	  int j;
	

    show_name();

	
	while(1) 
	{		
	  
		j=ld3320_uart_receive();//得到接受函数的字符串buff

			
		pwm_led_out_test(lighter);  
		switch(j)
		{

			case 1:
				//printf("1\r\n");
      show_name();
				//OLED_Clear(); 
			break;//口令
			case 2://亮一点
			//printf(" switch :2\r\n");
			My_USART2_SendData("ligther ");
		  show_instruct();//显示收到的指令是:
	    show_lighter();		//显示亮一点	
			if(lighter<5)//亮度还不满5
			{
			  lighter++;
				//显示亮度
			}	
     else{
			 ;
		 //已经是最大亮度了,lighter不能再增加,屏幕提示到了最大亮度	
		 }
		 show_pwm(lighter);
			break;
			
			case 3://变暗
			//printf(" switch :3\r\n");
			show_instruct();//显示收到的指令是:
			show_darken();  //显示暗一点		
			if(lighter>0)
			{
				lighter--;
				//show_lighter();屏幕提示亮度		
			}
			else{
				;

			}	
			show_pwm(lighter);			
			//屏幕提示到了最大亮度				
			break;//变暗
			
			case 4: //开灯,默认亮度3
				//printf(" switch :4 开灯\r\n");
			  lighter = 3;
			  //显示开灯
			show_pwm(lighter);
			break;
			
			case 5: 
			//printf(" switch :5 关灯\r\n");
			lighter = 0;
			//显示灯光熄灭
			break;//关灯
			case 6: //printf(" switch :6亮度30\r\n");
			//显示亮度20
			lighter = 1;
			show_pwm(lighter);
			break;
			case 7: //printf(" switch :7//亮度60\r\n");
			lighter = 3;
			show_pwm(lighter);
			//显示亮度60
			break;//亮度60
			case 8: //printf(" switch :8//亮度100\r\n");
			lighter = 5;
			//显示亮度100
			show_pwm(lighter); 
			break;//亮度100
			case 9: //printf(" switch :9//显示请重新发口令\r\n");
			//显示请重新发口令
			break;
			case 10: //printf(" switch :10\r\n");
			//显示请重新发口令	
			
			break;//请说出一级口令
			//case 11: //printf("11\r\n");break;//
			default:break;

下面是原理图源文件展示: 

百度云盘资料分享链接 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值