查看: 18487|回复: 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, 下载次数: 108

  • TA的每日心情
    慵懒
    2017-3-27 10:47
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 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
  • TA的每日心情
    慵懒
    2017-3-27 10:47
  • 签到天数: 3 天

    [LV.2]偶尔看看I

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

    本版积分规则

    热门推荐

    5分钟带你快速了解新一代开发板:M5STACK
    5分钟带你快速了解新一代
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    创客火首发无人机编队套装,开启不一样的人工智能教育
    创客火首发无人机编队套装
    2017年国务院发布《新一代人工智能发展规划》,提出要广泛开展人工智能科普活动,在中
    [Arduino物联网开发实战2]数据反馈
    [Arduino物联网开发实战2]
    [md]上一篇:(https://www.arduino.cn/thread-83177-1-1.html) 除了控制设备外,blin
    小爱同学开电脑 esp8266 12f
    小爱同学开电脑 esp8266 1
    1.mini D1 wifi ESP-12F N ESP8266开发板 2.1路 5V继电器模块 高电平触发 3.AMS1117-3
    服务器平台又挂了么,显示服务器未响应了
    服务器平台又挂了么,显示
    数据读不回来了
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表