//------------------------------------------------ //author:Victor Chen //web :www.vic8051.com //參考資料:Arduino實作入門與應用 ----台灣/松崗 //------------------------------------------------ //Arduino控制中文聲控模組 #include //引用軟體串列程式庫 SoftwareSerial ur1(2,3); //指定產生ur1串列介面腳位 int led = 13; //設定LED腳位 int k1 = 7; //設定按鍵k1腳位 int k2 = 9; //設定按鍵k2腳位 int ans; //設定辨認結果答案 //-------------------------------------- void setup()//初始化設定 { Serial.begin(9600); ur1.begin(9600); pinMode(led, OUTPUT); pinMode(led, LOW); pinMode(k1, INPUT); digitalWrite(k1, HIGH); pinMode(k2, INPUT); digitalWrite(k2, HIGH); } //----------------------------------- void led_bl()//LED 閃動 { int i; for(i=0; i<1; i++) { digitalWrite(led, HIGH); delay(150); digitalWrite(led, LOW); delay(150); } } //-------------------------------- void listen()//語音聆聽 { ur1.print('l'); } //-------------------------------- char rx_char()//接收辨認結果 { char c; while(1) if (ur1.available() > 0) { c=ur1.read(); Serial.print('>'); Serial.print(c); return c; } } //-------------------------------------- void vc() //語音辨認 { byte c,c1; ur1.print('r'); delay(500); c=rx_char(); if(c!='/') { led_bl(); return; } c= rx_char()-0x30; c1=rx_char()-0x30; ans=c*10+c1; Serial.print("ans="); Serial.println(ans); vc_act(); } //--------------------------------------- void vc_act()//由辨認結果執行聲控應用 { if(ans==0) { led_bl(); led_bl(); led_bl(); } } //---------------------------------------- void loop()//主程式迴圈 { char c; led_bl(); Serial.print("VC uart test : \n"); Serial.print("1:listen 2:vc \n"); listen();//聽取內容 while(1) //迴圈 { if (Serial.available() > 0) //有串列介面指令進入 { c=Serial.read();//讀取串列介面指令 if(c=='1') { Serial.print("listen\n"); listen(); led_bl();} //聽取內容 if(c=='2') { Serial.print("vc\n"); vc(); led_bl(); } //啟動聲控 } //掃描是否有按鍵 if( digitalRead(k1)==0 ) { led_bl(); listen();}// k1 按鍵聽取內容 if( digitalRead(k2)==0 ) { led_bl(); vc(); } //k2 按鍵啟動聲控 } }