
-
#include "main.h"
-
#include "delay.h"
-
#include "usart.h"
-
#include "usart3.h"
-
#include "ld3320.h"
-
#include "asr.h"
-
#include "led.h"
-
#include "my169012p.h"
-
u8 trigger_flag=0; //0 表示没有识别触发口令 1 表示识别了触发口令
-
uint8_t Tx_Buffer[2] = {0x00,0xa1};
-
uint8_t j;
-
uint8_t i;
-
-
int main(void)
-
{
-
u8 nAsrRes=0; //记录识别码
-
u8 flag1=0;
-
u8 flag2=0;
-
-
-
delay_init(); //延时函数初始化
-
Usart1_init(9600); //串口1初始化为9600
-
Usart3_init(9600); //串口1初始化为9600
-
-
// MY169012P_Init(); //初始化MP3 模块MY1690 播放开机音乐
-
LD3320_Init(); //初始化LD3320
-
LED_Init(); //初始化LED
-
// send_3dat_cmd(0x11); //播放
-
// delay_ms(10000);
-
// while(BUSY);
-
// diver_Init(); //初始化电机驱动
-
-
printf("实验开始\r\n");
-
delay_ms(1);
-
printf("触发口令01:傻强\r\n");
-
delay_ms(1);
-
printf("一级口令02:在吗\r\n");
-
delay_ms(1);
-
printf("一级口令03:退下吧\r\n");
-
delay_ms(1);
-
-
printf("二级口令04:死哪去啦\r\n");
-
delay_ms(1);
-
printf("二级口令05:有贵宾当然先问贵宾啊\r\n");
-
delay_ms(1);
-
printf("二级口令06:叫小马哥\r\n");
-
delay_ms(1);
-
printf("二级口令07:这是我的管家傻强\r\n");
-
delay_ms(1);
-
printf("二级口令08:咖啡\r\n");
-
delay_ms(1);
-
printf("二级口令09:你在干嘛\r\n");
-
delay_ms(1);
-
printf("二级口令10:机器人还会冷啊\r\n");
-
delay_ms(1);
-
printf("二级口令11:唱首歌吧\r\n");
-
delay_ms(1);
-
printf("二级口令12:上一曲\r\n");
-
delay_ms(1);
-
printf("二级口令13:下一首\r\n");
-
delay_ms(1);
-
printf("二级口令14:跳个舞吧\r\n");
-
delay_ms(1);
-
printf("二级口令15:说个笑话\r\n");
-
delay_ms(1);
-
printf("二级口令16:安静\r\n");
-
delay_ms(1);
-
-
-
nAsrStatus = LD_ASR_NONE; // 初始状态:没有在作ASR
-
-
while(1)
-
{
-
Tx_Buffer[1]=0xa1; //每次进入语音识别后都修改Tx_Buffer[1]等待串口收发数据0xaa(本体语音播放或者动作完成)
-
switch(nAsrStatus)
-
{
-
case LD_ASR_RUNING:
-
break;
-
-
case LD_ASR_ERROR: printf("ASR_ERROR\r\n");
-
break;
-
-
case LD_ASR_NONE: nAsrStatus=LD_ASR_RUNING; //启动一次ASR识别流程:ASR初始化,ASR添加关键词语,启动ASR运算
-
if(RunASR()==0)
-
{
-
nAsrStatus = LD_ASR_ERROR;
-
}
-
-
break;
-
case LD_ASR_FOUNDOK: nAsrRes = LD_ReadReg(0xc5); //一次ASR识别成功结束,取ASR识别结果
-
switch(nAsrRes)
-
{
-
case CODE_SQ:
-
printf("触发口令01:傻强\r\n");
-
trigger_flag=1; //trigger_flag=1,表示识别了触发口令,接下来要识别普通口令
-
LED_D1=0;
-
USART_SendData( USART3, 0x01);
-
while(Tx_Buffer[1]!=0xaa); //语音指令发出去后等待完成标志0xaa
-
printf("发送口令01完毕^_^ \r\n");
-
break;
-
-
case CODE_ZM: //打开进入第一级命令 在吗?
-
if(trigger_flag)
-
{
-
printf("一级口令02:在吗\r\n");
-
LED_D2=0;
-
LED_D1=1;
-
flag1 =1;
-
USART_SendData( USART3, 0x02);
-
while(Tx_Buffer[1]!=0xaa);
-
printf("发送口令02完毕^_^ \r\n");
-
}
-
break;
-
-
/***********************************************进入第二级命令 *************************************************/
-
-
case CODE_SQNL: //进入第二级命令 死去哪里了 04
-
if(flag1==1)
-
{
-
flag2=1;
-
printf("二级口令04:死哪去啦\r\n");
-
USART_SendData( USART3, 0x04);
-
while(Tx_Buffer[1]!=0xaa);
-
// Specific_Player (0x41,0x00,0x04);
-
printf("发送口令04完毕^_^ \r\n");
-
}
-
break;
-
-
case CODE_WGB: //进入第二级命令 有贵宾当然先问贵宾啊 05
-
if(flag1==1)
-
{
-
flag2=1;
-
printf("二级口令05:有贵宾当然先问贵宾啊\r\n");
-
USART_SendData( USART3, 0x05);
-
while(Tx_Buffer[1]!=0xaa);
-
// Specific_Player (0x41,0x00,0x05);
-
printf("发送口令05完毕^_^ \r\n");
-
}
-
break;
-
case CODE_JXMG: //进入第二级命令 叫小马哥 06
-
if(flag1==1)
-
{
-
flag2=1;
-
printf("二级口令06:叫小马哥\r\n");
-
USART_SendData( USART3, 0x06);
-
while(Tx_Buffer[1]!=0xaa);
-
// Specific_Player (0x41,0x00,0x06);
-
printf("发送口令06完毕^_^ \r\n");
-
}
-
break;
-
case CODE_GJSQ: //进入第二级命令 这是我的管家傻强 07
-
if(flag1==1)
-
{
-
flag2=1;
-
printf("二级口令07:这是我的管家傻强\r\n");
-
USART_SendData( USART3, 0x07);
-
while(Tx_Buffer[1]!=0xaa);
-
// Specific_Player (0x41,0x00,0x05);
-
printf("发送口令07完毕^_^ \r\n");
-
}
-
break;
-


楼主
|
回复于 2018-06-12
沙发
-
case CODE_KF: //进入第二级命令 咖啡 08
-
if(flag1==1)
-
{
-
nAsrRes=0xfa;
-
flag2=1;
-
// printf("二级口令08:咖啡\r\n");
-
Specific_Player(0x41,0x00,0x08);
-
while(BUSY)
-
{
-
emoticon4(); // ^ ^
-
LedAllDelight();
-
}
-
send_3dat_cmd(0x1E); //停止
-
switch_flag=1;
-
USART_SendData( USART2, 0xaa);
-
}
-
break;
-
case CODE_GM: //进入第二级命令 你在干嘛 09
-
if(flag1==1)
-
{
-
nAsrRes=0xfa;
-
flag2=1;
-
// printf("二级口令09:你在干嘛\r\n");
-
Specific_Player(0x41,0x00,0x09);
-
while(BUSY)
-
{
-
emoticon4(); // ^ ^
-
LedAllDelight();
-
}
-
send_3dat_cmd(0x1E); //停止
-
switch_flag=1;
-
USART_SendData( USART2, 0xaa);
-
}
-
break;
-
case CODE_HL: //进入第二级命令 机器人还会冷啊 10
-
if(flag1==1)
-
{
-
nAsrRes=0xfa;
-
flag2=1;
-
// printf("二级口令10:机器人还会冷啊\r\n");
-
Specific_Player(0x41,0x00,0x0a);
-
while(BUSY)
-
{
-
emoticon4(); // ^ ^
-
LedAllDelight();
-
}
-
send_3dat_cmd(0x1E); //停止
-
switch_flag=1;
-
USART_SendData( USART2, 0xaa);
-
}
-
break;
-
case CODE_CSG: //进入第二级命令 唱首歌吧 11
-
if(flag1==1)
-
{
-
nAsrRes=0xfa;
-
flag2=1;
-
// printf("二级口令11:唱首歌吧\r\n");
-
Specific_Player(0x41,0x00,0x56); //指定曲目为86
-
while(BUSY)
-
{
-
emoticon4(); // ^ ^
-
LedAllDelight();
-
}
-
send_3dat_cmd(0x1E); //停止
-
switch_flag=1;
-
USART_SendData( USART2, 0xaa);
-
}
-
break;
-
case CODE_SYQ: //进入第二级命令 上一曲 12
-
if(flag1==1)
-
{
-
nAsrRes=0xfa;
-
flag2=1;
-
// printf("二级口令12:上一曲\r\n");
-
send_3dat_cmd(0x14); //上一首
-
delay_ms(50);
-
while(BUSY)
-
emoticon4(); // ^ ^
-
switch_flag=1;
-
USART_SendData( USART2, 0xaa);
-
}
-
break;
-
case CODE_XYS: //进入第二级命令 下一首 13
-
if(flag1==1)
-
{
-
nAsrRes=0xfa;
- flag2=1;
楼主
|
回复于 2018-06-12
2#
-
printf("二级口令13:下一首\r\n");
-
// send_3dat_cmd(0x13); //下一首
-
// delay_ms(50);
-
// while(BUSY);
-
USART_SendData( USART3, 0x0d);
-
while(Tx_Buffer[1]!=0xaa);
-
printf("发送口令13完毕^_^ \r\n");
-
}
-
break;
-
case CODE_TGW: //进入第二级命令 跳个舞吧 14
-
if(flag1==1)
-
{
-
flag2=1;
-
printf("二级口令14:跳个舞吧\r\n");
-
USART_SendData( USART3, 0x0e);
-
while(Tx_Buffer[1]!=0xaa);
-
// Specific_Player (0x41,0x00,0x63); //指定曲目为99
-
printf("发送口令14完毕^_^ \r\n");
-
}
-
break;
-
case CODE_SXH: //进入第二级命令 说个笑话 15
-
if(flag1==1)
-
{
-
flag2=1;
-
printf("二级口令15:说个笑话\r\n");
-
USART_SendData( USART3, 0x0f);
-
while(Tx_Buffer[1]!=0xaa);
-
// Specific_Player (0x41,0x00,0x0f); //指定曲目为15
-
printf("发送口令15完毕^_^ \r\n");
-
}
-
break;
-
case CODE_AJ: //进入第二级命令 安静 16
-
if(flag1==1)
-
{
-
flag2=1;
-
printf("二级口令16:安静\r\n");
-
USART_SendData( USART3, 0x10);
-
while(Tx_Buffer[1]!=0xaa);
-
// send_3dat_cmd(0x1E); //停止
-
printf("发送口令16完毕^_^ \r\n");
-
}
-
break;
编辑于 2018-06-12
楼主
|
回复于 2018-06-12
3#
-
/***********************************************退出第二级命令 *************************************************/
-
-
case CODE_TX: //打开进入第一级命令 退下吧 03
-
if(trigger_flag)
-
{
-
printf("一级口令03:退下吧\r\n");
-
// Specific_Player (0x41,0x00,0x03); //指定曲目为15
-
LED_D2=1;
-
trigger_flag=0;
-
flag1=0;
-
flag2=0;
-
LED_D1=1;
-
USART_SendData( USART3, 0x03);
-
while(Tx_Buffer[1]!=0xaa);
-
printf("发送口令03完毕^_^ \r\n");
-
}
-
break;
-
}
-
nAsrStatus = LD_ASR_NONE;
-
break;
-
-
case LD_ASR_FOUNDZERO:
-
printf("未知口令\r\n");
-
if(i<2)
-
i++;
-
else
-
i=0x00;
-
// USART_SendData( USART1, 0XAA);
-
trigger_flag=0;
-
LED_D1=1;
-
nAsrStatus = LD_ASR_NONE;
-
break;
-
-
default: nAsrStatus = LD_ASR_NONE;
-
break;
-
}
-
}
-
}
-
-
/*-------------------------------------------------*/
-
/*函数名:串口3中断服务函数 */
-
/*参 数:无 */
-
/*返回值:无 */
-
/*-------------------------------------------------*/
-
void USART3_IRQHandler(void)
-
{
-
uint8_t getdata;
-
uint8_t statu;
-
-
statu=USART_GetITStatus(USART3,USART_IT_RXNE);
-
if(statu== SET)
-
{
-
USART_ClearFlag(USART3,USART_IT_RXNE);
-
Tx_Buffer[1]=USART_ReceiveData(USART3);
-
}
- }
-
- xiaomiking
-
1147 发帖6357 回复18609 积分
- 私信他 +关注
-
- 0000000000000000
-
1888 发帖7917 回复34980 积分
- 私信他 +关注
回复于 2018-06-27
9#
块
导
航
举报
请选择举报类别
- 广告垃圾
- 违规内容
- 恶意灌水
- 重复发帖