stm32超声波测距代码

news2024/11/26 12:34:48

操作思路:

 初始化时将trigecho端口都置低,首先向给trig 发送至少10 us的高电平脉冲(模块自动向外发送840K的方波),然后等待,捕捉 echo 端输出上升沿,捕捉到上升沿的同时,打开定时器开始计时,再次等待捕捉echo的下降沿,当捕捉到下降沿,读出计时器的时间,这就是超声波在空气中运行的时间,按照 测试距离=(高电平时间*声速(340M/S))/2 就可以算出超声波到障碍物的距离。

 

编程步骤

1.配置好相应GPIOTrigEcho引脚

2.配置定时器,开启中断,并记录中断产生次数

3.给模块TRIG端口发送大于10us的高电平信号,发出回响信号时,Echo端呈现高电平,此时打开定时器计时;当收到回响信号时,Echo端呈现低电平,此时关闭定时器。

4.获取Echo高电平时间,利用相关公式计算出距离 dis = (高电平时间*声速(340M/S)/2(取平均值获取更精准数据)

正常距离 亮绿灯

有障碍 亮红灯 蜂鸣器报警

串口显示距离

#include "led.h"
#include "delay.h"
#include "ultrasonsic.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "beep.h"

 int main(void)
 {     
                
    float length;           

    delay_init();            
    uart_init(115200); //初始化串口,波特率115200     
    LED_Init();    //初始化LED        
    BEEP_Init();//初始化蜂鸣器 
    initHcsr04();                                     
    LED0 = 1;//上电默认绿灯亮
        
    while(1){
            
        length=Hcsr04GetLength();    //获取距离
        printf("dis = %fcm\r\n",length);//串口打印距离
        delay_ms(50);
        if(length < 10){//小于10cm亮红灯绿灯灭
            LED0 = 0;
            LED1 = 1;
            BEEP = 1;    
            delay_ms(300);
                
        }else{
            LED0 = 1;
            LED1 = 0;
            BEEP = 0;
        }
            
    }

    } 
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/621455.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(附源码)python音乐电台推荐系统的设计与实现 毕业设计 301210

音乐电台推荐系统 摘 要 随着人类向信息社会的不断迈进&#xff0c;风起云涌的信息时代正掀起一次新的革命&#xff0c;同时计算机网络技术高速发展&#xff0c;网络管理运用也变得越来越广泛。因此&#xff0c;建立一个B/S结构的音乐电台推荐系统来管理音乐电台信息&#xff0…

OpenAI 接口文档-(中文版)-(一)

介绍 Introduction 您可以通过来自任何语言的 HTTP 请求、我们的官方 Python 绑定、我们的官方 Node.js 库或社区维护的库与 API 进行交互。 若要安装官方 Python 绑定&#xff0c;请运行以下命令&#xff1a; pip install openai 要安装官方的 Node.js 库&#xff0c;请在 No…

chatgpt赋能python:Python将空格改为换行符

Python将空格改为换行符 在Python编程中&#xff0c;经常需要对字符串进行处理&#xff0c;其中包括将空格替换为换行符。这篇文章将会介绍如何使用Python来实现这个目标&#xff0c;并分享一些关于字符串处理的技巧。 为什么要将空格改为换行符 将空格改为换行符可以让文本…

chatgpt赋能python:Python屏蔽一段代码

Python屏蔽一段代码 在Python编程中&#xff0c;有时我们需要屏蔽一段代码以便于调试或者测试。在很多情况下&#xff0c;我们可能不想删除这段代码&#xff0c;因为需要在将来的某个时间再次使用它。为了解决这个问题&#xff0c;我们可以使用Python中的注释语句或者条件语句…

Vue3中集成Unreal 5.2 像素流(Pixel Streaming插件)

目录 1. 创建一个Unreal项目2. 启用Pixel Streaming插件3. 下载Unreal 5.2对应的Pixel Streaming Infrastructure4. 创建一个Vue项目5. 推流方式一&#xff1a;使用Unreal Engine 5.26. 推流方式二&#xff1a;打包项目参考资源&#xff1a; 1. 创建一个Unreal项目 默认大家都…

机器人的免费使用方法

目录 一、机器人是什么&#xff1f; 二、机器人免费使用的方法&#xff1a; 第一点&#xff1a;电脑端 第二点&#xff1a;手机端 三、结语&#xff1a; 一、机器人是什么&#xff1f; 博主理解&#xff1a;方便生活&#xff0c;比Siri更加高级&#xff0c;能够智能的对我们…

chatgpt赋能python:Python就业前景分析

Python就业前景分析 Python已成为全球最流行的编程语言之一&#xff0c;因其易学、易用、高效、可扩展性强等特点&#xff0c;Python在各个领域都发挥着重要作用。Python的发展和应用迅猛&#xff0c;拥有Python编程经验的工程师在各个领域都面临着广泛的就业机会。 Python的…

推荐一个Edge浏览器中的一个好用问答插件。

目录 ChatGPT介绍:一、ChatGPT是什么?二、ChatGPT发展:三、ChatGPT 优点:四、Edge浏览器插件五、结语: ChatGPT介绍: 一、ChatGPT是什么? ChatGPT 是一个基于语言模型 GPT-3.5 的聊天机器人&#xff0c;ChatGPT模型是Instruct GPT的姊妹模型&#xff08;siblingmodel&#x…

Sql Server 自动备份

Sql Server 自动备份 文章目录 Sql Server 自动备份1. 打开SQL Server&#xff0c;在管理下找到”维护计划”&#xff0c;右键点击”维护计划向导”&#xff0c;如图&#xff1b;2. 再次点击维护计划向导3. 在选择维护任务下勾选”备份数据库”、”清楚维护任务”4.选择需要备份…

ChatGPT应用于软件测试中的切入口(干货!)

以上均为本人原创&#xff0c;转载请说明出处&#xff0c;谢谢&#xff01; 如果您觉得这篇文章还不错的话&#xff0c;请点击关注&#xff0c;转发&#xff0c;再看&#xff1b; 全是干货&#xff0c;话不多说 开搞&#xff01; 1. 测试想法生成器 可以使用ChatGPT技术&…

宝塔反代教程+国内服务器访问openai api接口+502 Bad Gateway问题解决!

前言 宝塔反代教程国内服务器访问openai api接口502 Bad Gateway问题解决! 此方法最简单快捷&#xff0c;没有复杂步骤&#xff0c;不容易出错&#xff0c;即最简单&#xff0c;零代码、零部署的方法。 实现前提 一台海外VPSOpenAI官方的API_KEYChatGPT网站系统源码 ChatGP…

手机上谷歌的方法有哪些

google的方法 一般情况下&#xff0c;我们打开谷歌都是提示无法显示页面的&#xff0c;如图 先百度搜索下载一个能切换IP地址的软件 下载压缩包客户端到桌面上(没安装winRAR的童鞋请安装一下) 把客户端解压到桌面&#xff0c;双击里面的exe文件 输入注册好的账户和密码&#xf…

Spring项目启动报错java.lang.NoClassDefFoundError : javax/xml/soap/SOAPException

文章目录 1.背景2.原因3.解决办法4.参考资料 1.背景 今天&#xff0c;在新设备上启动一个之前的项目的时候&#xff0c;发现启动不了了&#xff0c;报错 java.lang.NoClassDefFoundError : javax/xml/soap/SOAPException2.原因 网上查询了一下&#xff0c;大概的原因就是因为…

bert预训练梳理

BERT (Bidirectional Encoder Representation Transformers) 是在2018年由Google AI 团队发布的&#xff0c;虽然在此前刚发布不久的ELMo模型已经相比过去带来了很大的改善&#xff0c;但是BERT在各主流任务上取得的成绩仍然是一个质的飞跃。可以说&#xff0c;此后2-3年陆续出…

线程的start方法剖析

线程的start方法剖析 public synchronized void start() {if (threadStatus&#xff01;0)throw new IllegalThreadStateException();group.add(this);boolean started false;try {start0();started true;} finally {try {if (&#xff01;started){group.threadStartFailed…

javascript基础三十一:web常见的攻击方式有哪些?如何防御?

一、是什么 Web攻击&#xff08;WebAttack&#xff09;是针对用户上网行为或网站服务器等设备进行攻击的行为 如植入恶意代码&#xff0c;修改网站权限&#xff0c;获取网站用户隐私信息等等 Web应用程序的安全性是任何基于Web业务的重要组成部分 确保Web应用程序安全十分重…

安裝系列 之《Ubuntu 22.04 Mysql 8.0 在线安装和设置静态IP》

为了以后我能直接用&#xff0c;特此记录下来&#xff0c;方便你我他。 开始安装 apt-get update sudo apt install mysql-server -y输入命令&#xff0c;直接安装 输入 mysql --version 就可以看到版本 然后&#xff0c;开始设置默认密码和允许外网访问 sudo mysql -uroot …

异步任务池

Java中的线程池设计得非常巧妙&#xff0c;可以高效并发执行多个任务&#xff0c;但是在某些场景下需要对线程池进行扩展才能更好地服务于系统。例如&#xff0c;如果一个任务仍进线程池之后&#xff0c;运行线程池的程序重启了&#xff0c;那么线程池里的任务就会丢失。另外&a…

Linux 配置系统白名单 gcc/g++

推荐书籍《程序员的自我修养》《深入理解计算机系统》 配置系统白名单 我们在使用普通用户的时候&#xff0c;有些时候需要使用 sudo 指令来对某一条指令直接进行权限提升&#xff0c;因为某一些指令可能因为使用的路径或者其他原因&#xff0c;普通用户没有权限使用这个命令&…

spring boot + minio 分布式文件上传

介绍 1、分布式文件系统 简单理解为&#xff1a;一个计算机无法存储海量的文件&#xff0c;通过网络将若干计算机组织起来共同去存储海量的文件&#xff0c;去接收海量用户的请求&#xff0c;这些组织起来的计算机通过网络进行通信。 好处&#xff1a; 一台计算机的文件系统…