Arduino學習筆記⑧ 紅外通訊

1.前言

    紅外通訊是一種利用紅外光編碼進行數據傳輸的無線通訊方式,在目前來講是使用很是普遍的。生活中常見電視遙控器,空調遙控器,DVD遙控器(如今估計是老古董了),均使用紅外線遙控。使用紅外線遙控,主要有一體化紅外接收頭和紅外遙控器。git

1.1 一體化紅外接收頭

    一體化接收頭內部集成了紅外接收電路。它能夠接收紅外信號並還原發射端的波形信號。一般使用的一體化接收頭都是38KHz的紅外信號。github

1.2 紅外遙控器

    實驗中採起如下遙控器函數

image

    每一個按鍵都有各自的編碼,按下按鍵後,就會發送對應編碼的紅外波。大多使用NEC編碼。oop

    要想使用紅外遙控功能,咱們使用第三方紅外遙控庫——IRremote(若是是8266請使用 IRremoteESP8266 庫)。測試

2.經常使用方法

下面介紹一下IRremote類庫
1)IRrecv類 用於接收紅外信號並對其解碼。在使用前須要實例化一個該類對象。ui

  • IRrecv(recvpin) 構造函數 recvpin爲鏈接到接收頭的引腳
  • enableIRIn()初始化紅外解碼
  • decode() 檢查是否接收到編碼
  • resume() 接收下一個編碼

3.實驗

實驗內容: 根據遙控器輸入的紅外信號,顯示對應的符號;編碼

實驗代碼code

/**
* @Desc  測試紅外通訊
* @author 單片機菜鳥
* @Date  2016/12/29
* 
*/
#include <IRremote.h>
 
#define MAX 22
 
int RECV_PIN = 7;      //定義紅外接收模塊輸出口接arduino數字引腳11
  
IRrecv irrecv(RECV_PIN);
decode_results results;
//Car mp3編碼
unsigned long rremote_code[MAX] = {
    0xFFA25D,0xFF629D,0xFFE21D,//CH- CH CH+
    0xFF22DD,0xFF02FD,0xFFC23D,//PREV NEXT PLAY
    0xFFE01F,0xFFA857,0xFF906F,//VOL- VOL+ EQ
    0xFF6897,0xFF9867,0xFFB04F,// 0 100+ 200+
    0xFF30CF,0xFF18E7,0xFF7A85,// 1  2  3
    0xFF10EF,0xFF38C7,0xFF5AA5,// 4  5  6
    0xFF42BD,0xFF4AB5,0xFF52AD, // 7  8  9
    0xFFFFFFFF//長按
};
 
//Car mp3對應的字符串
String rremote_string[MAX] = {
   "CH-","CH","CH+",
   "PREV","NEXT","PLAY/PAUSE",
   "VOL-","VOL+","EQ",
   "0","100+","200+",
   "1","2","3",
   "4","5","6",
   "7","8","9",
   "longPress"
};
  
void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); //初始化紅外遙控
}
  
void loop() {
  if (irrecv.decode(&results)) {
    //打印字符串
    String codeString = getRremoteString(results.value);
    if(codeString.length()!=0)
      Serial.println(codeString);
    irrecv.resume(); // 接收下一個值
  }
}
 
/**
* 解析紅外編碼並返回對應的字符串
*/
String getRremoteString(unsigned long code){
  String rremotestring = "";
  int i = 0;
  for(i = 0;i<MAX-1;i++){
    if(code == rremote_code){
      break;  
    }
  }
  //過濾掉長按
  if(i==MAX-1) return "";
  else return rremote_string;
}

實驗結果對象

image

4.總結

經過使用這個類庫 咱們能夠解析到具體的鍵碼,這樣咱們就能夠基於這個去作一些咱們想作的紅外遙控功能(各位能夠看看我寫的藍牙七彩燈帖子)。blog

相關文章
相關標籤/搜索