針對IRremote這個主流的紅外線涵式庫從版本2.X 到現在的3.5.3語法及使用方式已經有了巨大的演變,外加國內外也沒麼人探討3.X版的內容,在此針對新版的使用方式做一個範例
github: https://github.com/Arduino-IRremote/Arduino-IRremote
備註:關於接腳及一些涵式的細節或是紅外線原理這邊不花時間說明
該涵式庫支援以下ESP8266,ESP32,STM32,AVR的腳位來使用,請先參照GITHUB使用
範例說明:
範例會先用一個遙控器發訊號給接收端,接收端顯示他的資料結構
將收到的資料記錄下來,再透過發射端發射一樣的訊號,並透過接收端讀取確認資料無誤
所需材料:
Arduino *2
紅外線接收器*1
紅外線發射器*1
接收端接線 :
接收端 UNO
DAT -->PIN3
VCC -->5V
GND -->GND
接收端程式碼 :
#include <IRremote.hpp>
void setup()
{
Serial.begin(115200);
IrReceiver.begin(3, ENABLE_LED_FEEDBACK); // PIN3收IR
}
void loop() {
if (IrReceiver.decode()) {
Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);
IrReceiver.printIRResultShort(&Serial); // optional use new print version
IrReceiver.resume(); // Enable receiving of the next value
}
}
遙控器對接收端發射後會看到如下圖
我們由此得到遙控器的通訊協議,地址及指令,先將這些記錄下來,待會發送及驗證會用到
發射端接線 :
接收端 UNO
S(發射) -->PIN3
VCC -->5V
GND -->GND
發射端程式碼 :
#include <IRremote.hpp>
void setup()
{
Serial.begin(115200);
IrSender.begin(3, ENABLE_LED_FEEDBACK);//PIN3發射紅外線
}
void loop() {
IrSender.sendNEC(0xDAE1, 0x1, true, 0); //將剛剛記錄下來的資訊代入,ture跟0請先不要改
delay(1000);
}
燒好以後將發射端對接收端發射會看到跟遙控器一樣的資料在接收端出現
留言列表