以下為Arduino Uno板的InfraredType實驗
需要材料:
Wire: n個
InfraredReceiver: 一個
InfraredRemoteControl: 一個
Arduino Uno: 一個
電路圖(Circuit diagram)
注意: 正負極接相反,接收器會燒壞
程式碼(Code)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #include <IRremote.h> // 引用 IRRemote 函式庫 const int irReceiverPin = 2 ; / / 紅外線接收器 OUTPUT 訊號接在 pin 2 IRrecv irrecv(irReceiverPin); / / 定義 IRrecv 物件來接收紅外線訊號 decode_results results; / / 解碼結果將放在 decode_results 結構的 result 變數裏 void setup() { Serial.begin( 9600 ); / / 開啟 Serial port, 通訊速率為 9600 bps irrecv.enableIRIn(); / / 啟動紅外線解碼 } / / 顯示紅外線協定種類 void showIRProtocol(decode_results * results) { Serial. print ( "Protocol: " ); / / 判斷紅外線協定種類 switch(results - >decode_type) { case NEC: Serial. print ( "NEC" ); break ; case SONY: Serial. print ( "SONY" ); break ; case RC5: Serial. print ( "RC5" ); break ; case RC6: Serial. print ( "RC6" ); break ; default: Serial. print ( "Unknown encoding" ); } / / 把紅外線編碼印到 Serial port Serial. print ( ", irCode: " ); Serial. print (results - >value, HEX ); / / 紅外線編碼 Serial. print ( ", bits: " ); Serial.println(results - >bits); / / 紅外線編碼位元數 } void loop() { if (irrecv.decode(&results)) { / / 解碼成功,收到一組紅外線訊號 showIRProtocol(&results); / / 顯示紅外線協定種類 irrecv.resume(); / / 繼續收下一組紅外線訊號 } } |