2015年5月25日 星期一

課程32-紅外線遙控實驗

目的:

使用Arduino 讀取紅外線遙控輸入、輸入。

電子元件:

麵包板 x 1
Arduino 主板 x 1
蜂鳴器 x1

接線圖:


電路圖:


下載:

Arduino-IRremote-master.zip 解壓縮後得到目錄IRremote,放到Arduino的sketchbook目錄下的libraries目錄裡。


程式碼:


  1. #include <IRremote.h>
  2. const int buttonPin = 4;
  3. int buttonState = 0;  
  4. int RECV_PIN = 11;
  5. IRrecv irrecv(RECV_PIN);
  6. IRsend irsend;
  7. decode_results results;
  8. void setup(){
  9.  pinMode(RECV_PIN, INPUT);   
  10.  pinMode(buttonPin, INPUT);  
  11.  Serial.begin(9600);
  12.  irrecv.enableIRIn();  
  13. }
  14. void loop() {
  15.  if (irrecv.decode(&results)) {
  16.      Serial.println(results.value);
  17.      if(results.value == 16753245){
  18.        Serial.println("ON");
  19.      }
  20.      irrecv.resume();
  21.  }
  22.  buttonState = digitalRead(buttonPin);
  23.  if (buttonState == HIGH) {
  24.    Serial.print("send");
  25.    Serial.print(buttonState);
  26.    irsend.sendNEC(0x7D7D0EF1, 32);
  27.  }
  28. }

程式說明:

第一行 匯入IRremote.h
第二行 宣告整數變數buttonPin 的腳位為Pin4
第三行 宣告整數變數buttonState 為0
第四行 宣告整數變數RECV_PIN 的腳位為11
第五行 宣告一個IRrecv 物件為irrecv,並且傳入數RECV_PIN。
第六行 宣告一個IRsend 物件為 irsend
第七行 宣告一個decode_results 物件為results。
第八行~第十三行 初始設定。
第九行 設定RECV_PIN為輸入腳位。
第十行 設定buttonPin為輸入腳位。
第十一行 打開Serial 通訊,並設定頻率為9600。
第十二行 irrecv.enableIRIn() 開啟紅外線接收。
第十四行~第二十八行 為主程式。
第十五行~第二十一行 使用IF判斷式irrecv.decode紅外線解碼,查看是否有資料進來。
第十六行 在Serial 上印出results.value紅外線輸入的質。
第十七行~第十九行 使用IF判斷式如果數值為16753245,就執行下面程式。
第十八行 在Serial 上印出ON。
第二十行 呼叫irrecv.resume()。
第二十二行 讀取邏輯輸入buttonPin的質,並打直儲存在buttonState。
第二十三行~第二十七行 使用IF判斷式 buttonState是否為HIGH,如果是執行下面程式。
第二十四行 在Serial 上印出send。
第二十五行 在Serial 上印出buttonState。
第二十六行  irsend.sendNEC紅外線發射 0x7D7D0EF1 編碼。



實驗影片:


參考資料:

IRRemote 紅外線遙控教學

沒有留言:

張貼留言

Arduino、Raspberry Pi、System Integration,如有問題或建議,可以互相討論喔~