涂鸦arduino中文社区活动
查看: 19367|回复: 6

分享sharpIR夏普红外测距传感器库GP2Y0A710K0F

[复制链接]

该用户从未签到

发表于 2017-12-5 15:30 | 显示全部楼层 |阅读模式
本帖最后由 MACE 于 2017-12-5 15:34 编辑

买了两个sharp红外测距传感器GP2Y0A710K0F(100-550cm)和gp2y0a02yk_e(20-150cm),买回来看到论坛中的帖子,距离的转换曲线有点复杂,就扔边上了。前天没事干就晚上搜了搜,居然找到了一个库函数,支持4种夏普的红外测距传感器。作者介绍说,他说肯据官方文档中的曲线做的拟合,精度我也不会测,接上线下载程序,觉得还是不错的,对于检测人的有无,及距离还是够用的。库中采样次数25次,中值滤波取中间值。传感器的电源和地之间串接440uF电容,用来稳定电源电压。
支持4种sharpIR传感器的读取,在示例程序中做相应的修改:
GP2Y0A02YK0F --> "20150"
GP2Y0A21YK --> "1080"
GP2Y0A710K0F --> "100500"
GP2YA41SK0F --> "430"
[mw_shl_code=bash,true]//SHARP IR 红外测距模块测试GP2Y0A710K0F(100-550cm)
#include <SharpIR.h>

#define ir A0    //模拟输入引脚
#define model 100500     //传感器型号
// ir: the pin where your sensor is attached
// model: an int that determines your sensor:  1080 for GP2Y0A21Y
//                                            20150 for GP2Y0A02Y
//                                            100500 for GP2Y0A710K0F
//                                            430   for  GP2YA41SK0F
//                                            (working distance range according to the datasheets)

SharpIR SharpIR(ir, model);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  delay(500);   

  unsigned long pepe1=millis();  // takes the time before the loop on the library begins

  int dis=SharpIR.distance();  // this returns the distance to the object you're measuring


  Serial.print("Mean distance: ");  // returns it to the serial monitor
  Serial.println(dis);
  
  unsigned long pepe2=millis()-pepe1;  // the following gives you the time taken to get the measurement
  Serial.print("Time taken (ms): ");
  Serial.println(pepe2);  

}[/mw_shl_code]


库的官方下载地址:https://github.com/guillaume-rico/SharpIR


SharpIR-master.zip

4.91 KB, 下载次数: 111

该用户从未签到

发表于 2017-12-5 15:48 | 显示全部楼层
请问,这个测距做出来过吗,测量精度能达到多少?

该用户从未签到

 楼主| 发表于 2017-12-5 20:47 | 显示全部楼层
xiebb5688 发表于 2017-12-5 15:48
请问,这个测距做出来过吗,测量精度能达到多少?

我没具体对比啊,只是人站在传感器前不同位置试了试,要不你看下他写的这个http://www.arduino.cn/thread-3782-1-1.html

该用户从未签到

发表于 2017-12-7 10:30 | 显示全部楼层
MACE 发表于 2017-12-5 20:47
我没具体对比啊,只是人站在传感器前不同位置试了试,要不你看下他写的这个http://www.arduino.cn/thread ...

不错,谢谢。
看完之后感觉红外测距其实也不太准。

该用户从未签到

发表于 2017-12-10 15:41 | 显示全部楼层
请问这个如何做到多个红外模块的共用?

该用户从未签到

 楼主| 发表于 2017-12-11 16:14 | 显示全部楼层
bailang 发表于 2017-12-10 15:41
请问这个如何做到多个红外模块的共用?

这个传感器是模拟输出的,直接接到arduino的模拟输入引脚,然后库函数生成不同的实例对应不同的AD口,也可以直接用原作者的拟合曲线公式,

该用户从未签到

发表于 2019-12-13 13:28 | 显示全部楼层
你好,我想请教一下怎样取两次测量出的距离作差?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

字符串是否对比该使用哪个函数?
字符串是否对比该使用哪个
现有问题是, 串口接收到的数据是正常的,(通过print函数打印串口收
VSCode+PIO开发环境中添加Blinker.h的问题
VSCode+PIO开发环境中添加
我在main.c中添加就没问题,但是添加在.h文件中就会出现编译错误,在其他.c文件添加此
【干货分享】mega2560原理图PCB图纸altium designer18
【干货分享】mega2560原理
分享一下mega2560的板子 AD版本 **** 本内容被作者隐藏 **** ergo
这样写不对吗,为啥老是报错
这样写不对吗,为啥老是报
Python上位机控制WS2812B
Python上位机控制WS2812B
说在前面: 设计师对颜色有着天生的敏锐性,而工程师眼中这些都会幻化成数值。。
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表