超声波工作原理:

难点是测距时用到了时间相关的结构体

 struct timeval  {time_t tv_sec;  //Seconds.秒suseconds_t tv_usec;  //Microseconds.微秒};

测试demo:

#include <stdio.h>
#include <wiringPi.h>
#include <stdlib.h>
#include <sys/time.h>
#define Trig 4
#define Echo 5
void wiringPiInit()
{if(wiringPiSetup()==-1){printf("wiringPi init failed\n");exit(-1);}
}
void UltrasoundInit()
{pinMode(Trig,OUTPUT);pinMode(Echo,INPUT);
}
float disMeasure(void)
{struct timeval tv1;  //timeval是time.h中的预定义结构体 其中包含两个一个是秒,一个>
是微秒/**     struct timeval*         {*                 time_t tv_sec;  //Seconds.*                         suseconds_t tv_usec;  //Microseconds.*                             };*                                 */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()
{float dis;wiringPiInit();UltrasoundInit();printf("init success\n");while(1){dis=disMeasure();printf("distance = %0.2f cm\n",dis);delay(1000);}return 0;
}

运行结果:

树莓派控制超声波模块相关推荐

  1. 树莓派控制超声波传感器

    看到大二的时候有写过关于树莓派控制HC-SR04超声波测距模块的教程,当时并未给出代码(也不知道是什么原因,估计初写博客并不熟悉吧),所以在三年后的今天贴代码出来,给大家参考下. //树莓派控制超声波 ...

  2. 32、树莓派的简单测试串口通信和超声波模块测距

    基本思想:随手记录一下众灵科技树莓派的测试串口通信和超声波模块,其镜像还是很nice,基本的库都给你安装了,比较大 链接:https://pan.baidu.com/s/11tMdoRh3bHmcYz ...

  3. 【树莓派】raspberry pi控制超声波测距

    目录 一.超声波 1.模块介绍 2.工作原理 二.gettimeofday函数 三.树莓派控制超声波测距 一.超声波 1.模块介绍 简介:   超声波传感器模块上面通常有两个超声波元器件,一个用于发射 ...

  4. 树莓派开发之超声波模块

    1.超声波模块介绍 HC-SR04超声波模块基本工作原理: 超声波发射器向某一方向发射超声波,在发射的时刻开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时 ...

  5. hcsr04超声波模块在51单片机中的应用

    型号及功能 HC-SR04超声波测距模块 主要参数 1:使用电压:DC5V 2:静态电流:小于2mA 3:电平输出:+5V 4:电平输出:底0V 5:感应角度:不大于15度 6:探测距离:2cm-45 ...

  6. 树莓派超声波模块测距

    参考:树莓派超声波模块测距及C语言demo 作者:一只青木呀 发布时间: 2020-07-22 16:54:16 网址:https://blog.csdn.net/weixin_45309916/ar ...

  7. STM32超声波模块测距串口输出/通用定时器中断并输出PWM控制舵机/系统定时器延时

    参考:stm32 超声波模块 原理 实现测距 +舵机使用 作者:点灯小哥 发布时间: 2021-03-10 19:37:16 网址:https://blog.csdn.net/weixin_46016 ...

  8. 树莓派控制16路PWM输出的PCA9685模块

    树莓派控制16路PWM输出的PCA9685模块 1.PCA9685 1.1简介 采用I2C通信,内置了PWM驱动器和一个时钟,不需要不断发送信号占用单片机资源 支持16路PWM输出,每路12位分辨率( ...

  9. stm32控制超声波测距模块HC-SR04

    引脚:PB15 TRIG,PB0 ECHO: 不同距离,LED对应不良.闪烁.亮状态,并通过串口发送到PC; TIM3定时中断,测出脉宽长度,没有像野火一样使用捕捉功能: 1.HS-SR04模块实物图 ...

最新文章

  1. Opengl-基本概念-纹理(单纯的颜色太单调弄张图显示不是更好)
  2. SCI论文的时态、主动语句和被动语句总结
  3. CVPR 2018现场见闻
  4. svn之Previous operation has not finished; run ‘cleanup‘ if it was interrupted解决办法
  5. [vue] vue自定义事件中父组件怎么接收子组件的多个参数?
  6. 【转】国密算法sm4 CBC模式加解密
  7. GridMask:SOTA 数据增广方法,显著改进分类、检测、分割效果
  8. 领航机器人广告段子_教育机器人广告宣传语_段子网收录最新段子
  9. ES10新特性_Object.fromEntries---JavaScript_ECMAScript_ES6-ES11新特性工作笔记057
  10. 怎样三天训练出AI围棋大师?教你AlphaGo Zero的3个trick
  11. linux怎么变成windows,如何把Ubuntu 18.04改造成Windows主题界面
  12. java中同步关键字_Java中的同步关键字
  13. 蓝侠==la*uan,破解中国共享软件联盟著名灌水专家“蓝侠””
  14. ANSYS Workbench远端位移边界条件的解析
  15. Pytorch → ONNX → TensorRT
  16. 模式识别—贝叶斯决策理论
  17. 小戴门户站转来的mysql_fetch_array()运用
  18. cms什么意思php,现在的cms和php各有什么优势啊?
  19. docker搭建网站详细
  20. 矩阵求逆的c#代码实现

热门文章

  1. Compilify Alpha阶段测试报告
  2. 聊天机器人突然火了 Line宣布也将开发挑战FB们
  3. Shell脚本中:#!/bin/bash和#!/bin/sh
  4. 笨方法学Python 习题 42: 对象、类、以及从属关系
  5. 3_OpenCV计算矩阵或矩阵表达式的绝对值---cv::abs()
  6. 嵌入式系统软件架构设计
  7. 教师招聘说课视频初中计算机,教师资格证面试说课备考—初中计算机说课稿《工作表》...
  8. mysql中复合主键指什么作用_MySQL中什么是数据表的复合主键
  9. ChatGPT为什么会一本正经胡说八道?我们如何改进它?| 文内附有代码
  10. 几所985高校理工科博士毕业成果要求(2022年更新)