【STM32篇】驱动HC_SR04超声波测距模块

这篇具有很好参考价值的文章主要介绍了【STM32篇】驱动HC_SR04超声波测距模块。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

hc-sr04超声波测距模块,M3,单片机,嵌入式硬件,Powered by 金山文档

CH_SR04

一、简介

1.产品特点

HC_SR04超声波测距模块可提供2cm-400cm的非接触式测距感测功能,测距精度高达3mm;模块包括超声波发射器,接收器与控制电路。

基本工作原理:

(1)采用IO口TRIG触发测距,需要给最少10us的高电平。

(2)模块自动发送8个40kHz的方波,自动检测是否有信号返回。

(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续时间就是超声波从发射到返回的时间。

距离计算公式:uS/58=厘米,uS/148=英尺,距离=高电平时间*声速(340m/s)/2。

建议测量周期为60ms以上,以防止发射信号对回波信号的影响。

注:此模块不易带电连接,若要带电连接,则需将模块的GND先连接,否则容易接线错误影响正常使用。测距时,被测物体的面积不少于0.5平方米且平面尽量要求平整,否则影响测量结果。

2.实物图

VCC:供5V电源

GND:为地线

TRIG:触发控制信号输入

MCHO:回响信号输出

hc-sr04超声波测距模块,M3,单片机,嵌入式硬件,Powered by 金山文档

实物图

3.电气特性

电气参数

HC-SR04超声波模块

工作电压

DC 5V

工作电流

15mA

工作频率

40kHz

最远射程

4m

最近射程

2cm

测量角度

15°

输入触发信号

10uSTTL脉冲

输出回响信号

输出TTL电平信号

规格尺寸

45*20*15mm

4.时序图

hc-sr04超声波测距模块,M3,单片机,嵌入式硬件,Powered by 金山文档

时序图

以上时序图表明只需要提供一个10us以上的脉冲触发信号,该模块内部将发出8个40kHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号,回响信号的脉冲宽度与所测的距离成正比。

hc-sr04超声波测距模块,M3,单片机,嵌入式硬件,Powered by 金山文档

视频演示

以上对HC_SR04超声波测距模块的介绍在说明书中都有介绍。以下开始对HC_SR04进行配置。

二、程序设计

1.准备

硬件:

(1)单片机最小系统(笔者用的是 STM32F103ZET6 开发板)

(2)HC-SR超声波测距模块

(3)0.96寸OLED屏

(4)杜邦线

主芯片相关外设:

(1)RCC时钟

(2)GPIO

(3)TIM定时器

(4)EXTI外部中断

(5)Systick系统滴答定时器

开发环境: KEIL_5

2.硬件连接

HC-SR04超声波模块

TRIG

PD_0

MCHO

PD_1

3.驱动编写

编程思路:

使能GPIO,AFIO,TIM,EXTI。

①TRIG为主机发送触发信号端,可将对应io配置为输出模式,并拉低电平。触发信号:io口输出高电平持续10us以上再输出低电平。

②MCHO为从机输出回响信号端,由主机接收信号,可将对应io配置为输入模式。配置外部中断,检测io电平变化。

③使用TIM6,在MCHO上升沿时启动定时器,记录MCHO高电平持续时间;在下降沿时关闭定时器,并清空计数器,保存高电平持续时间。

④使用TIM7,定时发送触发信号。

⑤配置中断,设置中断优先级,编写中断服务函数。

⑥main函数负责向oled输出实测距离。

(1)GPIO引脚和外部中断配置

void HC_SR04_PinInit(void)
{
    //1.配置GPIO模式
    GPIO_InitTypeDef hc_sr04_gpioInit;
    hc_sr04_gpioInit.GPIO_Pin = GPIO_Pin_1;
    hc_sr04_gpioInit.GPIO_Mode = GPIO_Mode_IPD;        //下拉输入模式
    hc_sr04_gpioInit.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOD,&hc_sr04_gpioInit);
    
    hc_sr04_gpioInit.GPIO_Pin = GPIO_Pin_0;
    hc_sr04_gpioInit.GPIO_Mode = GPIO_Mode_Out_PP;    //通用推挽输出
    GPIO_Init(GPIOD,&hc_sr04_gpioInit);
    HC_SR04_TRIG_0;//拉低电平
    
    //2.配置外部中断
    EXTI_InitTypeDef hc_sr04_extiInit;
    hc_sr04_extiInit.EXTI_Line = EXTI_Line1;
    hc_sr04_extiInit.EXTI_Mode = EXTI_Mode_Interrupt;//中断模式
    hc_sr04_extiInit.EXTI_Trigger = EXTI_Trigger_Rising_Falling;//双边沿对齐
    hc_sr04_extiInit.EXTI_LineCmd = ENABLE;//使能
    EXTI_Init(&hc_sr04_extiInit);
    
    //3.选择外部中断线
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource1);//选择PD1作为外部中断线
    //EXTI_GenerateSWInterrupt(EXTI_Line1);//产生一个软件中断
    EXTI_ClearFlag(EXTI_Line1);//清除挂起标志位
}

(2)TIM配置

/*
    \brief:    基本TIM初始化
    \param:    TIMx: where x can be 1 to 17 to select the TIM peripheral.
                psc:预分频系数
                arr:重装载值
    \retval:    none
*/
static void TIMx_Init(TIM_TypeDef* TIMx,uint16_t psc,uint16_t arr)
{
    //1.复位TIM
    TIM_DeInit(TIMx);
    //2.配置TIM
    TIM_TimeBaseInitTypeDef TIMx_timeBaseInit;
    TIMx_timeBaseInit.TIM_Prescaler = psc-1;                //设置预分频系数为psc
    TIMx_timeBaseInit.TIM_CounterMode = TIM_CounterMode_Up;    //向上计数
    TIMx_timeBaseInit.TIM_RepetitionCounter = 0;            //重复计数值
    TIMx_timeBaseInit.TIM_Period = arr;                        //重装载值
    TIMx_timeBaseInit.TIM_ClockDivision = TIM_CKD_DIV1;
    TIM_TimeBaseInit(TIMx,&TIMx_timeBaseInit);
    //3.中断配置
    TIM_ITConfig(TIMx,TIM_IT_Update,ENABLE);                //使能更新中断
    TIM_ClearFlag(TIMx,TIM_FLAG_Update);                    //清除挂起标志
    //4.失能定时器
    TIM_Cmd(TIMx,DISABLE);
}

(2)配置中断优先级

/*
    \brief:    配置中断优先级
    \param:    NVIC_IRQChannel:中断号
                PreemptionPriority:抢占优先级
                SubPriority:子优先级
    \retval:    none
*/
static void nvic_InitConfig(uint8_t IRQChannel,uint8_t PreemptionPriority,uint8_t SubPriority)
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);//配置优先级分组
    NVIC_InitTypeDef ch_sr04_NVIC_init;
    ch_sr04_NVIC_init.NVIC_IRQChannel = IRQChannel;
    ch_sr04_NVIC_init.NVIC_IRQChannelPreemptionPriority = PreemptionPriority;
    ch_sr04_NVIC_init.NVIC_IRQChannelSubPriority = SubPriority;
    ch_sr04_NVIC_init.NVIC_IRQChannelCmd = ENABLE;    //使能中断
    NVIC_Init(&ch_sr04_NVIC_init);
}

(3)初始化HC_SR04

使用外部中断需要开启AFIO时钟。

触发信号发送周期建议大于60ms,此处为200ms定时发送触发信号。

/*
    \brief:    CH_SR04超声测距模块初始化配置
    \retval:    none
*/
void HC_SR04_Init(void)
{
    //1.打开外设时钟
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE);//使能TIM6
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7,ENABLE);//使能TIM7
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);//使能GPIOD
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//使能AFIO
    //2.GPIO初始化
    HC_SR04_PinInit();
    //3.TIM初始化
    TIMx_Init(TIM6,72,0xFFFF);    //72分频 1us 用于记录MCHO高电平时间
    TIMx_Init(TIM7,720,20000);    //200ms发一次脉冲
    TIM_Cmd(TIM7,ENABLE);
    //4.配置中断优先级
    nvic_InitConfig(EXTI1_IRQn,1,0);
    nvic_InitConfig(TIM6_IRQn,2,0);
    nvic_InitConfig(TIM7_IRQn,3,0);
}
//触发信号
void HC_SR04_TriggerSignal(void)
{
    HC_SR04_TRIG_1;
    Delay_us(20);    //延时10us以上
    HC_SR04_TRIG_0;
}

(4)中断服务函数

为了使用us计数,将TIM6进行72分频,最大计数值为65535us,而MCHO高电平最大持续时间为400*58=23200us,所以将TIM6的重装载寄存器的值设为0xFFFF,完全够用于记录MCHO的高电平持续时间。如果TIM一次计数到溢出所用的时间小于23200us,可定义一个变量记录一次回响信号TIM6进中断的次数,再进行时间计算。

本文中的tim6_IT_count就显得有些多余。

uint16_t tim6_IT_count=0;
//ECHO 中断线服务函数
void EXTI1_IRQHandler(void)
{
    if(RESET != EXTI_GetITStatus(EXTI_Line1))
    {
        EXTI_ClearITPendingBit(EXTI_Line1);//清除中断标志位
        if(HC_SR04_ECHO())                    //上升沿
        {
            TIM_Cmd(TIM6,ENABLE);            //启动定时器
        }    
        else                                //下降沿
        {
            TIM_Cmd(TIM6,DISABLE);            //关闭定时器
            Dist_cm = (tim6_IT_count*0xFFFF+TIM_GetCounter(TIM6))/58.0;//计算距离
            TIM_SetCounter(TIM6,0x00);        //清空计数器
            tim6_IT_count=0;                //计数数清零
        }
    }
}
//基本定时器TIM6 辅助MCHO高电平期间计数
void TIM6_IRQHandler(void)
{
    if(RESET != TIM_GetITStatus(TIM6,TIM_IT_Update))
    {
        TIM_ClearITPendingBit(TIM6,TIM_IT_Update);//清除标志位
        tim6_IT_count++;
    }
}
//基本定时器TIM7 定时发送CH_SR04载波发送
void TIM7_IRQHandler(void)
{
    if(RESET != TIM_GetITStatus(TIM7,TIM_IT_Update))
    {
        TIM_ClearITPendingBit(TIM7,TIM_IT_Update);//清除标志位
        HC_SR04_TriggerSignal();//触发信号
    }
}

三、实验结果

hc-sr04超声波测距模块,M3,单片机,嵌入式硬件,Powered by 金山文档

测量值不会很准确,当测量距离小于2cm时,或者测量斜面时,数值会跳动很大。如果需要增加精准度,可通过排序取中间值或其他方式减小误差。

四、代码

hc_sr04.c


#include "hc_sr04.h"

/*
    配置GPIO
    \pin:        ECHO  -  PD1  触发控制信号
                TRIG  -  PD0  回响信号
*/
#define HC_SR04_ECHO() GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_1)//读取输入电平
#define HC_SR04_TRIG_0 GPIO_ResetBits(GPIOD,GPIO_Pin_0) //写0
#define HC_SR04_TRIG_1 GPIO_SetBits(GPIOD,GPIO_Pin_0)    //写1

float Dist_cm;//测量距离

void HC_SR04_PinInit(void)
{
    //1.配置GPIO模式
    GPIO_InitTypeDef hc_sr04_gpioInit;
    hc_sr04_gpioInit.GPIO_Pin = GPIO_Pin_1;
    hc_sr04_gpioInit.GPIO_Mode = GPIO_Mode_IPD;        //下拉输入模式
    hc_sr04_gpioInit.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOD,&hc_sr04_gpioInit);
    
    hc_sr04_gpioInit.GPIO_Pin = GPIO_Pin_0;
    hc_sr04_gpioInit.GPIO_Mode = GPIO_Mode_Out_PP;    //通用推挽输出
    GPIO_Init(GPIOD,&hc_sr04_gpioInit);
    HC_SR04_TRIG_0;//拉低电平
    
    //2.配置外部中断
    EXTI_InitTypeDef hc_sr04_extiInit;
    hc_sr04_extiInit.EXTI_Line = EXTI_Line1;
    hc_sr04_extiInit.EXTI_Mode = EXTI_Mode_Interrupt;//中断模式
    hc_sr04_extiInit.EXTI_Trigger = EXTI_Trigger_Rising_Falling;//双边沿对齐
    hc_sr04_extiInit.EXTI_LineCmd = ENABLE;//使能
    EXTI_Init(&hc_sr04_extiInit);
    
    //3.选择外部中断线
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource1);//选择PD1作为外部中断线
    //EXTI_GenerateSWInterrupt(EXTI_Line1);//产生一个软件中断
    EXTI_ClearFlag(EXTI_Line1);//清除挂起标志位
}
/*
    \brief:    基本TIM初始化
    \param:    TIMx: where x can be 1 to 17 to select the TIM peripheral.
                psc:预分频系数
                arr:重装载值
    \retval:    none
*/
static void TIMx_Init(TIM_TypeDef* TIMx,uint16_t psc,uint16_t arr)
{
    //1.复位TIM
    TIM_DeInit(TIMx);
    //2.配置TIM
    TIM_TimeBaseInitTypeDef TIMx_timeBaseInit;
    TIMx_timeBaseInit.TIM_Prescaler = psc-1;                //设置预分频系数为psc
    TIMx_timeBaseInit.TIM_CounterMode = TIM_CounterMode_Up;    //向上计数
    TIMx_timeBaseInit.TIM_RepetitionCounter = 0;            //重复计数值
    TIMx_timeBaseInit.TIM_Period = arr;                        //重装载值
    TIMx_timeBaseInit.TIM_ClockDivision = TIM_CKD_DIV1;
    TIM_TimeBaseInit(TIMx,&TIMx_timeBaseInit);
    //3.中断配置
    TIM_ITConfig(TIMx,TIM_IT_Update,ENABLE);                //使能更新中断
    TIM_ClearFlag(TIMx,TIM_FLAG_Update);                    //清除挂起标志
    //4.失能定时器
    TIM_Cmd(TIMx,DISABLE);
}
/*
    \brief:    配置中断优先级
    \param:    NVIC_IRQChannel:中断号
                PreemptionPriority:抢占优先级
                SubPriority:子优先级
    \retval:    none
*/
static void nvic_InitConfig(uint8_t IRQChannel,uint8_t PreemptionPriority,uint8_t SubPriority)
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);//配置优先级分组
    NVIC_InitTypeDef ch_sr04_NVIC_init;
    ch_sr04_NVIC_init.NVIC_IRQChannel = IRQChannel;
    ch_sr04_NVIC_init.NVIC_IRQChannelPreemptionPriority = PreemptionPriority;
    ch_sr04_NVIC_init.NVIC_IRQChannelSubPriority = SubPriority;
    ch_sr04_NVIC_init.NVIC_IRQChannelCmd = ENABLE;    //使能中断
    NVIC_Init(&ch_sr04_NVIC_init);
}
/*
    \brief:    CH_SR04超声测距模块初始化配置
    \retval:    none
*/
void HC_SR04_Init(void)
{
    //1.打开外设时钟
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE);//使能TIM6
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7,ENABLE);//使能TIM7
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);//使能GPIOD
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//使能AFIO
    //2.GPIO初始化
    HC_SR04_PinInit();
    //3.TIM初始化
    TIMx_Init(TIM6,72,0xFFFF);    //72分频 1us 用于记录MCHO高电平时间
    TIMx_Init(TIM7,720,20000);    //200ms发一次脉冲
    TIM_Cmd(TIM7,ENABLE);
    //4.配置中断优先级
    nvic_InitConfig(EXTI1_IRQn,1,0);
    nvic_InitConfig(TIM6_IRQn,2,0);
    nvic_InitConfig(TIM7_IRQn,3,0);
}
//触发信号
void HC_SR04_TriggerSignal(void)
{
    HC_SR04_TRIG_1;
    Delay_us(20);    //延时10us以上
    HC_SR04_TRIG_0;
}
uint16_t tim6_IT_count=0;
//ECHO 中断线服务函数
void EXTI1_IRQHandler(void)
{
    if(RESET != EXTI_GetITStatus(EXTI_Line1))
    {
        EXTI_ClearITPendingBit(EXTI_Line1);//清除中断标志位
        if(HC_SR04_ECHO())                    //上升沿
        {
            TIM_Cmd(TIM6,ENABLE);            //启动定时器
        }    
        else                                //下降沿
        {
            TIM_Cmd(TIM6,DISABLE);            //关闭定时器
            Dist_cm = (tim6_IT_count*0xFFFF+TIM_GetCounter(TIM6))/58.0;//计算距离
            TIM_SetCounter(TIM6,0x00);        //清空计数器
            tim6_IT_count=0;                //计数数清零
        }
    }
}
//基本定时器TIM6 辅助MCHO高电平期间计数
void TIM6_IRQHandler(void)
{
    if(RESET != TIM_GetITStatus(TIM6,TIM_IT_Update))
    {
        TIM_ClearITPendingBit(TIM6,TIM_IT_Update);//清除标志位
        tim6_IT_count++;
    }
}
//基本定时器TIM7 定时发送CH_SR04载波发送
void TIM7_IRQHandler(void)
{
    if(RESET != TIM_GetITStatus(TIM7,TIM_IT_Update))
    {
        TIM_ClearITPendingBit(TIM7,TIM_IT_Update);//清除标志位
        HC_SR04_TriggerSignal();//触发信号
    }
}

hc_sr04.h

#ifndef _HC_SR04_H_
#define _HC_SR04_H_

#include "stm32f10x.h"
#include "systick.h"

extern float Dist_cm;//测量距离 cm

void HC_SR04_Init(void);

#endif

main.c


#include "stm32f10x.h"
#include "hc_sr04.h"
#include "systick.h"
#include "oled.h"
#include <stdio.h>
#include <string.h>
/*
    超声测距实验
*/

int main(void)
{
    /*  相关外设初始化  */
    HC_SR04_Init();        //hc_sr04初始化
    systick_config();    //系统滴答
    OLED_Init();        //oled初始化
    
    uint8_t buff[10];
    while(1)
    {
        snprintf((char *)buff,10,"%0.1f%s",Dist_cm,"cm");    //拼接字符串
        OLED_Display_String(20,16,12,24,buff);                //oled显示字符串
        OLED_Refresh();        //刷新函数
        OLED_GRAM_Init();    //初始化oled缓存
        memset(buff,0,10);    //清零buff
    }
}

其他代码:略。

源码下载:

链接:https://pan.baidu.com/s/1mfZma1C0xWdlEr6bNz4KCg?pwd=1234

提取码:1234

文章如有错误,还望在评论区指正!

2023/1/13文章来源地址https://www.toymoban.com/news/detail-580711.html

到了这里,关于【STM32篇】驱动HC_SR04超声波测距模块的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HC-SR04超声波测距模块使用方法和例程(STM32)

    基于STM32和HC-SR04模块实现超声波测距功能 最近在学STM32做个简单的应用实践一下,顺便水一篇文章。 本文用的单片机是STM32F103C8T6,超声波测距模块是HC-SR04,显示测距结果用的是0.96寸OLED屏模块。 下图中小于10cm时的显示结果有点问题,代码已修复并更新 修复后的结果: 视频

    2024年02月03日
    浏览(19)
  • STM32驱动HC-SR04超声波模块

    本篇文章将带大家使用HAL库驱动HC-SR04超声波模块。超声波模块作为智能小车必备的模块,要学习智能小车的同学是必须掌握好这个模块的使用的。 HC-SR04是一种常用的超声波传感器模块,也被称为超声波测距模块,广泛应用于各种自动化控制和测距系统中。它通常由超声波发

    2024年02月09日
    浏览(18)
  • 【CubeMX配置STM32驱动超声波模块(HC-SR04)】

    一、CubeMX配置STM32 1、选择定时器 选择 输入捕获模式 预分频设置为71,向上计数,自动重装值65535 然后将名字改为 ECHO 2、配置TRIG口 这里的端口使用其它空闲的IO口是可以的,设置为输出模式,其它配置不需要改变,最主要的是 User Label 那儿,需要设置为 TRIG ,因为驱动函数里

    2024年02月02日
    浏览(24)
  • 基于STM32的超声波HC-SR04和红外测距模块测量距离的实验对比(HAL库)

            前言: 本文主要是为了 日常普通场合 下测距做的 对比实验 ,本实验主要包含 2种模块 : 超声波测距模块 (HC-SR04)和 红外测距模块 (SHARP GP2Y0A21YK0F)。两种模块不管是测距原理和编程实验方式都是不相同的,其测距效果也存在很大差异。感兴趣的读者朋友,

    2023年04月27日
    浏览(32)
  • 【arduino】HC-SR04超声波测距模块的驱动与使用

    超声波是振动频率高于20KHZ的机械波。它具有频率高、波长短、绕射现象小、方向性好、能够成为射线而定向传播等特点应用广泛,适合大学生、工程师、技术人员以及电子爱好者等操作。 首先超声波测距模块长这个样 硬件名称:HC-SR04超声波传感器 工作电压:直流(DC):

    2024年02月09日
    浏览(19)
  • 基于STM32F103C8T6(HAL库)的HC-SR501红外人体传感及HC-SR04超声波测距

    一、基于STM32F103C8T6最小系统板和STM32CubeMX实现LED灯循环闪烁 二、基于STM32F103C8T6和STM32CubeMX实现UART串口通信数据收发 三、实战小例程 基于STM32F103C8T6最小系统板和STM32CubeMX驱动WS2812B光立方 四、基于STM32F103C8T6最小系统板HAL库CubeMX驱动HC-SR501红外人体传感模块 五、基于STM32F103C8

    2023年04月17日
    浏览(38)
  • STM32系列(HAL库)——F103C8T6通过HC-SR04超声波模块实现测距

    (1)编程平台:Keil5 (2)CubeMX (3)XCOM(串口调试助手) (1)某宝买的超声波模块   (2)F1的板子,本例使用经典F103C8T6 (3)ST-link 下载器 (4)USB-TTL模块 (5)杜邦线若干 (1)模块简介:         超声波是振动频率高于20kHz的机械波。它具有频率高、波长短、绕射现象小、方向性好、能够成为射

    2024年02月02日
    浏览(20)
  • 基于STM32F103ZET6的(单/三)路HC-SR04超声波测距+TFTLCD实时显示+距离报警

    一、成果图 说明:本程序的源码地址: https://github.com/Lfy-YF/Campus-Project            CSDN下载连接:https://download.csdn.net/download/weixin_58849239/87829470 源码包含四个版本,涉及单路测距、三路测距、增加外部中断(用来版本记录的~) 运行效果: 本程序实现脱机测距,共左中右

    2024年02月11日
    浏览(16)
  • HC-SR04超声波测距模块介绍

    超声波简介       超声波是由机械振动产生的, 可在不同介质中以不同的速度传播, 具有定向性好、能量集中、传输过程中衰减较小、反射能力较强等优点。超声波传感器可广泛应用于非接触式检测方法,它不受光线、被测物颜色等影响, 对恶劣的工作环境具有一定的适应能力

    2023年04月19日
    浏览(22)
  • STM32外设系列—HC-SR04(超声波)

    🎀 文章作者:二土电子 🌸 关注文末公众号获取其他资料和工程文件! 🐸 期待大家一起学习交流! 超声波测距的原理非常简单,超声波发生器在某一时刻发出一个超声波信号,当这个超声波信号遇到被测物体后会反射回来,被超声波接收器接收到。这样只要计算出从发出

    2024年02月09日
    浏览(16)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包