lou 发表于 2020-4-28 09:40:24

基于Arduino使用红外接收传感器

基于Arduino使用红外接收传感器


(红外接收传感器模块)
产品介绍
接收放大一体红外接收管,直接输出红外码适用范围广,兼容市场上大部分红外遥控器LED,方便观察调试适用于红外通讯、红外遥控控制等选购配件:3P传感器连接线
参数规格
1、采用1838遥控接收头,灵敏度高2、工作电压5V3、输出形式:数字输出4、设有2个固定孔,方便安装,孔径3.1mm5、带数据指示灯6、PCB尺寸:23mm*21mm7、重量:3g8、端口:数字量电平9、输出:标准红外码10、接收频率:38KHZ载波红外码11、接收距离:1-8m(视接收端而定)12、平台:Arduino单片机
接线方式
Arduino               红外传感器模块   5V      <------>      VCC   GND   <------>       GND   D6      <------>      DAT
红外接收传感器模块基础小案例
LED 高电平为亮,低电平为灭,当遥控器按下1号按键时,绿色 LED 灯亮起,当按下2号按键时,LED灯处于熄灭状态。

(LED模块)
接线方式
Arduino                  红外传感器模块   5V      <------>       VCC   GND   <------>      GND   D6      <------>       DAT
Arduino                   LED模块    3V3      <------>       VCC    GND   <------>      GND    D5      <------>      IN
程序测试
1、串口打印读取遥控器1号和2号按键数值,当没有信号时串口打印字符”a”,当有信号时读取对应信号数值。
Mixly 图形化编程程序
(图形化程序)
按下1号按键时串口打印读取数值
(串口数值显示)


按下2号按键时串口打印读取数值
(串口数值显示)
程序实现代码

#include <IRremote.h>
long ir_item;
IRrecv irrecv_6(6);
decode_results results_6;
void setup(){
Serial.begin(9600);
irrecv_6.enableIRIn();
}
void loop(){
if (irrecv_6.decode(&results_6)) {
    ir_item=results_6.value;
    String type="UNKNOWN";
    String typelist={"UNKNOWN", "NEC", "SONY", "RC5", "RC6", "DISH", "SHARP", "PANASONIC", "JVC", "SANYO", "MITSUBISHI", "SAMSUNG", "LG", "WHYNTER"};
    if(results_6.decode_type>=1&&results_6.decode_type<=13){
      type=typelist;
    }
    Serial.print("IR TYPE:"+type+"");
    Serial.println(ir_item);
    delay(1000);
    irrecv_6.resume();
} else {
    Serial.println('a');
    delay(1000);
}

2、当遥控器按下1号按键时,绿色 LED 灯亮起,当按下2号按键时,LED 灯处于熄灭状态。

Mixly 图形化编程程序


(图形化程序)
程序实现代码

#include <IRremote.h>
long ir_item;
IRrecv irrecv_6(6);
decode_results results_6;
void setup(){
Serial.begin(9600);
pinMode(5, OUTPUT);
irrecv_6.enableIRIn();
}
void loop(){
if (irrecv_6.decode(&results_6)) {
    ir_item=results_6.value;
    String type="UNKNOWN";
    String typelist={"UNKNOWN", "NEC", "SONY", "RC5", "RC6", "DISH", "SHARP", "PANASONIC", "JVC", "SANYO", "MITSUBISHI", "SAMSUNG", "LG", "WHYNTER"};
    if(results_6.decode_type>=1&&results_6.decode_type<=13){
      type=typelist;
    }
    Serial.print("IR TYPE:"+type+"");
    Serial.println(ir_item);
    if (ir_item == 16672919) {
      digitalWrite(5,HIGH);
    } else if (ir_item == 16701479) {
      digitalWrite(5,LOW);
    }
    irrecv_6.resume();
} else {
}
}
页: [1]
查看完整版本: 基于Arduino使用红外接收传感器