红外遥控器
红外发射和接收的信号其实都是一连串的二进制脉冲码,高低电平按照一定的时间规律变换来传递相应的信息。为了使其在无线传输过程中免受其他信号的干扰,通常都将信号调制在特定的载波频率上(38K红外载波信号),通过红外发射二极管发射出去,而红外接收端则要将信号进行解调处理,还原成二进制脉冲码进行处理。
红外接收头有三个引脚,如图从左到右依次为VOUT、GND、VCC。红外遥控器发射的38K红外载波信号由遥控器里的编码芯片对其进行编码,具体编码方式和协议可在网上获取。当按下遥控器按键时,遥控器发出红外载波信号,红外接收器接收到信号,程序对载波信号进行解码,通过数据码的不同来判断按下的是哪个键。
实物连接图
和下图的LCD组合就可以在液晶屏上显示接收到的代码。
程序
注意:首先需要手动安装Irremote库。方法:在IDE中点击「项目」—「加载库」—「管理库」,查找「IRremote」进行安装。
#include <IRremote.h> #include <LiquidCrystal.h> // 初始化LCD库 const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); int RECV_PIN = 8; int LED_PIN = 13; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver pinMode(LED_PIN, OUTPUT); digitalWrite(LED_PIN, LOW); lcd.begin(16, 2); } void loop() { if (irrecv.decode(&results)) { lcd.clear(); lcd.print(results.value,HEX); if (results.value == 0xFFA25D) //开灯的值 { digitalWrite(LED_PIN, HIGH); } else if (results.value == 0xFFE21D) //关灯的值 { digitalWrite(LED_PIN, LOW); } irrecv.resume(); // Receive the next value } delay(400); }文件下载(已下载 3 次)
发布时间:2019/9/1 下午7:28:42 阅读次数:2755