【Arduino】紅外線感測器實習

紅外線是目前許多電器常用的遙控器標準通訊方式,因此是非常適用於嵌入式系統中使用的通訊方法,事實上也幾乎是標準的通訊模組,有非常多現成的程式以及電路可以利用,而且其零件也非當便宜。下圖是我們這次要實習範例的主角:

這個紅外線接收器有三支腳,其中最右邊這支是5V,中間是GND,左邊的那支接腳則是輸出的腳位。連接之後的樣子如下所示:

如上圖所示,其實就是給它一個電源,然後把信號線連接到數位接腳中的其中一個就可以了。在圖片中我們是把它連接到第2腳,但是在下面的範例中有些則是連線到第11支腳,同學們在執行程式的時候要特別地留意。連接完成之後,接下來是運用程式庫來編寫程式。在這裡我們不打算使用預設的驅動程式,所以請先到程式集的目錄下,把RobotIRemote這個資料夾移除(建議先移動到別的地方),位置如下所示:

然後請到【這裡】下載另外一支驅動程式,下載ZIP壓縮檔之後,如之前所有的範例一樣,先做解壓縮的動作:

接著,關閉Arduino IDE之後再重新開啟一次,就可以在Arduino IDE中看到範例程式,如下所示:

開啟之範例程式如下所示:

[code]
/*
* IRremote: IRrecvDemo – demonstrates receiving IR codes with IRrecv
* An IR detector/demodulator must be connected to the input RECV_PIN.
* Version 0.1 July, 2009
* Copyright 2009 Ken Shirriff
* http://arcfn.com
*/

#include <IRremote.h>

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
Serial.begin(9600);
// In case the interrupt driver crashes on setup, give a clue
// to the user what’s going on.
Serial.println("Enabling IRin");
irrecv.enableIRIn(); // Start the receiver
Serial.println("Enabled IRin");
}

void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
delay(100);
}
[/code]

請留意,這個範例程式我們是使用第11支腳做為取得紅外線訊號的輸出端。把此程式上傳燒錄到Arduino之後,請開啟監控視窗,然後隨便找一個遙控器(筆者使用的是吸頂式電扇用的)如下:

對著那個接收器按不同的按鈕,就會在監控視窗中看到如下所示的字串了:

遙控器的每一個按鈕都對應了不同字串,也就是說,透過此紅外線的字串識別,就可以做到遙控的功能囉。

發佈留言

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