当前位置: 首页 > news >正文

STM32 超声波模块(HC-SR04)

HC-SR04介绍
  1. 典型工作电压:5v        (如果你的超声波模块没有工作,可以看一下是不是电压不够)
  2. 超小静态工作电流:<2mA 
  3.  感应角度:<15°           (超声波模块,是一个范围式的探索,所以在做测速等一些适合直线传播的项目的时候,不建议使用超声波模块)
  4. 探测距离:2cm-400cm
  5. 高精度:可以达到0.3cm
  6. 盲区:2cm              (当物体和超声波模块的距离小于2cm,超声波模块失效)
工作原理
  1. 采用IO触发测距,给至少10us的高电平。
  2. 模块自动发送8个4kHz的方波,自动检测是否有信号返回。
  3. 有信号返回,通过IO输出一高电平,高电平的持续时间就是超声波从发射到返回的时间

测试距离=(高电平时间*声速)/2

因为声音会来回两段,所以要除以二,声速我们一般取340m/s

接口定义

Vcc,Trig(控制端),Echo(接收端),GND

        向Trig发送10us以上的高电平,就可以在Echo等待高电平输出,一有输出就可以打开定时器计时,当Echo变为低电平时,就可以读定时器的值,此时就为此次测距的时间,就可以算出距离,不断周期性的测量,就可以达到你移动测量的值。

思路
  1. IO输出=》Trig,IO输入《=Echo
  2. 给Trig管脚一个>10us的高电平(启动)
  3. 启动后,Echo开启计时器计数,等待检验,进入while(Echo==1),当Echo不等于高电平的啥时候结束while,关掉计时器。
  4. 设开启定时器时间为T1,关闭定时器时间为T2,所得时间T即等于T2-T1,所以测距距离即为(T2-T1)*340/2
代码
配置Echo和Trig
void Echo_Configuration(void)
{GPIO_InitTypeDef GPIO_InitStructure;	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void Trig_Configuration(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStructure);
}	
然后配置TIM2
void TIM2_Count_Configuration(void)
{TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);TIM_TimeBaseStructure.TIM_Period = 0xFFFF;  TIM_TimeBaseStructure.TIM_Prescaler = 71;  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);TIM_Cmd(TIM2, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, DISABLE);
}
在define几个等下用到的函数
#define TRIG_H GPIO_WriteBit(GPIOA,GPIO_Pin_9,Bit_SET)
#define TRIG_L GPIO_WriteBit(GPIOA,GPIO_Pin_9,Bit_RESET)#define ECHO GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_8)
main
int main(void)
{unsigned int time = 0;float distance = 0.00;void Echo_Configuration();void Trig_Configuration();void TIM2_Count_Configuration();RCC_APB2PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);while(1){TIM_Cmd(TIM2,ENABLE);TRIG_H;Delay_us(15);TRIG_L;while(ECHO == 0);TIM_SetCounter(TIM2,0);while(ECHO == 1);TIM_Cmd(TIM2,DISABLE);time = TIM_GetCounter(TIM2);distance = time * 0.017;printf("Distance = %.2fcm\n", distance);Delay_us(1000000);}
}
  1. 配置Echo,Trig和TIM2,使能RCC_APB1Periph_TIM2
  2. TIM_Cmd(TIM2,ENABLE)      使能TIM2
  3. TRIG_H 给TRIG高电平,等待15us,TRIG_L给TRIG低电平
  4. while(ECHO==0)     如果ECHO为低电平,就复位TIM2为0
  5. while(ECHO==1)     如果ECHO为高电平,TIM_Cmd(TIM2,DISABLE);关闭TIM2
  6. time = TIM_GetCounter(TIM2);记录时间为time
  7. 计算距离distance = time * 0.017;

相关文章:

STM32 超声波模块(HC-SR04)

HC-SR04介绍 典型工作电压&#xff1a;5v &#xff08;如果你的超声波模块没有工作&#xff0c;可以看一下是不是电压不够&#xff09;超小静态工作电流&#xff1a;<2mA 感应角度&#xff1a;<15 &#xff08;超声波模块&#xff0c;是一个范围式的探…...

ELK+Filebeat

Filebeat概述 1.Filebeat简介 Filebeat是一款轻量级的日志收集工具&#xff0c;可以在非JAVA环境下运行。 因此&#xff0c;Filebeat常被用在非JAVAf的服务器上用于替代Logstash&#xff0c;收集日志信息。实际上&#xff0c;Filebeat几乎可以起到与Logstash相同的作用&…...

MySql之锁表、锁行解决方案

查询正在使用的表&#xff0c;没有跑业务&#xff0c;一般情况下是锁表了 show open tables where in_use > 0 ;查看进程&#xff0c;可以看到Command类型&#xff08;Sleep为阻塞线程&#xff09; show processlist;kill事务&#xff0c;kill 进程Id kill 8193583;其他 …...

2023年第十六届山东省职业院校技能大赛中职组“网络安全”赛项竞赛正式试题

第十六届山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题 目录 一、竞赛时间 二、竞赛阶段 三、竞赛任务书内容 &#xff08;一&#xff09;拓扑图 &#xff08;二&#xff09;A模块基础设施设置/安全加固&#xff08;200分&#xff09; &#xff08;三&#xf…...

JAVA 整合 AWS S3(Amazon Simple Storage Service)文件上传,分片上传,删除,下载

依赖 因为aws需要发送请求上传、下载等api&#xff0c;所以需要加上httpclient相关的依赖 <dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk-s3</artifactId><version>1.11.628</version> </dependency&…...

记录:Unity脚本的编写9.0

目录 射线一些准备工作编写代码 突然发现好像没有写过关于射线的内容&#xff0c;我就说怎么总感觉好像少了什么东西&#xff08;心虚 那就在这里写一下关于射线的内容吧&#xff0c;将在这里实现射线检测鼠标点击的功能 射线 射线是一种在Unity中检测碰撞器或触发器的方法&am…...

共享单车停放(简单的struct结构运用)

本来不想写这题的&#xff0c;但是想想最近沉迷玩雨世界&#xff0c;班长又问我这题&#xff0c;就草草写了一下 代码如下&#xff1a; #include<stdio.h> #include<math.h> struct parking{int distance;int remain;int speed;int time;int jud; }parking[50]; …...

【Java8系列07】Java8日期处理

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

为什么做CSGO搬砖的不直接去炒股呢?

首先&#xff0c;CS2并非只有一个交易平台&#xff0c;阿阳个人觉得像IGXE等交易平台一样是交易&#xff0c;况且我记得很早的时候我就开始用IGXE了&#xff0c;我记得最早的时候还是机器人发货&#xff0c;后来因为V社对于很多开箱网站的管控&#xff0c;所以让这种发货的方式…...

12月01日,每日信息差//阿里国际发布3款AI设计生态工具//美团买菜升级为“小象超市”//外国人永居证换新、6国游客免签来华

_灵感 &#x1f396; 阿里国际发布3款AI设计生态工具 &#x1f384; AITO问界系列11月交付新车18827辆 &#x1f30d; 美团买菜升级为“小象超市” &#x1f30b; 全球首个金融风控大模型国际标准出炉&#xff0c;由腾讯牵头制定 &#x1f381; 支付宝&#xff1a;支持外国人…...

ChatGPT探索:提示工程详解—程序员效率提升必备技能【文末送书】

文章目录 一.人工智能-ChatGPT1.1 ChatGPT简介1.2 ChatGPT探索&#xff1a;提示工程详解1.2 提示工程的优势 二.提示工程探索2.1 提示工程实例&#xff1a;2.2 英语学习助手2.3 Active-Prompt思维链&#xff08;CoT&#xff09;方法2.4 提示工程总结 三.文末推荐与福利3.1《Cha…...

Pytest做性能测试?

Pytest其实也是可以做性能测试或者基准测试的。是非常方便的。 可以考虑使用Pytest-benchmark类库进行。 安装pytest-benchmark 首先&#xff0c;确保已经安装了pytest和pytest-benchmark插件。可以使用以下命令安装插件&#xff1a; pip install pytest pytest-benchmark …...

Swagger各版本访问地址

2.9.x 访问地址: http://ip:port/{context-path}/swagger-ui.html 3.0.x 访问地址: http://ip:port/{context-path}/swagger-ui/index.html 3.0集成knife4j 访问地址: http://ip:port/{context-path}/doc.html...

docker-compose;私有镜像仓库harbor搭建;镜像推送到私有仓库harbor

docker-compose&#xff1b;私有镜像仓库harbor搭建&#xff1b;镜像推送到私有仓库harbor 文章目录 docker-compose&#xff1b;私有镜像仓库harbor搭建&#xff1b;镜像推送到私有仓库harbordocker-compose私有镜像仓库harbor搭建镜像推送到私有仓库harbor docker-compose D…...

OpenTSDB(CVE-202035476)漏洞复现及利用

任务一&#xff1a; 复现环境中的命令注入漏洞。 任务二&#xff1a; 利用命令注入执行whoami&#xff0c;使用DNS外带技术获取结果 任务三&#xff1a;使用反弹shell&#xff0c;将漏洞环境中的shell反弹到宿主机或者vps服务器。 任务一&#xff1a; 1.搭建好环境 2.先去了…...

Maven无法拉取依赖/构建失败操作步骤(基本都能解决)

首先检查配置文件&#xff0c;确认配置文件没有问题(也可以直接用同事的配置文件(记得修改文件里的本地仓库地址)) 1.file->Invalidate Caches清除缓存重启(简单粗暴&#xff0c;但最有效) 2.刷新maven以及mvn clean&#xff0c;多刷几次&#xff0c;看看还有没有报红的依赖…...

【数据库】数据库并发控制的目标,可串行化序列的分析,并发控制调度器模型

数据库并发控制 ​专栏内容&#xff1a; 手写数据库toadb 本专栏主要介绍如何从零开发&#xff0c;开发的步骤&#xff0c;以及开发过程中的涉及的原理&#xff0c;遇到的问题等&#xff0c;让大家能跟上并且可以一起开发&#xff0c;让每个需要的人成为参与者。 本专栏会定期更…...

带头结点的双向循环链表

目录 带头结点的双向循环链表 1.存储定义 2.结点的创建 3.结点的初始化 4.尾插结点 5.尾删结点 6.头插结点 7.头删结点 8.查找并返回结点 9.在pos结点前插入结点 10.删除pos结点 11.打印链表 12.销毁链表 13.头插结点2.0版 14.尾插结点2.0版 前言&#xff1a; 当…...

2023年11月下旬大模型新动向集锦

2023年11月下旬大模型新动向集锦 2023.12.1版权声明&#xff1a;本文为博主chszs的原创文章&#xff0c;未经博主允许不得转载。 1、微软将向中国大陆开放Windows Copilot服务 据微软发布的消息&#xff0c;微软将在 2023 年 12 月 1 日面向中国大陆的企业和教育机构推出 We…...

有IP没有域名可以申请证书吗?

一、IP证书是什么&#xff1f; ip证书是用于公网ip地址的SSL证书&#xff0c;与我们通常所讲的SSL证书并无本质上的区别&#xff0c;但由于SSL证书通常颁发给域名&#xff0c;而组织机构需要公共ip地址的SSL证书&#xff0c;这类SSL证书就是我们所说的ip证书。ip证书具有安全、…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积

1.题目介绍 给定一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景

Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知&#xff0c;帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量&#xff0c;能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度&#xff0c;还为机器人、医疗设备和制造业的智…...

02.运算符

目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&&#xff1a;逻辑与 ||&#xff1a;逻辑或 &#xff01;&#xff1a;逻辑非 短路求值 位运算符 按位与&&#xff1a; 按位或 | 按位取反~ …...

自定义线程池1.2

自定义线程池 1.2 1. 简介 上次我们实现了 1.1 版本&#xff0c;将线程池中的线程数量交给使用者决定&#xff0c;并且将线程的创建延迟到任务提交的时候&#xff0c;在本文中我们将对这个版本进行如下的优化&#xff1a; 在新建线程时交给线程一个任务。让线程在某种情况下…...