需要的准备的硬件arduino+PC+麦克风实现语音命令控制LED灯的亮灭。
首先需要将写好的arduino程序烧录到arduino uno主板中,下面是代码如下:
int val;//定义变量val int ledpin=10;//定义数字接口13 void setup() { Serial.begin(9600);//设置波特率为9600,这里要跟软件设置相一致。当接入特定设备(如:蓝牙)时,我们也要跟其他设备的波特率达到一致。 pinMode(ledpin,OUTPUT);//设置数字10 口为输出接口,Arduino 上我们用到的I/O 口都要进行类似这样的定义。 } void loop() { val=Serial.read();//读取PC 机发送给Arduino 的指令或字符,并将该指令或字符赋给val if(val=='O')//判断接收到的指令或字符是否是“R”。 {//如果接收到的是“R”字符 digitalWrite(ledpin,HIGH);//点亮数字10 口LED。 delay(500); Serial.println("Open Led");//显示“Open Led!”字符串 } if(val=='C') { digitalWrite(ledpin,LOW);//熄灭数字10 口LED delay(500); Serial.println("Close Led");//显示“Open Led!”字符串 } if(val=='S') { digitalWrite(ledpin,HIGH);//点亮数字10 口LED。 delay(1000); digitalWrite(ledpin,LOW);//熄灭数字10 口LED delay(1000); Serial.println("S Led");//显示“S Led!”字符串 } }
上面单片机接受的主要是字符O代表open打开的意思,C代表Close关闭,S代表LED闪烁。把程序烧录到主板后,下面我们就可以通过串口通讯就可以使计算机与单片机进行通讯了。
串口通讯代码如下:
SerialPort _serialPort; void Init() { _serialPort = new SerialPort(); _serialPort.PortName = "COM3"; _serialPort.BaudRate = 9600; _serialPort.Open(); }
语音识别模块网上很多大家可以搜索一下这里我用的就是win7自带的语音识别主要用到的
private SpeechLib.ISpeechRecoGrammar isrg;
private SpeechLib.SpSharedRecoContextClass ssrContex = null;
整体思路就是:将声音识别出text,然后根据自己喜欢的话语来当作命令,通过串口将命令发送给单片机,单片机接线也在图片上体现了,如果大家想控制家里的电灯的话还得需要继电器进行电压和电流转换。