//------------------------------------------------ //author:Victor Chen //web :www.vic8051.com //參考資料:Arduino實作入門與應用 ----台灣/松崗 //------------------------------------------------ //ar22 Arduino 控制您家電視實驗 #include //引用軟體串列程式庫 SoftwareSerial ur1(2,3); //指定產生ur1串列介面腳位 int led = 13; //設定LED腳位 int k1 = 4; //設定按鍵k1腳位 int k2 = 5; //設定按鍵k2腳位 int k3 = 6; //設定按鍵k3腳位 int k4 = 7; //設定按鍵k4腳位 int k5 = 9; //設定按鍵k5腳位 #define power 0 //定義'電源' 控制碼 #define mute 1 //定義'靜音' 控制碼 #define ret 2 //定義'返回' 控制碼 #define up 3 //定義'上一台' 控制碼 #define down 4 //定義'下一台' 控制碼 #define vup 5 //定義'大聲' 控制碼 #define vdown 6 //定義'小聲' 控制碼 //-------------------------------------- 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); pinMode(k3, INPUT); digitalWrite(k3, HIGH); pinMode(k4, INPUT); digitalWrite(k4, HIGH); pinMode(k5, INPUT); digitalWrite(k5, HIGH); } //----------------------------------- void led_bl() //LED 閃動 { int i; for(i=0; i<1; i++) { digitalWrite(led, HIGH); delay(150); digitalWrite(led, LOW); delay(150); } } //-------------------------------------- void op_dig(int d) //發射數字碼0~9 { ur1.print('T'); led_bl(); ur1.write('0'+d); led_bl(); Serial.write('0'+d); } //-------------------------------------- void op_com(char c) //發射指令控制碼 { ur1.print('T'); led_bl(); if(c==power){ur1.print('P'); led_bl(); } if(c==mute ){ur1.print('M'); led_bl(); } if(c==ret ){ur1.print('B'); led_bl(); } if(c==up ){ur1.print('U'); led_bl(); } if(c==down ){ur1.print('D'); led_bl(); } if(c==vup ){ur1.print('L'); led_bl(); } if(c==vdown){ur1.print('S'); led_bl(); } } //-------------------------------------- void loop() //主程式迴圈 { char c; led_bl(); Serial.print("ALIR TV test : \n"); while(1) { //掃描是否有按鍵,若有控制電視動作 if( digitalRead(k1)==0 ) op_com(power); if( digitalRead(k2)==0 ) op_com(mute); if( digitalRead(k3)==0 ) {op_dig(3); op_dig(6); } if( digitalRead(k4)==0 ) {op_dig(5); op_dig(8); } if( digitalRead(k5)==0 ) {op_dig(2); op_dig(0); } } }