2011年3月30日 星期三

1.3 增加紅外線訊號指示燈

實驗目的

練習用 IRRemote 函式庫接收紅外線訊號。在這個實驗裏,你將增加一顆 LED 當作紅外線訊號指示燈,並且讓指示燈在收到紅外線訊號的時候自動閃爍。

前提

在做這個實驗前,我假設:

  1. 你已經看過「IRRemote 紅外線遙控教學」一文,而且
  2. 也已經把 IRRemote 函式庫安裝起來了
材料
接線
  • 把 LED 接到 Arduino 板子上,LED 長腳(陽極)接到 pin13,短腳(陰極)接到 GND
  • 照下表把紅外線接收器跟 Arduino 連接起來:
紅外線接收器接腳 Arduino 接腳
GND(-) 接到 GND
Vcc(+ 或 V+) 接到 +5V 電源
Vout(或 OUT) 接到 pin 2。你可以接到其它 Digital pin,但程式要配合修改

image
▲ 有些紅外線接收器 GND 和 Vcc 是相反的,接線時請查閱你的 datasheet

接線圖中的 LED 沒有串接電阻,這是因為 Arduino 的輸出電流很小不會燒壞 LED,所以才敢這麼做,少接一顆電阻是為了簡化。一般來說,LED 串接一顆電阻 (220 歐姆)是個好主意。

程式

底下的程式(Example1.3.pde)示範如何增加紅外線指示燈,讓接在 pin 13 的指示燈在收到紅外線訊號的時候閃爍幾下:

程式碼本身就已經解釋得很清楚了,相信應該不需要多餘的解釋。

使用 Arduino 內建的 LED 當紅外線指示燈

其實 Arduino 板子 pin 13 上有內建一顆 LED,你可以直接用它當指示燈,不用另外接 LED:

image
▲ Arduino 板子 pin 13 上的內建 LED (標籤為 L)

如果你用 Arduino 內建的 LED 當作指示燈或是把 LED 指示燈接在 pin 13 上,IRrecv 也有提供一個 blink13() 的函式,你只要呼叫 blink13(true) 並傳入 true 參數,接著當收到紅外線訊號時,指示燈就會自動閃爍幾下。底下的程式(Example1.3v2.pde)示範 blink13() 函式的用法:

示範影片


▲ 用隨手可得的電視遙控器測試
動動腦

閱讀「Arduino 筆記 – Lab3 控制 LED 燈光亮度」和「Arduino 筆記 – Lab4 使用可變電阻調光」這兩篇,然後利用紅外線和 PWM 來調整燈光的亮度。控制方法可自行創造,例如: 可以把燈光亮度簡單分成 0% –> 25% –> 100% 三階,當收到第一個紅外線訊號時,便從 0% 調整為 25%,下一次變成開 100%,第三次就切到 0% 把燈關掉,照著這個流程輪迴調整燈光亮度。

0 意見: