You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Arduino代码中将红外传感器设置为输入设备并读取数据

Arduino红外传感器配置为输入设备的实现方法

首先需要明确你使用的红外传感器类型:模拟输出型(如红外测距、红外灰度传感器,输出连续变化的数值)或数字输出型(如红外避障、人体红外PIR传感器,仅输出高低电平两种状态),两种的配置逻辑有细微差异。


1. 硬件连接要求

  • 模拟输出型红外传感器:输出引脚接Arduino带A标识的模拟输入引脚(如A0、A1)
  • 数字输出型红外传感器:输出引脚接Arduino任意数字IO引脚(如2、3、4)
  • 传感器VCC接Arduino对应额定电压(多数为5V,部分小功率传感器支持3.3V),GND接Arduino GND

2. 核心配置逻辑

  • 输入模式声明:在setup()函数中用pinMode()函数将传感器连接的引脚设置为INPUT模式,模拟输入引脚可省略声明,默认就是输入状态,显式声明可以提升代码可读性
  • 数值读取:模拟输出型用analogRead(引脚号)读取0~1023范围的连续数值;数字输出型用digitalRead(引脚号)读取HIGH/LOW两种状态值

3. 可直接使用的示例代码

模拟型红外位置传感器示例(适配你的需求)

读取传感器数值,检测到红外位置变化超过阈值时点亮13号引脚自带LED:

// 引脚定义
const int irSensorPin = A0; // 红外传感器接A0模拟引脚
const int ledPin = 13;
int irSensorValue = 0; // 存储当前红外传感器读取值
int lastIrValue = 0; // 存储上一次读取值,用于判断位置变化

void setup()
{
  pinMode(ledPin, OUTPUT);
  pinMode(irSensorPin, INPUT);
  // 开启串口可以打印数值,方便调试阈值
  Serial.begin(9600);
}

void loop() {
  // 读取红外传感器的位置对应数值
  irSensorValue = analogRead(irSensorPin);
  // 串口输出数值,方便你实测自己传感器的变化范围
  Serial.print("红外传感器当前值:");
  Serial.println(irSensorValue);

  // 数值差超过50判定为位置发生变化,可根据实测调整阈值
  if(abs(irSensorValue - lastIrValue) > 50) {
    digitalWrite(ledPin, HIGH);
    delay(1000);
    // 更新历史值
    lastIrValue = irSensorValue;
  } else {
    digitalWrite(ledPin, LOW);
  }

  delay(100);
}

数字型红外传感器示例(仅作扩展参考)

const int irSensorPin = 2; // 红外传感器接数字引脚2
int irState = 0;

void setup() {
  pinMode(irSensorPin, INPUT);
  pinMode(13, OUTPUT);
}

void loop() {
  irState = digitalRead(irSensorPin);
  if(irState == HIGH) { // 传感器被触发
    digitalWrite(13, HIGH);
  } else {
    digitalWrite(13, LOW);
  }
  delay(50);
}

4. 注意事项

  • 阈值需要根据你使用的传感器实测调整:先通过串口打印传感器无遮挡、有不同位置遮挡时的数值,再设置对应的判断阈值即可
  • 如果是红外遥控接收头这类解码类红外传感器,需要额外调用IRremote等第三方库读取解码后的键值,不适用上述普通读取逻辑

内容的提问来源于stack exchange,提问作者darklight213

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 03:18:04