红外控制LED灯的亮灭———Arduino

Arduino的中文社区:https://www.arduino.cn/
\黑脸,今天烧坏一个二极管。
原因:正负极没反,没接电阻
把自己头打烂了~


1. 所需硬件
开发板,led灯(多个),遥控器,红外接受传感器。

2. 接线:略

3. 代码

  1. 查看某个按键的编码
/*
 红外控制LED灯的亮灭
 初始化————接收————显示
 2019/3/12
*/

#include<IRremote.h>
int RECV_PIN=11;
IRrecv irrecv(RECV_PIN);//IRrecv类的构造函数。可用于指定红外一体化接受头的连接引脚
decode_results results;//一个decode_results类的对象,

void setup() {
  Serial.begin(9600);//初始化串口通信
  irrecv.enableIRIn();//初始化红外通信
}

void loop() {
  if(irrecv.decode(&results))//如果接收到编码
  {
    Serial.println(results.value,HEX);
    irrecv.resume();//接收下一个编码
  }
}

2.遥控器控制led灯的亮灭。
(由于把led烧坏,使用了板子自带的测试灯,由13号引脚控制)

/*
 先用程序,看下遥控器按钮对应的内容
 当收到这个内容的时候,可以控制灯的亮灭
 */

#include<IRremote.h>
int led=13;
int RECV_PIN=11;
int flag=1;
IRrecv irrecv(RECV_PIN);//IRrecv类的构造函数。可用于指定红外一体化接受头的连接引脚
decode_results results;//一个decode_results类的对象,

void setup() {
  pinMode(led,OUTPUT);
  Serial.begin(9600);//初始化串口通信
  irrecv.enableIRIn();//初始化红外通信
}

void loop() {
  if(irrecv.decode(&results))//如果接收到编码
  {
    Serial.println(results.value,HEX);
    //if(results.value=="FF38C7")
    if(results.value==0xFF38C7)
    {
      if(flag)
        digitalWrite(led,HIGH);
      else
        digitalWrite(led,LOW);
      flag=!flag;
      //Serial.println(flag);//排错
      
    }
    irrecv.resume();//接收下一个编码
  }

}

4. attention

  • ** if(results.value0xFF38C7)** //是16进制。不要写成 if(results.value"FF38C7")
  • digitalWrite(led,HIGH); 不要 led = 1。(写习惯,还没改过来)
  • 所以以后,遥控器都用手机就好了。手机万能遥控器
  • 这基本是软件的东西。极大的提高了效率。但是,问:使用电视遥控器的时候,家里的空调没有反应呢?sometimes, follow the reasons。红外遥控通信原理(看不懂,嘿嘿)(编码,解码)(可以去看下普中的红外遥控)

你可能感兴趣的:(单片机,红外控制,Arduino)