树莓派超声波测距原理及例子

超声波原理

HC-SR04超声波测距模块:
工作电压电流:5V/15mA;
功能:约2cm-400cm的非接触式距离感测功能,测距精度可达高到3毫米;感知角度≤15°,被测物体面积不小于50cm²且平整;
模块:超声波发射器,接收器。
接口:供电VCC、触发信号输入Trig,回响信号输出Echo,地GND;
产品应用领域: 机器人避障 物体测距 液位检测 公共安防 停车场检测 。
在这里插入图片描述
基本工作原理:
(1)采用IO口TRIG触发测距,至少10us的高电平信号,即可发射超声波;
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。
测试距离=(高电平时间*声速(340M/S))/ 2;
在这里插入图片描述

TRIG引脚负责发送超声波脉冲串。此引脚应设置为高电平10μs,此时HC-SR04将以40 kHZ发出8个周期的声波脉冲。发出声波爆发后,ECHO引脚将变为高电平。 ECHO引脚是数据引脚 - 用于进行距离测量。发送超声波脉冲串后, ECHO引脚将变为高电平,它将保持高电平,直到检测到超声波脉冲串为止,此时它将变为低电平。如此不断的周期测,即可以达到你移动测量的值

#include <wiringPi.h>
#include <stdio.h>
#include <sys/time.h>

#define Trig    28
#define Echo    29

void chaoshengboInit(void)
{
    pinMode(Echo, INPUT);//检测波什么时候发什么时候回来设置端口为输入
    pinMode(Trig, OUTPUT);//触发脉冲设置端口为输出
}

float disMeasure(void)//测距原理
{
    struct timeval tv1;
    struct timeval tv2;
    long start, stop;
    float dis;
	
    digitalWrite(Trig, LOW);//先让脉冲处于低平稳
    delayMicroseconds(2);

    digitalWrite(Trig, HIGH);//再拉高
    delayMicroseconds(10);      //发出超声波脉冲
    digitalWrite(Trig, LOW);//拉低至平稳
    
    while ((digitalRead(Echo) != 1));
    gettimeofday(&tv1, NULL);           //获取当前时间,开始接收到返回信号的时候

    while (!(digitalRead(Echo) == 0));
    gettimeofday(&tv2, NULL);           //获取当前时间,最后接收到返回信号的时候
    start = tv1.tv_sec * 1000000 + tv1.tv_usec;   //微秒级的时间,开始发波的时间
    stop  = tv2.tv_sec * 1000000 + tv2.tv_usec;//波返回来的时间
    dis = (float)(stop - start) / 1000000 * 34000 / 2;  //计算时间差求出距离
    return dis;
}

int main(void)
{
    float dis;//用来存放测试的距离

    if (wiringPiSetup() == -1) { //硬件端口初始化
        printf("setup wiringPi failed !");
        return -1; 
    }

    chaoshengboInit();//调用超声波函数
    
    while (1) {//不断地测距
        dis = disMeasure();
        printf("distance = %0.2f cm\n", dis);
        delay(1000);
    }

    return 0;
}

附录

树莓派系统时间获取https://blog.csdn.net/weixin_45880057/article/details/124550905?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167578608116782428626649%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=167578608116782428626649&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-124550905-null-null.142^v73^control_1,201^v4^add_ask,239^v1^insert_chatgpt&utm_term=树莓派timeofday&spm=1018.2226.3001.4187

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值