找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

【Arduino】108种传感器系列实验(133)---GP2Y0A02YK0F红外测距模块

查看数: 10366 | 评论数: 39 | 收藏 3
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-10-4 15:26

正文摘要:

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动 ...

回复

ID:847574 发表于 2020-12-1 14:15
你好,我想STM32上使用这个传感器,但是我不知道ADC的电压转换成距离的公式。请指教
无效楼层,该帖已经被删除
ID:513258 发表于 2020-11-23 21:59

谢谢鼓励
ID:838135 发表于 2020-11-18 16:19
非常有用
ID:513258 发表于 2020-10-24 15:46
ssw2020 发表于 2020-6-22 09:46
楼主可以考虑开个小店了,边做实验边把自己的实验成果分享,有兴趣的又可以跟随着你的实验笔记进行测试,这 ...

谢谢鼓励,作为初学者,通过发帖,也是学习的一种办法
ID:780673 发表于 2020-6-22 09:46
楼主可以考虑开个小店了,边做实验边把自己的实验成果分享,有兴趣的又可以跟随着你的实验笔记进行测试,这种思路真的很棒
无效楼层,该帖已经被删除
ID:513258 发表于 2019-12-16 12:57
dcd 发表于 2019-12-3 21:32
这个图形化编程是那个软件

是Mind+
ID:554951 发表于 2019-12-3 21:32
这个图形化编程是那个软件
ID:513258 发表于 2019-11-25 10:18

谢谢鼓励
ID:646866 发表于 2019-11-21 22:01
很棒很有创意
ID:513258 发表于 2019-11-20 11:06
电子酷酷 发表于 2019-10-25 11:12
你好 看的你的写的 很详细 很好

谢谢鼓励
ID:301797 发表于 2019-10-25 11:12
你好 看的你的写的 很详细 很好
ID:513258 发表于 2019-10-6 19:24
  1. /*
  2.   【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
  3.   实验一百三十三:夏普GP2Y0A02YK0F 红外测距传感器模块 20-150cm 距离传感器
  4.   库地址:https://github.com/guillaume-rico/SharpIR
  5.   项目:测试距离的方案之四
  6.   Module        UNO
  7.   VCC   ——   5V
  8.   GND  ——   GND
  9.   VO    ——   A0
  10. */

  11. #include <SharpIR.h>

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

  20. SharpIR SharpIR(ir, model);

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

  25. void loop() {
  26.   delay(500);

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

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


  29.   Serial.print("Mean distance: ");  // returns it to the serial monitor
  30.   Serial.println(dis);

  31.   unsigned long pepe2 = millis() - pepe1; // the following gives you the time taken to get the measurement
  32.   Serial.print("Time taken (ms): ");
  33.   Serial.println(pepe2);
  34. }
复制代码


ID:513258 发表于 2019-10-6 18:56
  1. /*
  2.   【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
  3.   实验一百三十三:夏普GP2Y0A02YK0F 红外测距传感器模块 20-150cm 距离传感器
  4.   项目:测试距离的方案之三
  5.   说明;参考V-cm图, 用查表法, 连接Vout到Arduino的A0引脚, 测量频率20Hz
  6.   需要进一步校对与调整参数
  7.   Module        UNO
  8.   VCC   ——   5V
  9.   GND  ——   GND
  10.   VO    ——   A0
  11. */

  12. float distance[] = {20, 30, 40, 50, 60, 70, 80, 90, 100,  110,  120,  130,  140,  150};
  13. float voltage[14] = {2.5, 2, 1.55, 1.25, 1.1, 0.85, 0.8, 0.73, 0.7, 0.65, 0.6, 0.5, 0.45, 0.4};

  14. typedef struct {
  15.   float maxDistance;  //cm
  16.   float minDistance;  //cm
  17.   float offset; //cm
  18.   float distance; //cm,
  19.   int frequency;  //Hz
  20.   int pin;
  21. }SHARP;

  22. SHARP Sharp = {150, 20, 0, 0, 20, A0};

  23. void getDistance(SHARP* Sharp) {
  24.   float v = analogRead(Sharp->pin);
  25.   v = v / 1024.0 * 5;
  26.   int index = 0;
  27.   for(index = 0; index < 14; index++) {
  28.     if(v >= voltage[index]) {
  29.       break;
  30.     }
  31.   }
  32.   if(index == 0) {
  33.     Sharp->distance = 20;
  34.   } else if(index == 14) {
  35.     Sharp->distance = 150;
  36.   } else {
  37.     Sharp->distance = map(v, voltage[index], voltage[index-1], distance[index], distance[index-1]);
  38.   }
  39. }

  40. void setup() {
  41.   Serial.begin(115200);
  42. }

  43. void loop() {
  44.   static unsigned long lastTime = millis();
  45.   if(millis() - lastTime > 1000/Sharp.frequency) {
  46.     lastTime = millis();
  47.     getDistance(&Sharp);
  48.     Serial.println(Sharp.distance);
  49. //    int v = analogRead(Sharp.pin);
  50. //    Serial.println(v);
  51.   }  
  52. }
复制代码


ID:513258 发表于 2019-10-6 18:27
  1. /*
  2.   【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
  3.   实验一百三十三:夏普GP2Y0A02YK0F 红外测距传感器模块 20-150cm 距离传感器
  4.   项目:测试距离的方案之二
  5.   Module        UNO
  6.   VCC   ——   5V
  7.   GND  ——   GND
  8.   VO    ——   A0
  9. */

  10. #define pin A0

  11. void setup () {
  12.         Serial.begin (9600);
  13.         pinMode (pin, INPUT);
  14. }

  15. void loop () {
  16.         uint16_t value = analogRead (pin);
  17.         uint16_t range = get_gp2y0a02 (value);
  18.         Serial.println (value);
  19.         Serial.print (range);
  20.         Serial.println (" cm");
  21.         Serial.println ();
  22.         delay (500);
  23. }

  24. //return distance (cm)
  25. uint16_t get_gp2y0a02 (uint16_t value) {
  26.         if (value < 70)  value = 70;
  27.         return 12777.3/value-1.1;        //(cm)
  28.         //return (62.5/(value/1023.0*5)-1.1);        //(cm)
  29.         //return ((67870.0 / (value - 3.0)) - 40.0); //gp2d12 (mm)
  30. }
复制代码


ID:513258 发表于 2019-10-6 17:36
  1. /*
  2.   【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
  3.   实验一百三十三:夏普GP2Y0A02YK0F 红外测距传感器模块 20-150cm 距离传感器
  4.   项目一:测试距离的方案之一
  5.   Module        UNO
  6.   VCC   ——   5V
  7.   GND  ——   GND
  8.   VO    ——   A0
  9. */

  10. int IRpin = 0;                                    // analog pin for reading the IR sensor
  11. void setup() {
  12.   Serial.begin(9600);                             // start the serial port
  13. }
  14. void loop() {
  15.   float volts = analogRead(IRpin) * 0.0048828125; // value from sensor * (5/1024) - if running 3.3.volts then change 5 to 3.3
  16.   float distance = 65 * pow(volts, -1.10);        // worked out from graph 65 = theretical distance / (1/Volts)
  17.   Serial.println(distance);                       // print the distance
  18.   delay(100);                                     // arbitary wait time.
  19. }
复制代码


ID:513258 发表于 2019-10-6 10:44
zh_jie_sjz 发表于 2019-10-4 17:18
这个东东很有意思

是吗,我还没有实验过呢
ID:619262 发表于 2019-10-4 17:18
这个东东很有意思

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表