找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

【Arduino】168种传感器模块系列实验(148)---E18-D80避障传感器

查看数: 5174 | 评论数: 25 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-2-26 16:13

正文摘要:

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

回复

ID:513258 发表于 2020-2-26 20:05
  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料 +代码 +图形 +仿真)
  3.   实验一百四十八:E18-D80NK 漫反射式红外光电开关避障传感器模块
  4.   程序之三:串口输出检测情况,同步控制LED
  5.   实验接线
  6.   VCC      +5V
  7.   GND      GND
  8.   OUT       2
  9.   LED      13
  10. */

  11. const int InfraredSensorPin = 2;
  12. //将信号引脚连接到数字引脚2
  13. const int LedDisp = 13;
  14. //将控制LED连接到数字引脚13

  15. void setup()
  16. {
  17.   Serial.begin(57600);
  18.   Serial.println("Start!");
  19.   pinMode(InfraredSensorPin, INPUT);
  20.   pinMode(LedDisp, OUTPUT);
  21.   digitalWrite(LedDisp, LOW);
  22. }

  23. void loop()
  24. {
  25.   if (digitalRead(InfraredSensorPin) == LOW)  digitalWrite(LedDisp, HIGH);
  26.   else  digitalWrite(LedDisp, LOW);
  27.   Serial.print("Infrared Switch Status:");
  28.   Serial.println(digitalRead(InfraredSensorPin), BIN);
  29.   delay(1000);
  30. }
复制代码


ID:513258 发表于 2020-2-26 19:48
本帖最后由 eagler8 于 2020-2-26 19:50 编辑

红外避障使用很简单,就是OUT口检测到有效距离内有障碍物时,给OUT发送高电平(或低电平)。可以利用这一特性,进行计数。

需要注意的是,根据障碍物在识别范围内所停留的时间不同,模块可能会在障碍物停留的这一段时间频繁的发送高电平(或低电平),所以,要判断两个标志,一个是障碍物进入,一个是障碍物移出,保证在进入后只记录一次数据即可。

代码如下:
  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料 +代码 +图形 +仿真)
  3.   实验一百四十八:E18-D80NK 漫反射式红外光电开关避障传感器模块
  4.   程序之二:利用红外避障(障碍检测)进行计数
  5.   实验接线
  6.   VCC      +5V
  7.   GND      GND
  8.   OUT       2
  9. */

  10. int i=0; //计数
  11. bool b=false; //障碍物是否进入
  12. void setup() {
  13. Serial.begin(9600);
  14. pinMode(2,INPUT);
  15. }
  16. void loop() {
  17. if (digitalRead(2)==LOW) //如果发送低电平,识别到障碍物进入
  18. {
  19.   if (b==false) { //如果上一次检测时,障碍物没有进入,则视为第一次进入。
  20.     b=true;  //先将标志记录为障碍物已进入。
  21.     i+=1;  //计数+1
  22.     Serial.print("OK:");
  23.     Serial.println(i);
  24.    }
  25. }
  26. else {  //如果检测到障碍物移出
  27. b=false;  //将标志记录为障碍物已移出。
  28. }
  29.   delay(1);
  30. }
复制代码



ID:513258 发表于 2020-2-26 19:34
本帖最后由 eagler8 于 2020-2-26 19:52 编辑

实验开源代码
  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料 +代码 +图形 +仿真)
  3.   实验一百四十八:E18-D80NK 漫反射式红外光电开关避障传感器模块
  4.   程序之一:串口输出检测情况
  5.   实验接线
  6.   VCC      +5V
  7.   GND      GND
  8.   OUT       2
  9. */

  10. void setup()
  11. {
  12.   Serial.begin(9600); //以9600的速率启动串行通信
  13.   pinMode(2, INPUT); //插脚2作为信号输入
  14. }

  15. void loop()
  16. {
  17.   while (1) {
  18.     delay(1000);
  19.     if (digitalRead(2) == LOW) {
  20.       //如果未检测到信号打印冲突
  21.       Serial.println("Collision Detected.");
  22.     }
  23.     else {
  24.       // 如果检测到信号打印冲突
  25.       Serial.println("No Collision Detected.");
  26.     }
  27.   }
  28. }
复制代码



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

Powered by 单片机教程网

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