在前一篇中,我們提到,在使用 IRRemote Library 時,紅外線發射功能限定使用 pin 3,所以你只能把紅外線發射器接到 pin 3,不能接到其它腳位,像這樣:
但是萬一你 pin3 有其它用途,真的不能挪來接紅外線發射器,那要怎麼辦才好呢?還好,其實 IRRemote Library 有提供一個選項可以讓你選擇其它腳位,方法是修改 IRRemote Library 的 IRremoteInt.h 這一段:
這段程式碼主要是設定 Timer,Timer 的設定會決定紅外線發射器所用的腳位。
以 UNO, Duemilanove, Diecimila 等板子為例,預設是 Timer2,發射器要接 pin 3,假如你不想用 pin 3 當作紅外線發射的腳位,你有一個選擇,可以換成 Timer1,這樣就可以改用 pin 9 來接紅外線發射器:
// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, etc
#else
#define IR_USE_TIMER1 // tx = pin 9
// #define IR_USE_TIMER2 // tx = pin 3
#endif
修改 IRremoteInt.h 之後,接線也要同步修改:
- 把紅外線發射器 (IR LED) 接到 pin 9,長腳 (陽極) 串接一顆 100 ohm 電阻接到 pin 9,短腳 (陰極) 接到 GND
- 按鈕的一支腳接到 +5V,另一支腳接到 pin 4 同時接一個 10K 電阻連到 GND
程式碼的部份不需要修改,不過必須重新編譯,並且上傳到 Arduino 板子上就可以了:
8 意見:
太有用太有用拉!!!這麼重要的pin3中斷腳位被占據真的很ooxx~~~~~XDDD
不過換pin9我就少一個pwm了XDD
沒辦法,這紅外線靠的就是 pwm,總是要給它一個 pwm 腳位~~ :)
試用過之後,可以用button發射那一串紅外線訊號,而且我還用另一個arduino接收看看訊號正不正確,我也把冷氣的開關按鍵的訊號記錄下來了!
然後要用button發射控制冷氣卻都無法!我的冷氣的廠牌是hitach可是我用arduino接收訊號,發現他的協定都是Unknow!這該如何解決呢!跪求解救
冷氣機的紅外線訊號比較複雜,大部份都是廠商自己定義的 Protocol,可能沒辦法 decode。
IRRemote 有支援 Raw mode,應該還是可以把整個紅外線波形錄起來,再用 raw mode 的方式送出。不過這部份我沒有研究,也許你可以試一試。
你好 請問一下若我有兩個紅外線訊號要發射那我該怎麼設定?例如接在Pin3 Pin9這兩個位置我該怎麼設定?硬體接線部分有什麼需要修改的呢?
Pin 3 & 9 只能選一個,不能同時使用喔
你說有兩個紅外線要發射,是要同時發射訊號嗎?還是只要照順序發射就行?
如果是後者,用一顆紅外線發射器照順序發射訊號就可以了
同時發射的話可能會有干擾問題,會影響接收端的判斷
您好, 請問有沒有可能同時讓 Uno 板子支援藍芽模組與紅外線發射器?!
1. 藍芽模組的傳送與接收
http://coopermaa2nd.blogspot.tw/2012/06/amarino-android-arduino.html
Arduino 的 RXD (pin 0) 要接藍芽模組的 TXD,
Arduino 的 TXD (pin 1) 要接藍芽模組的 RXD。
2.
http://coopermaa2nd.blogspot.tw/2011/03/21.html
IRRemote 函式庫限定使用 pin 3,所以你只能把紅外線發射器接到 pin 3,不能接到其它腳位。
假設二種硬體 baud rate 都是設成 9600
有沒有可能同時讓 Uno 板子支援藍芽模組與紅外線發射器?!
例如更改 IRremoteInt.h (for 紅外線發射器) 或 for 藍芽模組 的.h 檔。
謝謝您!
我沒試過,不過藍芽模組與紅外線發射器用的腳位不一樣,應該不會有衝突
張貼留言