You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Arduino使用SharpIR库驱动GP2Y0A21Y红外传感器报错求助

解决SharpIR库构造函数不匹配的问题

我来帮你搞定这个问题!从报错信息能明显看出来:你写的代码调用了一个需要4个参数的SharpIR构造函数,但你当前安装的库版本只提供了接受2个参数的构造函数——这是因为Arduino Playground上的教程用的是旧版SharpIR库的API,和你现在下载的新版本库不兼容了。

错误原因拆解

你之前的代码里写了:

SharpIR sharp("A1", 25, 93, 1080);

但从库的头文件提示能看到,现在的构造函数只有这个版本:

SharpIR(uint8_t _sensorType, uint8_t _sensorPin);

它只需要两个参数:传感器型号的常量、引脚编号(注意是数字/引脚标识符,不是字符串)。那些校准参数(25、93、1080)已经被新版本库内部集成,不需要手动传入了。

修正后的完整代码

针对你的GP2Y0A21Y传感器,对应的型号常量是GP2Y0A21YK0F,直接用这个和引脚A1来初始化即可,同时加上读取距离的逻辑:

#include <SharpIR.h>

// 初始化传感器:第一个参数是型号常量,第二个是模拟引脚A1
SharpIR sharpSensor(GP2Y0A21YK0F, A1);

void setup() {
  Serial.begin(9600); // 开启串口用于打印距离数据
}

void loop() {
  int distance = sharpSensor.distance(); // 读取当前距离
  Serial.print("当前距离: ");
  Serial.print(distance);
  Serial.println(" cm");
  
  delay(500); // 每隔500ms读取一次
}

额外说明

如果不确定自己的传感器对应哪个型号常量,可以打开SharpIR库的SharpIR.h头文件,里面会列出所有支持的传感器型号定义:

#define GP2Y0A02YK0F 1 // 量程20-150cm
#define GP2Y0A21YK0F 2 // 量程10-80cm(你的传感器就是这个)
#define GP2Y0A41SK0F 3 // 量程4-30cm
#define GP2Y0A710K0F 4 // 量程100-550cm
#define GP2Y0D02YK5F 5 // 数字输出,量程10-80cm

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

火山引擎 最新活动