Arduino与Processing交互-超声波测距传感器的读取与显示
公众号: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交互-超声波测距传感器的读取与显示相关推荐
- Arduino的光敏传感器和超声波测距传感器测试代码
光敏传感器测试代码 使用的是一个未知名4pin模块, 4pin依次为Vcc, Gnd, DO, AO, 板载一个可调电阻以及一个LED, 调节电阻大小, 可以控制LED亮灭和DO输出变化对光亮的灵敏度 ...
- 超声波测距传感器认知
目录 一.超声波测距传感器认知 二.从零编程实现超声波测距 三.项目--感应开关盖垃圾桶 1.开发步骤 2.感应开关盖垃圾桶代码测试 一.超声波测距传感器认知 超声波测距模块是用来测量距离的一种产品, ...
- 超声波测距传感器模块在畜牧业的应用
我国现代养殖是一种"高投入.高产出.高效益"的产业.资本密集型和劳动集约化是其基本特征.这种集约化的产业耗费了大量的人力和自然资源,并在某种程度上对环境造成负面影响.如今物联网应用 ...
- 【HaaS Python硬件积木】HCSR04超声波测距传感器
来这里发现更多拿来即用的传感器 HaaS开发框架HaaS积木方案,赋能生态开发者,让您快速找到自己需要的解决方案,硬件主板与外设,以及各种应用组件.https://haas.iot.aliyun.co ...
- 基于STM32和超声波测距传感器的测距功能设计
基于STM32和超声波测距传感器的测距功能设计(使用陌生传感器的流程介绍) 引言 项目设计 项目简介 开发工具 硬件设计 软件设计 开发流程 阅读手册 配置并测试传感器相关设置 软件开发 总结 后续 ...
- 【STM32】标准库与HAL库对照学习教程外设篇--超声波测距传感器
[STM32]标准库与HAL库对照学习教程外设篇--超声波测距传感器 一.前言 二.准备工作 三.超声波测距传感器 1.原理说明 2.使用说明 四.标准库使用传感器 1.实验程序 2.实验效果 五.H ...
- 超声波测距传感器模HG-C40U工作程序图文详解
超声波测距模块是用来测量距离的一种产品,通过发送和收超声波,利用时间差和声音传播速度,计算出模块到前方障碍物的距离. 超声波测距模块有好多种类型,目前比较常用的有URM37超声波传感器默认是232接口 ...
- Arduino实现超声波测距+LCD液晶屏实时显示
Arduino实现超声波测距+LCD液晶屏实时显示 计科在我们学校是完全偏软的.实在是闲的无聊,在家搞起了硬件.好玩呐!!! ************************************* ...
- [博创智联]创新创客智能硬件平台——超声波测距传感器
[博创智联]创新创客智能硬件平台--超声波测距传感器 准备工作 测试环节 编译驱动和测试代码 加载驱动并执行代码 准备工作 烧录原版系统,供电.连接串口线,配置网络,挂载NFS共享,拷贝超声波测距传感 ...
最新文章
- Tomcat禁用SSLv3和RC4算法
- MPU6050首例整合性6轴的姿态模块(转)
- 每日程序C语言13-求1000以内的完数
- php 垃圾回收机制----写时复制和引用计数
- asp.net 之高速缓存
- LeetCode 36. 有效的数独
- android activity 窗口 样式
- java朴素贝叶斯_java实现朴素贝叶斯算法
- 前端和后端哪个工资更高呢?
- 北京林业大学matlab公选课,北京林业大学教务处
- 电子计算机上面的mrc是什么意思,计算器上 M MRC GT CE MU 键分别是什么意思?
- android中实现微信九宫格,微信小程序九宫格布局
- Win10如何用命令打开控制面板
- 护理和计算机哪个专业好,护理专业考研的就业前景和方向
- 可燃冰 flammable ice
- 计算机大专物联网专业学什么好,大专计算机学哪个专业比较好 什么专业好就业...
- 使用 Python 实现一个简单的智能聊天机器人(附完整代码)
- 使用kegg数据库的一点见解
- 视频教程-【吴刚】电商网站详情页设计初级入门标准视频教程-UI
- 10年第六届湖南省acm程序设计大赛 第五题 E 内部收益率
热门文章
- 【深度学习】之激活函数篇[Sigmoid、tanh、ReLU、Leaky ReLU、Mish、Hardswish、SiLU]附绘图Python代码。
- 10.24 应用层程序控制数码管显示数字
- 推荐一款非Win7下专用的“任务栏图标收纳”工具——TrayApp(转自:http://www.ibobosky.com/my-quick-start-tool-trayapp.htm)
- 博文总集(三) 之网工进阶
- AttributeError:模块“ sipbuild.api”没有针对PyQt5 5.15.0的属性“ prepare_metadata_for_build_wheel”
- 保险行业公众号用户三步转化
- 十三、关于@MapperScan和@Mapper的使用
- 169、交换机配置规范
- 猎头爆料2013各大互联网公司年终奖及薪资架构
- pdf 加密如何解除?