針對IRremote這個主流的紅外線涵式庫從版本2.X 到現在的3.5.3語法及使用方式已經有了巨大的演變,外加國內外也沒麼人探討3.X版的內容,在此針對新版的使用方式做一個範例

github: https://github.com/Arduino-IRremote/Arduino-IRremote

備註:關於接腳及一些涵式的細節或是紅外線原理這邊不花時間說明

該涵式庫支援以下ESP8266,ESP32,STM32,AVR的腳位來使用,請先參照GITHUB使用

 

範例說明:

範例會先用一個遙控器發訊號給接收端,接收端顯示他的資料結構

將收到的資料記錄下來,再透過發射端發射一樣的訊號,並透過接收端讀取確認資料無誤

所需材料:

Arduino *2

紅外線接收器*1

image

紅外線發射器*1

image

 

接收端接線 :

接收端      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
  }
  
}

 

遙控器對接收端發射後會看到如下圖

image

我們由此得到遙控器的通訊協議,地址及指令,先將這些記錄下來,待會發送及驗證會用到

 

發射端接線 :

接收端      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);
}

燒好以後將發射端對接收端發射會看到跟遙控器一樣的資料在接收端出現

image

 

 

 

arrow
arrow
    創作者介紹
    創作者 凶王 的頭像
    凶王

    凶王的部落

    凶王 發表在 痞客邦 留言(0) 人氣()