红外遥控 红绿蓝LED

2015-7-23 二赛君 学习笔记

    本文其实就1个知识点,即红外遥控

   1.jpg2.jpg

每个按键都是一段编码,只要传输至上位机的编码我们能够识别,就可以控制其他东西。

经二赛君测试按键的编码1-9分别为:

1 0x00FF6897
2 0x00FF9867
3 0x00FFB04F
4 0x00FF30CF
5 0x00FF18E7
6 0x00FF7A85
7 0x00FF10EF
8 0x00FF38C7
9 0x00FF5AA5
0 0x00FF42BD

按键生产厂家不同,输出的编码可能不同,需自己测试。

下面附上接收按键控制红绿蓝灯的代码;

#include <IRremote.h>  // 使用IRRemote函数库
const int irReceiverPin = 2;  // 红外接收器的 OUTPUT 引脚接在 PIN2 接口 定义irReceiverPin变量为PIN2接口
 
IRrecv irrecv(irReceiverPin); // 设置irReceiverPin定义的端口为红外信号接收端口
decode_results results;    // 定义results变量为红外结果存放位置
//long a1=0x00FF6897;
//long a4=0x00FF30CF;
//long a2=0x00FF9867;
//long a5=0x00FF18E7;
//long a3=0x00FFB04F;
//long a6=0x00FF7A85;

void setup()
{
  Serial.begin(9600);   // 开启串口,波特率为9600
  irrecv.enableIRIn();   // 启动红外解码
  pinMode(5,OUTPUT);
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
}
 
void loop() 
{
  if (irrecv.decode(&results)) {   // 解码成功,把数据放入results变量中
    // 把数据输入到串口
    Serial.print("irCode: ");            
    Serial.print(results.value, HEX); // 显示红外编码
    Serial.print(",  bits: ");           
    Serial.println(results.bits); // 显示红外编码位数
    switch(results.value)
    {
      case 0x00FF6897:
      digitalWrite(5,HIGH);
      break;
      case 0x00FF30CF:
      digitalWrite(5,LOW);
      break;
      case 0x00FF9867:
      digitalWrite(4,HIGH);
      break;
      case 0x00FF18E7:
      digitalWrite(4,LOW);
      break;
      case 0x00FFB04F:
      digitalWrite(3,HIGH);
      break;
      case 0x00FF7A85:
      digitalWrite(3,LOW);
      break;
      default:
      break;
    }
    
     irrecv.resume();    // 继续等待接收下一组信号
  }  
  delay(600); //延时600毫秒,做一个简单的消抖
}

需要用到的红外控制库:Arduino_IRremote_master.zip

标签: Arduino 按键控制 红外遥控

发表评论:

Copyright 2011-2017 | Powered by emlog | Redesigned by Kaspar.s
京ICP备13003113号 sitemap