Arduino驱动HC-SR04超声波测距

2023-05-16

Arduino驱动HC-SR04超声波测距

  • 前言
    • 电气参数
    • 基本工作原理
    • 时序图
    • 接线
    • 程序
    • 实验结果
    • 总结

前言

HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达3mm,包括发射器、接收器与控制电路,它是一种压电式传感器,利用电致伸缩现象而制成。在压电材料切片上(如石英晶体、压电陶瓷、钛酸铅钡等)施加交变电压,使它产生电致伸缩振动而产生超声波。当外加交变电压的频率等于晶片的固有频率而产生共振,这时产生的超声波最强。压电式超声波接收器一般是利用超声波发生器的逆效应进行工作的,其结构和超声波发生器基本相同,有时就用同一个换能器兼作发生器和接收器两种用途。当超声波作用到压电晶片上时使晶片伸缩,在晶片的两个界面上便产生交变电荷后转换成电压经放大送到测量电路,最后记录或显示出来。
在这里插入图片描述

电气参数

工作电压DC 5V
工作电流15mA
工作频率40HZ
最远射程4m
测量角度15度
输入触发信号10uS的TTL脉冲
输出回响信号输出TTL电平信号,与射程成正比

基本工作原理

(1)采用 IO 口 TRIG 触发测距,给最少 10us 的高电平信号。
(2)模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;
(3)有信号返回,通过 IO 口 ECHO 输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2;

时序图

在这里插入图片描述
以上时序图表明你只需要提供一个 10uS 以上脉冲触发信号,该模块内部将发出 8 个 40kHz 周期电平并检测回波。一旦检测到有回波信号则输出回响信号。 回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。公式:uS/58=厘米或者 uS/148=英寸;或是:距离= 高电平时间*声速(340M/S)/2;建议测量周期为 60ms 以上,以防止发射信号对回响信号的影响。

接线

ArduinoLCD1602HC-SR04
5VVCCVCC
GNDGNDGND
A4SDA-
A5SCL-
Trig-A2
Echo-A3

程序

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
const int TrigPin = A2;
const int EchoPin = A3;
float cm;

void setup()
{
  lcd.init(); //初始化LCD
  lcd.backlight();  //打开LCD背光
  Serial.begin(9600); //初始化串口
  pinMode(TrigPin, OUTPUT);
  pinMode(EchoPin, INPUT);
}
void loop()
{
  digitalWrite(TrigPin, LOW); 
  delayMicroseconds(2);
  digitalWrite(TrigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPin, LOW);

  cm = pulseIn(EchoPin, HIGH) / 58.0;   //echo time conversion into a distance
  cm = (int(cm * 100.0)) / 100.0;       //keep two decimal places
  Serial.print("Distance:");
  Serial.print(cm);
  Serial.print("cm");
  lcd.setCursor(0,0);
  lcd.print("Distance:");
  lcd.setCursor(9,0);
  lcd.print(cm);
  lcd.setCursor(14,0);
  lcd.print("cm");
  Serial.println();
  delay(1000);
  }

实验结果

通过LCD1602实时显示所测量的距离结果:

在这里插入图片描述

总结

1.测距时,被测物体的面积不少于 0.5平方米且平面尽量要求平整,否则会影响测量结果。
2.如果测试面不是很规则或则测试远距离物体时,可采用多次测量的方法来校正。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Arduino驱动HC-SR04超声波测距 的相关文章

  • Arduino 支持线程吗?

    我有几个任务需要用arduino来做 但其中一个需要很长时间 所以我想使用线程来同时运行它们 我有一个 Arduino Mega 更新 四年后 我终于可以在我的 arduino mega 上安装 FreeRTOS 这里有一个link htt
  • C++ 递减单字节(易失性)数组的元素不是原子的!为什么? (另外:如何在 Atmel AVR mcus/Arduino 中强制原子性)

    由于试图通过一些我不知道的简单内容来调试我的代码 我损失了几天的时间 实际上是大约 25 小时的工作 事实证明 在 AVR ATmega328 8 位微控制器 Arduino 上 用 C 递减单字节数组的元素不是原子操作 并且需要原子访问防
  • 如何使用arduino从sim900模块的RTC读取日期和时间数据?

    include SIM900 h include
  • 如何在 Arduino 上比较 __FlashStringHelper* 和 char*?

    我有一个将文本行输出到串行的板 我需要将这些文本行与我所知道的文本进行比较 本质上 我想做strcmp thestring F knownstring 但是似乎没有一个采用 FlashStringHelper 类型的 strcmp 版本 有
  • Android BLE 扫描与 UUID 过滤器列表混淆

    我正在 Android 移动设备 A 上执行 UUID 过滤扫描 并且有两个测试用例 一个人在另一台 Android 设备 移动设备 b 上使用名为 BLE Scanner 的应用程序来创建具有两个测试服务 每个服务都有自己唯一的 UUID
  • sim800L GPRS 发布请求

    我一直在研究 LoNet 迷你 GSM 模块 SIM800L 并将其与 Arduino 连接 我已插入 SIM 移动卡并且可以连接互联网 通过串行监视器 我可以毫无问题地与它通信 但是当向网络服务器页面发出 GET 或 POST 请求时 它
  • C++ Linux (Ubuntu) 正确写入串行(对于 Arduino)

    我想知道是否有一种标准方法可以与高效的串行设备进行通信 我应该使用标准库吗 如果有 是哪一个 现在我正在摆弄让 LED 根据输入的数字以给定的量亮起 Arduino 代码如下 只是练习一些东西 看我过于简单且低效的测试 include
  • C-如何使用PROGMEM存储和读取char数组

    我有三个字符数组 我不希望 Arduino 将它们存储在SRAM http en wikipedia org wiki Static random access memory 所以我想使用PROGMEM来存储和读入flash http en
  • HM10 ble改变特征值AT命令Arduino

    谁能帮我用AT命令写入特征值 或者如何使用Hm10模块将数据从arduino发送到另一个ble设备 HM10发送AT START后 会通告数据包 并且可以检测服务和特征 但特征值是默认的0x00 如何更改 多次检查数据表 但找不到能够执行相
  • Arduino - 高效地迭代 C 数组

    我有以下数组 PROGMEM prog uint16 t show hide info 4216 8900 4380 580 500 600 500 580 1620 580 500 600 500 580 500 600 480 600
  • pySerial 与 python 2.7 和 3.4 的差异

    我正在开发一个项目 需要通过串口将一些数字从 Windows 10 中的 python 发送到 arduino uno 作为一个简单的测试 我只想通过发送 2 来打开 LED 并通过从命令提示符发送 4 来关闭 LED 尽管我希望最终能够将
  • ESP8266 I2C从机不确认数据

    我有一个 TM4C123 处理器作为 I2C 主处理器 一个 ESP8266 作为从处理器 对于 ESP 我使用的是 Arduino IDE 并在 2 5 2 版安装了 ESP8266 支持 它应该支持 I2C 从模式 但是 我无法让它工作
  • 如何为 Arduino 或类似的微控制器编写 JavaScript 编译器? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我意识到这个问题会引起一些人的注意 并且我意识到 JavaScript 传统上是一种解释性语言 请让我解释一下 我是一名专门从事 We
  • SIM900 GSM/GPRS 未获得正确的 AT+CREG?回答

    我使用的是带有 IComsat SIM900 GSM GPRS 扩展板的 Arduino UNO 使用以下教程 Arduino 实时 GPS 追踪器 http www samaria me uk 2011 12 arduino live g
  • 是否可以在 Arduino 上运行 ZeroMQ

    我想知道是否可以通过 ZeroMQ 与 Arduino 进行通信 我想使用 Arduino 来控制一些设备 并希望将大部分应用程序放在计算机上 为此 如果 Arduino 和控制器可以通过 Zeromq 以及 WiFi 或以太网扩展板进行通
  • 从 iBeacon 接收 BLE 信号到 Bluno(arduino with BLE)

    我想从 iBeacon 到 Bluno 接收 rssi 信号和 UUID Arduino 板具有 BLE 对此有一些疑问 有没有从 BLE 到 BLE 接收 UUID 和 rssi 的解决方案 两个BLE设备可以互相通信吗 我想找一些网站来
  • Arduino串口数据解析

    我正在编写一个应用程序 通过蓝牙用我的 Android 手机控制我的机器人 一切都很顺利 数据得到回显和验证 但我在协议方面遇到了一些问题 特别是我希望我的机器人的轮子在我发送时转动一个命令 例如s 10 100 or s 30 10 数值
  • 当我启动程序时,Arduino IDE (Win10) 崩溃

    我的 Arduino IDE Win10 上的版本为 1 8 12 在启动时崩溃 运行arduino debug exe我收到此错误消息 C Program Files x86 Arduino gt arduino debug exe Se
  • Python串口通信

    我正在开发一个 Arduino 项目 由于内存限制 我将其与 Python 脚本连接起来 在Python方面 我有一个二维矩阵 其中包含各自的x y坐标值 并且在此列表中有26000个坐标对 因此 为了向大家澄清数据结构 pathlist
  • 无法将 minicom 的输出保存到文件中

    当我使用Minicom从串口捕获数据时 我需要将大数据保存到一个文件中 名为minicom cap 但是 如果我按 Ctrl A 和 L 来捕获文件 则失败 没有创建文件 minicom cap之前并不存在 我的下载目录已正确创建 我的操作

随机推荐

  • 贪吃蛇

    C尝试写的贪吃蛇项目 xff08 数组实现 xff09 以后会更新用链表实现贪吃蛇 span class token macro property span class token directive keyword define span
  • Android公司面试题

    Android 面试题及面试经验 我的第一次面试经验 今天来到成都面试 xff0c 面试的是Android xff0c 说实话 xff0c Android并不是我的强项 xff0c 只是在大学期间接触过 第一关人事还可以 xff0c 第二关
  • linux---tcp通信流程以及代码实现

    TCP通信特性 xff1a xff08 在网络版块详细讲解 xff09 面向连接 可靠 面向字节流 TCP通信过程 c 43 43 封装TCP通信 1 include lt iostream gt 2 include lt arpa ine
  • 物联网学习及理解

    物联网学习及理解 xff08 来自一个物联网专业学生的心得 xff09 什么是物联网物联网能做什么一 物联网运用领域二 物联网发展趋势 物联网怎么实现一 局域网内的物联网二 广域网内的物联网 总结 在开始写这篇博客之前 xff0c 我不得不
  • vscode代码格式化快捷键

    Windows xff1a Shift 43 Alt 43 F Linux Ctrl 43 Shift 43 I MacOS Shift 43 Option 43 F
  • 多线程和网络编程(多线程)

    一 多线程 1 进程和线程 进程 xff1a 是正在运行的程序 是系统进行资源分配和调用的独立单位 每一个进程都有它自己的内存空间和系统资源 线程 xff1a 是进程中的单个顺序控制流 xff0c 是一条执行路径 单线程 xff1a 一个进
  • Java八种基本数据类型(图文详解)

    Java八种基本数据类型 Java八种数据类型Java八种数据类型的分类 xff08 图 xff09 基本数据类型分为三大类 数值型 字符型 布尔型 数值型整数类型 xff08 byte short int long xff09 浮点型 f
  • numpy基础用法-学习笔记-task10

    大作业 本次练习使用 鸢尾属植物数据集 iris data xff0c 在这个数据集中 xff0c 包括了三类不同的鸢尾属植物 xff1a Iris Setosa xff0c Iris Versicolour xff0c Iris Virg
  • STM32F103驱动LD3320语音识别模块

    STM32F103驱动LD3320语音识别模块 LD3320语音识别模块简介模块引脚定义STM32F103ZET6开发板与模块接线测试代码实验结果 LD3320语音识别模块简介 基于 LD3320 xff0c 可以在任何的电子产品中 xff
  • Arduino UNO驱动土壤湿度传感器检测

    Arduino UNO驱动土壤湿度传感器检测 简介运行要求Arduino UNO与传感器接线程序展示实践效果总结 简介 本次使用到是这个新款土壤湿度传感器 xff01 这款电容式土壤湿度传感器区别于市面上绝大部分的电阻式传感器 xff0c
  • ESP32使用TCP HTTP访问API接口JSON解析获取数据

    ESP32使用TCP HTTP访问API接口JSON解析获取数据 API接口代码解析获取时间代码烧录效果总结 API接口 单片机常用的API接口基本都是返回的一串JSON格式的数据 xff0c 这里以ESP32联网获取时间信息作为获取API
  • 电池保护板 - 问题归纳

    电池保护板 问题归纳 简介充电锂电池磷酸铁锂电池 放电总结 最近更新日期 xff1a 2023 03 07 简介 电池充放电过程中 xff0c 如果电压 电流或温度等参数不稳定或超出电池的安全范围 xff0c 就会对电池造成损害 xff0c
  • Arduino驱动DS1302显示时钟

    Arduino驱动DS1302显示时钟 前言电气参数经典应用电路接线程序实验结果 前言 目前有许多流行的串行时钟电路 xff0c 例如 DS1302 xff0c DS3231 xff0c DS1307 xff0c PCF8485 等 它们由
  • 计算机网络---应用层以及HTTP协议

    网络层是程序员接触最多的一个层级 xff0c 应用层是层级体系中的最上层的一级 xff0c 是我们做逻辑处理最多的 应用层的功能什么是urlhttp协议 应用层的功能 是程序员写的一个一个解决的实际的问题都是在应用层 xff0c 是做逻辑运
  • 51驱动NRF24L01通信,NRF24L01与TTL转NRF24L01模块通信

    51驱动NRF24L01通信 xff0c NRF24L01与TTL转NRF24L01模块通信 NRF24L01一 简介二 引脚功能描述 程序设计一 对 24L01 的程序编程的基本思路如下 xff1a 二 Tx 与 Rx 的配置过程1 Tx
  • 51单片机驱动K型热电偶 OLED0.96显示

    51单片机驱动K型热电偶 OLED0 96显示 一 基本参数二 接线三 部分代码引脚定义时序对用代码 四 实验现象五 注意事项 一 基本参数 二 接线 K型热电偶 MAX6675 模块引脚说明GNDGND接地 单独供电需要与MCU共地VCC
  • 基于ESP32做低功耗墨水屏时钟

    基于ESP32做低功耗墨水屏时钟 电子墨水屏概述 ESP32实验低功耗电子时钟功能描述接线开发实验结果 电子墨水屏 概述 电子墨水是一种革新信息显示的新方法和技术 和传统纸差异是电子墨水在通电时改变颜色 xff0c 并且可以显示变化的图象
  • STC89C52制作可程控低频信号发生器

    STC89C52制作可程控低频信号发生器 准备工作操作流程关于PCF8591实现构思 相关代码定时器相关代码串口控制频率和LCD显示函数 相关功能现象总结 准备工作 由于51单片机本身并不自带DAC的功能 xff0c 因此需要借助外置模块实
  • Arduino UNO驱动 Si3531A三通道时钟信号发生器

    Arduino UNO驱动 Si3531A三通道时钟信号发生器 Si3531A模块简介模块引脚定义Arduino UNO与模块接线测试代码实验结果 Si3531A模块简介 Si3531A是一个IIC接口可编程时钟信号频率发生器 xff0c
  • Arduino驱动HC-SR04超声波测距

    Arduino驱动HC SR04超声波测距 前言电气参数基本工作原理时序图接线程序实验结果总结 前言 HC SR04超声波测距模块可提供2cm 400cm的非接触式距离感测功能 xff0c 测距精度可达3mm xff0c 包括发射器 接收器