ESP8266 Arduino红外遥控

需要安装库IRremoteESP8266。

接收

下面的代码实现解码

#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRrecv.h>
#include <IRutils.h>

#define RECV_PIN 4
#define LED 14

IRrecv irrecv(RECV_PIN);
decode_results results;

void setup() {
  Serial.begin(115200);
  Serial.println();
  pinMode(LED, OUTPUT);
  digitalWrite(LED, 0);
  irrecv.enableIRIn();
}

void loop() {
  ir_Handler(ir_value());
}

long ir_value() {
  long data = 0;
  if (irrecv.decode(&results)) {
    serialPrintUint64(results.value, HEX);
    Serial.println();
    data=results.value;
    irrecv.resume();
  }
  return data;
}

void ir_Handler(long data) {
  if (data!=0) {
  Serial.println(data);
  digitalWrite(LED, 1);
  delay(500);
  digitalWrite(LED, 0);
  }
}

解码后可以根据遥控器按键值,做实际值的动作。

发送

也可以做一个遥控器

#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRsend.h>

#define SEND_PIN 4
#define KEY 5
#define LED 14

IRsend irsend(SEND_PIN);

void setup() {
  pinMode(KEY, INPUT_PULLUP);
  pinMode(LED, OUTPUT);
  digitalWrite(LED, 0);
  irsend.begin();
}

void loop() {
  if (digitalRead(KEY) == 0) {
    digitalWrite(LED, 1);
    irsend.sendNEC(16738455);
    delay(500);
    digitalWrite(LED, 0);
  }
}