本篇是接續前一篇:「Arduino紅外線遙控範例,接收篇」,該範例處理了接收來自紅外線遙控器的訊號;接下來就要來試試,如何透過一顆紅外線發射LED,取代現成的遙控器,傳送訊號到前一篇的接收端。

需要回顧前一篇的朋友,請前往:「Arduino紅外線遙控範例,接收篇」

依然還是使用「IRremote by shirriff」這個函式庫,打開它的「IRsendDemo」範例。

該範例檔頭的地方說明了:「An IR LED must be connected to Arduino PWM pin 3」,這是指像是Uno或是Mega這類常見的板子,要把紅外線LED的VCC端接到pin 3,但像傑森這次用的是Leonardo,就要接到pin 13囉!官方有一個表讓大家參考:

由於一般5mm 940nm或950nm的IR LED來說,工作電壓在1.5V左右,但傑森實測有的只有1.1V不到,所以一定要加電阻才可以哦!IR LED最大電流大多是20ma,簡單計算一下,大家用手邊常見的220歐姆電阻應該就可以了。

對了,IR LED和一般LED一樣,比較長的那一支腳就是VCC,另一支就是GND了。

線接好後,就能上傳程式到Arduino囉!這時它會不斷送出一個16進位的0xa90訊息,可以在接收端的監控視窗中看到。

傳送很簡單,就是透過這行程式完成的:

irsend.sendSony(0xa90, 12);

sendSony是指傳送Sony格式的訊號,以我們上一個例子來說,並沒有限制訊號類型,所以用這個函式就可以囉!至於要傳什麼訊息內容,就由你自行來修改了!這裡我們就改成上個範例希望收到的「0xFF38C7」。

irsend.sendSony(0xFF38C7, 24);

請注意,因為0xFF38C7共需要24位元,所以第二個參數要改成24哦!如此一來,接收端就能收到新的訊息了!

附上完整程式碼,用紅外線LED傳送訊號真的很簡單的!