第8篇:ESP32连接超声波HC-SR04测距点亮LED无源喇叭播放声音

news2024/11/16 7:29:56

第1篇:Arduino与ESP32开发板的安装方法

第2篇:ESP32 helloworld第一个程序示范点亮板载LED

第3篇:vscode搭建esp32 arduino开发环境

第4篇:vscode+platformio搭建esp32 arduino开发环境

第5篇:doit_esp32_devkit_v1使用pmw呼吸灯实验

第6篇:ESP32连接无源喇叭播放音乐《涛声依旧》

第7篇:ESP32连接按钮点亮LED无源喇叭播放声音

Arduino提供的 pulseInO函数用于检测指定引脚上脉冲信号的宽度

脉冲宽度测量函数3.3.1

pulseIn()

功能:检测指定引脚上的脉冲信号宽度。

例如当要检测高电平脉冲时,pulseIn()函数会等待指定引脚输入的电平变高在变高后开始计时,直到输入电平变低时,计时停止。pulseln()函数会返回此脉冲信号持续的时间,即该脉冲的宽度。

pulseln()函数还可以设定超时时间。如果超过设定时间仍未检测到脉冲,则会退出 pulseIn()函数并返回0。当没有设定超时时间时,pulseIn()会默认1秒钟的超时时间。

语法:

pulseIn(pin,value)

pulseIn(pin,value, timeout)

参数:

pin,需要读取脉冲的引脚。

value,需要读取的脉冲类型,为 HIGH或 LOW。

timeout,超时时间,单位为微秒,数据类型为无符号长整型。

返回值:换行返回脉冲宽度,单位为微秒,数据类型为无符号长整型。如果在指定时间内没有检测到脉冲,则返回 0。

下面将学习利用 pulseIn()函数和超声波传感器来完成测距工作。超声波是频率高于 20000 Hz的声波,它的指向性强,能量消耗缓慢,在介质中传播的距离较远,因而经常用于测量距离。

超声波传感器的型号众多,这里介绍一款常见的超声波传感器

1SR04超声波传感器

SRO4(图3-6)是利用超声波特性检测距离的传感器。其带有两个超声波探头,分别用做发射和接收超声波。其测量范围是 3~450 cm。

2.超声波测距的工作原理

,超声波发射器向某一方向发射超声波,在发射的同时开始计时:

超声波在容气中传播,途中碰到障物则立即返回,超声波接收器收到反射波即第3童1/0口高级应用停止计时。声波在空气中的传播速度为 340 m/s,根据计时器记录的时间1,兼出发射点距障碍物的距离5.即-340 m/X1/2。这就是所谓的时间差测阳

超声波模块引脚SR04超声波模块有4个引脚,

使用Arduino的数字引脚给 SRO4 模块的 Trig引脚至少10的高电平信号,触发SR04 模块的测距功能。

触发信号10 s的高电平图3-8Arduino发送触发信号如图3-9所示,触发测距功能后,模块会自动发送 8个 40 kHz 的超声波脉并自动检测是否有信号返回。这一步由模块内部自动完成发射探头发出超声波发出8个40 kHz的超声波脉冲

超声波模块发出超声波脉冲,若有信号返回,则 Eeho 引脚会输出高电平,高电平持续的就是超声被从发射到返回的时间。此时可以使用 pulseIn 函数获取测距的结果,并计算出距被测物体的实际距离

连接图: 

 

视频效果:

第8篇ESP32连接超声波HC-SR04点亮LED无源喇叭播放声音_哔哩哔哩_bilibili

第8篇ESP32连接超声波HC-SR04点亮LED无源喇叭播放声音

代码示范:

#include <Arduino.h>

//by txwtech
/*
SR04超声波传感器驱动串口显示检测距离
*/
// put function declarations here:
int myFunction(int, int);
const int TrigPin = 16;
  const int EchoPin = 17;
  const int led_pin = 5;
  float distance_2;

void setup() {
  // put your setup code here, to run once:
  int result = myFunction(2, 3);
   Serial.begin(115200);
  pinMode(TrigPin,OUTPUT);
  pinMode(EchoPin,INPUT);//设置要检测引脚输入的脉冲宽度
  pinMode(led_pin,OUTPUT);
  Serial.println("Ultrasonic sensor value is:");
}

void loop() {
  // put your main code here, to run repeatedly:
   //产生一个10us的高脉冲去触发TrigPin
   digitalWrite(TrigPin,LOW);
   delayMicroseconds(2);
   digitalWrite(TrigPin,HIGH);
   delayMicroseconds(10);
   digitalWrite(TrigPin,LOW);
   //检测脉冲宽度,并计算出距离
   distance_2=pulseIn(EchoPin,HIGH)/58.00;
   if(distance_2<10)
   {
    
   {
      digitalWrite(led_pin,HIGH);
      //tone(13,880,500);
      //tone(13,988,500);
     // tone(13,1109,500);
       tone(13,1175,500);
      tone(13,1319,500);
      tone(13,1480,500);
       tone(13,1175,500);
       tone(13,1319,500);
      delay(2000);
      digitalWrite(led_pin,LOW);
   }
}
   else
   {
    digitalWrite(led_pin,LOW);
    tone(13,0,1);
   }
   Serial.print(distance_2);
   Serial.print("cm");
   Serial.println();
   delay(1000);
  
}

// put function definitions here:
int myFunction(int x, int y) {
  return x + y;
}

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

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

相关文章

【java基础复习】如何理解java中基本数据类型里的自动类型提升和强制类型转换?

自动类型提升强制类型转换注意事项 ❗感谢 &#x1f496; Java是一种强类型语言&#xff0c;这意味着在编写代码时&#xff0c;需要明确指定每个变量的数据类型。我们知道&#xff0c;java中有八大基本数据类型。分别是&#xff1a; 数据类型大小&#xff08;字节数&#xff0…

2024年java面试--多线程(4)

系列文章目录 2024年java面试&#xff08;一&#xff09;–spring篇2024年java面试&#xff08;二&#xff09;–spring篇2024年java面试&#xff08;三&#xff09;–spring篇2024年java面试&#xff08;四&#xff09;–spring篇2024年java面试–集合篇2024年java面试–redi…

BCSP-玄子Share-Java框基础_双系统Redis安装与基础语法

四、Redis 4.1 Redis 简介 Redis 是开源、高性能的key-value数据库&#xff0c;属于 NoSQL 数据库 NoSQL 数据库与关系型数据库 关系型数据库&#xff1a;采用关系模型来组织数据&#xff0c;主要用于存储格式化的数据结构NoSQL 数据库&#xff1a;泛指非关系型数据库&…

力扣|找出和所对应的两数的下标

从零开始刷力扣&#xff08;bushi 题目放在这&#xff1a; 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出和为目标值target的两个整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一…

数电发票开票接口

全电发票&#xff0c;也叫数电发票&#xff0c;全称为全面数字化的电子发票。数电发票是依托可信身份体系和电子发票服务平台&#xff1b;以去介质、去版式、标签化、要素化、授信制、赋码制为基本特征&#xff1b;覆盖全领域、全环节、全要素的全新发票。与纸质发票具有同等法…

tkinter控件样式

文章目录 以按钮为例共有参数动态属性 tkinter系列&#xff1a; GUI初步&#x1f48e;布局&#x1f48e;绑定变量&#x1f48e;绑定事件&#x1f48e;消息框&#x1f48e;文件对话框&#x1f48e;控件样式扫雷小游戏&#x1f48e;强行表白神器 以按钮为例 tkinter对控件的诸…

05-Redis

1、Redis为什么快&#xff1f; 1、纯内存操作 2、单线程可以省去多线程时CPU上下文会切换的时间 3、渐进式ReHash、缓存时间戳 数组需要扩容的时候&#xff0c;他会维护两张hash表&#xff0c;比如第一张的数组长度为6&#xff0c;另一张的数组长度为12&#xff0c;在set和g…

JavaScript中的事件循环(event loop)机制

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 调用栈&#xff08;Call Stack&#xff09;⭐ 消息队列&#xff08;Message Queue&#xff09;⭐ 事件循环&#xff08;Event Loop&#xff09;⭐ 宏任务和微任务⭐ 示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇…

如何取消KEIL-MDK工程中出现的CMSIS绿色图标

如何取消KEIL-MDK工程中出现的CMSIS绿色图标&#xff1f;我以前经常遇到&#xff0c;不知道怎么搞&#xff0c;好像也不影响编译结果。以前问过其他人&#xff0c;但是不知道怎么搞&#xff0c;相信很多人也遇到过。水平有限&#xff0c;表达不清楚&#xff0c;见下图&#xff…

Java 反射调用自己写的对象方法

一、java 反射的定义 定义&#xff1a;JAVA反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意一个方法&#xff0c;这种动态获取、调用对象方法的功能称为java语言的…

JavaScript 中的原型到底该如何理解?

JavaScript作为一个基于原型的OOP&#xff0c;和我们熟知的基于类的面向对象编程语言有很大的差异。如果不理解其中的本质含义&#xff0c;则无法深入理解JavaScript的诸多特性&#xff0c;以及由此产生的诸多“坑”。在讨论“原型”的概念之前&#xff0c;我们先来讨论一下“类…

APS系统设计经验分享(时间推导II - 2023.09)

在前一篇关于APS系统设计分享文章(《APS系统设计经验分享(时间推导 - 2023.03)》)中&#xff0c;我们提到将会分享使用OptaPlanner作为规划引擎开发APS系统过程中&#xff0c;遇到的一些时间相关的设计建议与异常情况分析。后来一直忙于项目工作&#xff0c;直到现在才想起仍欠…

CSS---flex布局

主要记录flex布局的要点以及实例 flex flex父标签的6个属性flex-direction: flex布局的方向flex-wrap: 是否可以换行flex-flow: flex-direction 和 flex-wrap 一起写justify-content&#xff1a;横向对齐方式align-items: 纵向对齐方式align-content: 有换行情况下的纵向对齐方…

DR IP-SoC China 2023 Day演讲预告 | 龙智Perforce专家解析芯片开发中的数字资产管理

2023年9月6日&#xff08;周三&#xff09;&#xff0c;龙智即将亮相于上海举行的D&R IP-SoC China 2023 Day&#xff0c;呈现集成了Perforce与Atlassian产品的芯片开发解决方案&#xff0c;助力企业更好、更快地进行芯片开发。 D&R IP-SoC China 2023 Day 是中国首个…

[论文笔记]ESIM

引言 这是经典论文Enhanced LSTM for Natural Language Inference的笔记。 本篇论文文是建立在自然语言推理(Natural Language Inference,NLI)任务上的。提出了简单的通过基于LSTM的序列推理模型效果到达了当时的SOTA水平。同时基于该模型,在局部推理建模层和推理组合层使用了…

三维模型OBJ格式轻量化压缩在大规模场景的加载和渲染的作用分析

三维模型OBJ格式轻量化压缩在大规模场景的加载和渲染的作用分析 OBJ格式是一种常用的三维模型文件格式&#xff0c;它存储了三维模型的几何信息和纹理坐标等相关属性。在大规模场景中加载和渲染三维模型时&#xff0c;OBJ格式的轻量化压缩对于提高性能和效率起到了重要的作用。…

Java多线程(Thread)详解之启动与中断

在我的前一篇博客中直接介绍了Thread的”五种“打开方式&#xff1a;Thread的”五种“打开方式https://blog.csdn.net/qq_45875349/article/details/132644717?spm1001.2014.3001.5501 但是还没有详细的对Thread类进行说明&#xff0c;这篇博客主要对Thread类进行介绍&#x…

软件产品选型测试POC测试怎么做?

软件poc测试 一、基本概述 软件选型测试是在软件采购的前提或采购过程中&#xff0c;通过对待选软件进行测试比对&#xff0c;筛选出适合的软件。通过对候选的软件进行量化或非量化的横向比对测试&#xff0c;为建设单位选择产品、供货方参加投标提供较直接的依据。 二、测试…

现在的校招面试,管你是不是应届生

作者&#xff1a;小傅哥 博客&#xff1a;https://bugstack.cn 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; 一、他&#xff0c;上来打我&#xff01; 【字节】除了MQ解耦发奖&#xff0c;是否还有比MQ更优的解决方案&#xff1f;【字节】…

算法通关村16关 | 堆与滑动窗口问题结合

1. 堆与滑动窗口问题结合 题目 LeetCode239 给你一个整数数组nums&#xff0c;有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧&#xff0c;你可以看到在滑动窗口内的k个数字&#xff0c;滑动窗口每次只向右移动一位&#xff0c;返回滑动窗口中的最大值。 思路 对于…