公众号:STCode

1-超声波测距传感器简介

超声波测距传感器是利用频率高于20kHz的声波在空气中传播,遇到障碍物反射回来,通过计算发射和接收时间差,可以计算出发射点与障碍物间的距离。
超声波测距的公式如下: L=Vx(T2-T)/2
式中L为测量的距离长度;V为超声波在空气中的传播速度(在20℃时为344m/s);T为测量距离的起始时间;T2为收到
回波的时间;速度乘以时间差等于来回的距离,除以2可以得到实际距离。

超声波测距传感器的种类繁多,有的模块带有串口或I2C输出,这种能直接输出距离值。本设计选用了市面上性价比较高的模块HC-SR04,如图所示。该传感器测量距离为2~450cm,精度为3mm。

超声波测距目前已经广泛应用于汽车倒车雷达等设备,机器人爱好者也将其用于机器人导航、智能小车避障等。超声波传感器的测量精度往往只能达到厘米数量级,若要进一步提高精度,需进行温度补偿计算。声速受温度影响较为明显,例如,当温度为0℃时超声波速度是332m/s,30℃时是350m/s。温度变化引起的超声波速度变化为18m/s。HC-SR04超声波测距模块引脚说明如下:


2-Arduino读取超声波传感器

HC-SR04模块的工作原理如下:

1)单片机引脚拉低Trig,给予至少10us的高电平信号去触发。
2)模块触发后会发射8个40KHz的方波,并开始自动检测是否有信号返回。
3)若接收到信号返回,则通过Echo输出一个高电平,高电平持续的时间便是超声波从发射到接收的时间,该模块工作时序如图所示。

触发脉冲触发后。HC-SR04模块会自动发射8个40kHz的方波。并自动检测是否有信号返回,如果有信号返回,通过ECHO输出一个高电平、高电平持续的时间便是超声波从发射到接收的时间。

那么测试距离=高电平持续时间x340m/sx0.5。


3-接线图


4-超声波测距代码

int outputPin =2;              //接超声波Trig到数字D2脚
int inputPin =3;               //接超声波Echo到数字D3脚void setup()
{Serial.begin(9600);pinMode(inputPin,INPUT);pinMode(outputPin,OUTPUT);
}void loop()
{digitalWrite(outputPin,LOW);delayMicroseconds(2);digitalWrite(outputPin,HIGH);//发出持续时间为10微秒到Trig脚驱动超声波检测delayMicroseconds(10);digitalWrite(outputPin,LOW);int distance =pulseIn(inputPin,HIGH);   //接收脉冲的时间distance =distance/58;                  //将脉冲时间转换为距离值Serial.print("The distance is :");      Serial.println(distance);delay(50);
}

接好电路后,下载该程序到Arduino控制器,打开串口监视器将能看到超声波传感器检测到的距离值。


5-Processing绘制距离值与提示

读取一张公交车的图片,在界面的右边画上一堵墙,墙上的读数是公交车与墙的距离。用键盘的“←”和“→”键控制公交车的远离或靠近墙。与墙的实际距离会显示在屏幕的右上角,最远距离为450cm,最近为0cm。

公交车图片如下,注意要将该图片拖动到Processing草稿区。

代码如下:

PImage BUS;
int x =0,y =220;
int distance =0;void setup()
{size(640,480);BUS =loadImage("bus.png");      //读取图片background(255);                           image(BUS,x,y);
}void draw()
{background(255);fill(30,40,40);rect(600,80,30,395);image(BUS,x,y);distance=450-x*450/(600-BUS.width);  //换算与墙之间的距离,设其最大值为450mtext("Distance is "+distance+"CM",250,50);
}void keyPressed()                             //特殊键的key值为CODED,此时需要keyCode再次判断
{if(key==CODED){switch(keyCode){case LEFT:                               //按下“左”键if(x>0){x=x-1;}else{x=0;}break;case RIGHT:                               //按下“右”键if(x<(600-BUS.width)){x=x+1;}else{x= 600-BUS.width;}break;default:break;}}
}

用键盘的“←”和“→”键控制公交车的远离或靠近墙,Processing界面效果如下:


6-Arduino与Processing交互

读取超声波传感器的数值,将值显示在屏幕的右上角。根据该距离值来绘制公交车与墙之间的距离。超声波测距传感器的数值大,则公交车与墙的距离远,读取的数值小,则公交车离墙的距离近。

Processing端代码:

import processing.serial.*;
Serial myPort;
PImage BUS;
int x =0,y =220;
int distance =0;void setup()
{size(640,480);BUS =loadImage("bus.png");myPort =new Serial(this,"COM10",9600);
}void draw()
{if(myPort.available()>0){distance =myPort.read();println(distance);}background(255);fill(30,40,40);rect(600,80,30,395);x =(450-distance)*(600-BUS.width)/450; //将读取的距离值换算成实际的坐标image(BUS,x,y);text("Distance is "+distance+"CM",250,50);
}

Arduino端代码:

int outputPin =2;              //接超声波Trig到数字D2脚
int inputPin =3;               //接超声波Echo到数字D3脚void setup()
{Serial.begin(9600);pinMode(inputPin,INPUT);pinMode(outputPin,OUTPUT);
}void loop()
{digitalWrite(outputPin,LOW);delayMicroseconds(2);digitalWrite(outputPin,HIGH);//发出持续时间为10微秒到Trig脚驱动超声波检测delayMicroseconds(10);digitalWrite(outputPin,LOW);int distance =pulseIn(inputPin,HIGH);   //接收脉冲的时间distance =distance/58;                  //将脉冲时间转换为距离值      Serial.write(distance);delay(50);
}

上传代码验证下效果吧~

Arduino与Processing交互-超声波测距传感器的读取与显示相关推荐

  1. Arduino的光敏传感器和超声波测距传感器测试代码

    光敏传感器测试代码 使用的是一个未知名4pin模块, 4pin依次为Vcc, Gnd, DO, AO, 板载一个可调电阻以及一个LED, 调节电阻大小, 可以控制LED亮灭和DO输出变化对光亮的灵敏度 ...

  2. 超声波测距传感器认知

    目录 一.超声波测距传感器认知 二.从零编程实现超声波测距 三.项目--感应开关盖垃圾桶 1.开发步骤 2.感应开关盖垃圾桶代码测试 一.超声波测距传感器认知 超声波测距模块是用来测量距离的一种产品, ...

  3. 超声波测距传感器模块在畜牧业的应用

    我国现代养殖是一种"高投入.高产出.高效益"的产业.资本密集型和劳动集约化是其基本特征.这种集约化的产业耗费了大量的人力和自然资源,并在某种程度上对环境造成负面影响.如今物联网应用 ...

  4. 【HaaS Python硬件积木】HCSR04超声波测距传感器

    来这里发现更多拿来即用的传感器 HaaS开发框架HaaS积木方案,赋能生态开发者,让您快速找到自己需要的解决方案,硬件主板与外设,以及各种应用组件.https://haas.iot.aliyun.co ...

  5. 基于STM32和超声波测距传感器的测距功能设计

    基于STM32和超声波测距传感器的测距功能设计(使用陌生传感器的流程介绍) 引言 项目设计 项目简介 开发工具 硬件设计 软件设计 开发流程 阅读手册 配置并测试传感器相关设置 软件开发 总结 后续 ...

  6. 【STM32】标准库与HAL库对照学习教程外设篇--超声波测距传感器

    [STM32]标准库与HAL库对照学习教程外设篇--超声波测距传感器 一.前言 二.准备工作 三.超声波测距传感器 1.原理说明 2.使用说明 四.标准库使用传感器 1.实验程序 2.实验效果 五.H ...

  7. 超声波测距传感器模HG-C40U工作程序图文详解

    超声波测距模块是用来测量距离的一种产品,通过发送和收超声波,利用时间差和声音传播速度,计算出模块到前方障碍物的距离. 超声波测距模块有好多种类型,目前比较常用的有URM37超声波传感器默认是232接口 ...

  8. Arduino实现超声波测距+LCD液晶屏实时显示

    Arduino实现超声波测距+LCD液晶屏实时显示 计科在我们学校是完全偏软的.实在是闲的无聊,在家搞起了硬件.好玩呐!!! ************************************* ...

  9. [博创智联]创新创客智能硬件平台——超声波测距传感器

    [博创智联]创新创客智能硬件平台--超声波测距传感器 准备工作 测试环节 编译驱动和测试代码 加载驱动并执行代码 准备工作 烧录原版系统,供电.连接串口线,配置网络,挂载NFS共享,拷贝超声波测距传感 ...

最新文章

  1. Tomcat禁用SSLv3和RC4算法
  2. MPU6050首例整合性6轴的姿态模块(转)
  3. 每日程序C语言13-求1000以内的完数
  4. php 垃圾回收机制----写时复制和引用计数
  5. asp.net 之高速缓存
  6. LeetCode 36. 有效的数独
  7. android activity 窗口 样式
  8. java朴素贝叶斯_java实现朴素贝叶斯算法
  9. 前端和后端哪个工资更高呢?
  10. 北京林业大学matlab公选课,北京林业大学教务处
  11. 电子计算机上面的mrc是什么意思,计算器上 M MRC GT CE MU 键分别是什么意思?
  12. android中实现微信九宫格,微信小程序九宫格布局
  13. Win10如何用命令打开控制面板
  14. 护理和计算机哪个专业好,护理专业考研的就业前景和方向
  15. 可燃冰 flammable ice
  16. 计算机大专物联网专业学什么好,大专计算机学哪个专业比较好 什么专业好就业...
  17. 使用 Python 实现一个简单的智能聊天机器人(附完整代码)
  18. 使用kegg数据库的一点见解
  19. 视频教程-【吴刚】电商网站详情页设计初级入门标准视频教程-UI
  20. 10年第六届湖南省acm程序设计大赛 第五题 E 内部收益率

热门文章

  1. 【深度学习】之激活函数篇[Sigmoid、tanh、ReLU、Leaky ReLU、Mish、Hardswish、SiLU]附绘图Python代码。
  2. 10.24 应用层程序控制数码管显示数字
  3. 推荐一款非Win7下专用的“任务栏图标收纳”工具——TrayApp(转自:http://www.ibobosky.com/my-quick-start-tool-trayapp.htm)
  4. 博文总集(三) 之网工进阶
  5. AttributeError:模块“ sipbuild.api”没有针对PyQt5 5.15.0的属性“ prepare_metadata_for_build_wheel”
  6. 保险行业公众号用户三步转化
  7. 十三、关于@MapperScan和@Mapper的使用
  8. 169、交换机配置规范
  9. 猎头爆料2013各大互联网公司年终奖及薪资架构
  10. pdf 加密如何解除?