stm32利用语音识别与播报智能控制led灯

stm32语音识别与播报智能控制led灯

接在再附上主程序:

#include "stm32f10x.h"
#include "bsp_i2c.h"
#include "bsp_usart1.h"
#include  "led.h"
/*
语音识别模块			语音合成播报模块
IIC1				IIC2
VCC->单片机5V		VCC->单片机5V	
SCL->单片机PB6		SCL->单片机PB10
SDA->单片机PB7		SDA->单片机PB11
GND->单片机GND		GND->单片机GND
*/

int main(void)
{
	u8 result = 0xff;
	LED_Init();		  	//初始化与LED连接的硬件接口
	//I2C初始化
	I2C_Bus_Init();
	NVIC_Configuration();
	USARTx_Config();
	
#if 1
	I2C_ByteWrite(ASR_CLEAR_ADDR,0x40);//清除掉电保存区,录入前需要清除掉电保存区
	LD3320_delay(150000);//flash擦除时间较长,需要较长的延时
	I2C_ByteWrite(ASR_MODE_ADDR,0x01);//设置检测模式;
	AsrAddWords(0,"xiao ya"); 	
	AsrAddWords(4,"kai deng");   
    AsrAddWords(5,"guan deng");

#endif
	I2C_ByteWrite(ASR_REC_GAIN,0x45);  //识别的灵敏
	RGB_Set(255,255,255);
	LD3320_delay(10000);//flash擦除时间较长,需要较长的延时
	RGB_Set(0,0,0);
	
	SetVolume(10);		
	SetReader(Reader_XiaoYan);
	while(1)
	{	
		I2C_BufferRead(ASR_RESULT,&result,1);
		printf("result = %d\n",result);
		if(result==0)
		{
		speech_text("[x1]sound204",GB2312);
	while(GetChipStatus() != ChipStatus_Idle)
	{
	  delay(50);
	}
		}
		if(result==4)
		{
		GPIO_ResetBits(GPIOA,GPIO_Pin_1);		  //给PA1置0
		speech_text("灯已经打开",GB2312);
	while(GetChipStatus() != ChipStatus_Idle)
	{
	  delay(50);
	}
		}
		if(result==5)
		{
		GPIO_SetBits(GPIOA,GPIO_Pin_1);		  //给PA1置1
		speech_text("灯已经关闭",GB2312);
	while(GetChipStatus() != ChipStatus_Idle)
	{
	  delay(50);
	}
		}		
		LD3320_delay(10000);	
	}
				
}

/*********************************************END OF FILE**********************/

如果想要更加详细的资料,可以在文章末尾处查看。
下面附上相关程序以及资料:
stm32语音识别与播报智能控制led灯相关程序及资料
个人认为上面的资料是非常详细的!!!
代码要的下方留言邮箱我会第一时间发给你们的,有什么问题也可以下面评论!

版权声明:本文为CSDN博主「i土豆」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44069765/article/details/113835168

生成海报
点赞 0

i土豆

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

Arduino入门 01:有手就行

平平无奇的寒假随便玩一玩,纯纯什么都不会,还希望大家能多多指正😎一、Arduino简介 提问什么是电脑、如果自己组装一台电脑需要购买哪些设备?首先是一台电脑主机,然后是鼠

STM32的12位ADC过采样实现16位分辨率

1.什么是过采样过采样技术是一种以牺牲采样速度来提高ADC分辨率的技术。部分STM32单片机是支持硬件过采样的,如STM32G0系列。通过过采样,可以将12位的ADC提升到16位,非常实用。根据过采样技