[Scratch for Arduino] 北科大 Android 系統設計課程 – App Inventor 語音控制 Arduino 機器人

本週北科大 Android 系統設計課程來到了使用 App Inventor 完成一個語音辨識程式,並能藍牙控制 Arduino 機器人語音。使用 SpeechRecognizer元件搭配 BluetoothClient 元件即可完成。如下圖所示,當語音辨識的結果為"go",則透過luetoothClient 元件送出字元 f 。

Arduino 端程式自然是使用無窮迴圈來判斷接收到資料,如果等於某個字元,就執行對應指令。

例如:

if(Serial.available())   
{ val = Serial.read();
switch(val){
 case 'f': //前進
digitalWrite( Motor_M1, HIGH);
digitalWrite( Motor_M2, HIGH);
 analogWrite( Motor_E1, motorspeed);
analogWrite( Motor_E2, motorspeed);
break;
                    case 'l':   //左轉                 
digitalWrite( Motor_M1, HIGH);
digitalWrite( Motor_M2, HIGH);
analogWrite( Motor_E1, 0);
analogWrite( Motor_E2, motorspeed);
break;

//...以下以此類推

換言之,Arduino 機器人不在意手機端的指令是如何得到的,按鈕也好、觸碰也好,或是如本文中的語音辨識,總之就是一個口令一個動作。這樣大家是不是更清楚了呢?有興趣的朋友請由 App Inventor 中文學習網的檔案庫來下載 App Inventor 與 Arduino 端程式。


改為按鈕控制也是完全一樣的概念,差別在於按下按鈕發送對應的字元。完全不用修改 Arduino 端程式!

來看看同學們上課的照片啊,個個情緒高昂鬥志高呢!

課程中也介紹如何使用 Scratch for Arduino 進行快速的 Arduino 專案開發。歡迎延伸閱讀苗栗蟠桃國小范運平老師的 Youtube 頻道


補上范運平老師的 BB車藍牙控制影片

One thought on “[Scratch for Arduino] 北科大 Android 系統設計課程 – App Inventor 語音控制 Arduino 機器人

  1. 小宇 says:

    請問 analogWrite( Motor_E1, motorspeed);這段是甚麼意思??
    [版主回覆05/20/2013 00:11:23]您好,analogWrite(pin, speed) 是指對 Arduino 上編號為 pin 的數位腳,透過 PWM 去模擬類比輸出的效果,參數為speed, 範圍0~255。

    本範例中 Motor_E1 事實上是以 Motor_E1 來取代單純的數字來提高程式的可讀性。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *