需要的准備的硬件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,然后根據自己喜歡的話語來當作命令,通過串口將命令發送給單片機,單片機接線也在圖片上體現了,如果大家想控制家里的電燈的話還得需要繼電器進行電壓和電流轉換。