功能介绍:采用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;
下面是原理图源文件展示:



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

被折叠的 条评论
为什么被折叠?



