// 2018/10/31
// Faya-Nugget 範例程式 (Voice_Recog_1.ino)
// 單元: 模組介紹: faya語音辨識模組
// 網址: https://fayalab.blogspot.com/2018/11/voice-recog.html
// 目標: (1) 利用語音指令控制RGB LED燈
// 接線: Arduino ==> faya模組
//            D2 ==> IRQ (語音辨識模組)
//            D4 ==> NSS (語音辨識模組)
//            D9 ==> RST (語音辨識模組)
//           D11 ==> MOSI (語音辨識模組)
//           D12 ==> MISO (語音辨識模組)
//           D13 ==> SCK (語音辨識模組)
//           GND ==> WR (語音辨識模組)

#include <ld3320.h>    // 引入ld332語音辨識函式庫
VoiceRecognition fayaVoice;   //聲明語音識別對象
#define R_pin A3   // R ELD 接到A3
#define G_pin A2   // G ELD 接到A2
#define B_pin A1   // B ELD 接到A1
int command; //儲存指令

void setup() 
{
  pinMode(R_pin, OUTPUT);  // 設定RGB_Pin為輸出腳位
  pinMode(G_pin, OUTPUT);   
  pinMode(B_pin, OUTPUT);
  digitalWrite(R_pin, LOW);   // 先把燈全部關閉
  digitalWrite(G_pin, LOW);    
  digitalWrite(B_pin, LOW);  
  Serial.begin(9600);     // Arduino串列埠baudRate = 9600
  fayaVoice.init();                           // 初始化語音辨識
  fayaVoice.addCommand("kai deng",0);         // 添加指令 [開燈]
  fayaVoice.addCommand("liang hung deng",1);  // 添加指令 [亮紅燈]
  fayaVoice.addCommand("da kai hung se deng",1);    // 添加指令 [打開紅色燈]
  fayaVoice.addCommand("bian liu se ",2);    // 添加指令 [變綠色]
  fayaVoice.addCommand("lan deng",3);         // 添加指令 [藍燈]
  fayaVoice.addCommand("huang se de deng",4);    // 添加指令 [黃色的燈]
  fayaVoice.addCommand("guan deng",5);        // 添加指令 [關燈]
  fayaVoice.start();  //開始識別
}

void loop() {
check_b2();             //檢查資料接收是否穩定
command = fayaVoice.read();   //指令儲存至command變數
switch(command)               //執行指令
       {
        case 0:                             //指令0 =“開燈”
            Serial.println("TURN ON");
            digitalWrite(R_pin, HIGH);   
            digitalWrite(G_pin, HIGH);    
            digitalWrite(B_pin, HIGH);    
            break;
            
        case 1:                             //指令1 =“亮紅燈”/ "打開紅色燈"
            Serial.println("RED ON");
            digitalWrite(R_pin, HIGH);   
            digitalWrite(G_pin, LOW);    
            digitalWrite(B_pin, LOW);    
            break;

        case 2:                             //指令2 =“綠色燈"
            Serial.println("GREEN ON");
            digitalWrite(R_pin, LOW);   
            digitalWrite(G_pin, HIGH);    
            digitalWrite(B_pin, LOW);    
            break;
            
        case 3:                             //指令3 =“藍燈”
            Serial.println("BLUE ON");
            digitalWrite(R_pin, LOW);   
            digitalWrite(G_pin, LOW);    
            digitalWrite(B_pin, HIGH);    
            break;

        case 4:                             //指令4 =“黃色的燈”
            Serial.println("Yellow ON");
            digitalWrite(R_pin, HIGH);   
            digitalWrite(G_pin, HIGH);    
            digitalWrite(B_pin, LOW
            );    
            break; 
                       
        case 5:                             //指令5 =“關燈”
            Serial.println("TURN OFF");
            digitalWrite(R_pin, LOW);   
            digitalWrite(G_pin, LOW);    
            digitalWrite(B_pin, LOW);    
            break;
        }
   }