# 7. 红外遥控

BiBoard配置了红外传感器，连接在第23引脚。红外的使用和基于AVR的UNO完全一样。

首先下载2.6.1版本的IRremote库，需要手工选择2.6.1版本。因为之后的版本红外编码有变化，如果使用3.X版本，指令会无法被翻译。为了同我们之前的产品兼容，测试后决定使用2.6.1版本。

![](https://201656985-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MQ6a951Q6Jn1Zzt5Ajr%2F-MX3cdocpV97XkAb0q9k%2F-MX3dEbaFtWAxhy0O4mc%2Fimage.png?alt=media\&token=e8a9924c-322e-487d-b3fe-ed61a5c16f2b)

在使用NyBoard的时候，为了保证代码可以顺利编译，我们需要给IRremote库进行“瘦身”，即去掉我们用不到的编码/解码器，只保留NEC\_DECODER即NEC格式的38KHz信号解码器。

在Flash巨大的BiBoard上，我们无需进行“瘦身”。

![UNO使用了23%的Flash](https://201656985-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MQ6a951Q6Jn1Zzt5Ajr%2F-MX3cdocpV97XkAb0q9k%2F-MX3eeH11NmVROtpAZva%2Fimage.png?alt=media\&token=4cb5d248-19b4-45e9-a24b-47a6bd7d4fbe)

![BiBoard只使用的4%](https://201656985-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MQ6a951Q6Jn1Zzt5Ajr%2F-MX3cdocpV97XkAb0q9k%2F-MX3eOhuD7etiCi0wsCt%2Fimage.png?alt=media\&token=2df908bf-2f02-4b18-b16c-26127385305a)

最后附上例程，接受红外信号并串口打印，也可以使用官方的例程进行测试。

```
#include <Arduino.h>
#include <IRremote.h>

int RECV_PIN = 23;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup() {
  Serial.begin(115200);
  irrecv.enableIRIn();
  Serial.println("IR Receiver ready");
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    Serial.print(" - ");
    irrecv.resume(); // Receive the next value
  }
  delay(300);
}
```
