树莓派控制超声波模块
超声波工作原理:
难点是测距时用到了时间相关的结构体
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;
}
运行结果:
树莓派控制超声波模块相关推荐
- 树莓派控制超声波传感器
看到大二的时候有写过关于树莓派控制HC-SR04超声波测距模块的教程,当时并未给出代码(也不知道是什么原因,估计初写博客并不熟悉吧),所以在三年后的今天贴代码出来,给大家参考下. //树莓派控制超声波 ...
- 32、树莓派的简单测试串口通信和超声波模块测距
基本思想:随手记录一下众灵科技树莓派的测试串口通信和超声波模块,其镜像还是很nice,基本的库都给你安装了,比较大 链接:https://pan.baidu.com/s/11tMdoRh3bHmcYz ...
- 【树莓派】raspberry pi控制超声波测距
目录 一.超声波 1.模块介绍 2.工作原理 二.gettimeofday函数 三.树莓派控制超声波测距 一.超声波 1.模块介绍 简介: 超声波传感器模块上面通常有两个超声波元器件,一个用于发射 ...
- 树莓派开发之超声波模块
1.超声波模块介绍 HC-SR04超声波模块基本工作原理: 超声波发射器向某一方向发射超声波,在发射的时刻开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时 ...
- hcsr04超声波模块在51单片机中的应用
型号及功能 HC-SR04超声波测距模块 主要参数 1:使用电压:DC5V 2:静态电流:小于2mA 3:电平输出:+5V 4:电平输出:底0V 5:感应角度:不大于15度 6:探测距离:2cm-45 ...
- 树莓派超声波模块测距
参考:树莓派超声波模块测距及C语言demo 作者:一只青木呀 发布时间: 2020-07-22 16:54:16 网址:https://blog.csdn.net/weixin_45309916/ar ...
- STM32超声波模块测距串口输出/通用定时器中断并输出PWM控制舵机/系统定时器延时
参考:stm32 超声波模块 原理 实现测距 +舵机使用 作者:点灯小哥 发布时间: 2021-03-10 19:37:16 网址:https://blog.csdn.net/weixin_46016 ...
- 树莓派控制16路PWM输出的PCA9685模块
树莓派控制16路PWM输出的PCA9685模块 1.PCA9685 1.1简介 采用I2C通信,内置了PWM驱动器和一个时钟,不需要不断发送信号占用单片机资源 支持16路PWM输出,每路12位分辨率( ...
- stm32控制超声波测距模块HC-SR04
引脚:PB15 TRIG,PB0 ECHO: 不同距离,LED对应不良.闪烁.亮状态,并通过串口发送到PC; TIM3定时中断,测出脉宽长度,没有像野火一样使用捕捉功能: 1.HS-SR04模块实物图 ...
最新文章
- Opengl-基本概念-纹理(单纯的颜色太单调弄张图显示不是更好)
- SCI论文的时态、主动语句和被动语句总结
- CVPR 2018现场见闻
- svn之Previous operation has not finished; run ‘cleanup‘ if it was interrupted解决办法
- [vue] vue自定义事件中父组件怎么接收子组件的多个参数?
- 【转】国密算法sm4 CBC模式加解密
- GridMask:SOTA 数据增广方法,显著改进分类、检测、分割效果
- 领航机器人广告段子_教育机器人广告宣传语_段子网收录最新段子
- ES10新特性_Object.fromEntries---JavaScript_ECMAScript_ES6-ES11新特性工作笔记057
- 怎样三天训练出AI围棋大师?教你AlphaGo Zero的3个trick
- linux怎么变成windows,如何把Ubuntu 18.04改造成Windows主题界面
- java中同步关键字_Java中的同步关键字
- 蓝侠==la*uan,破解中国共享软件联盟著名灌水专家“蓝侠””
- ANSYS Workbench远端位移边界条件的解析
- Pytorch → ONNX → TensorRT
- 模式识别—贝叶斯决策理论
- 小戴门户站转来的mysql_fetch_array()运用
- cms什么意思php,现在的cms和php各有什么优势啊?
- docker搭建网站详细
- 矩阵求逆的c#代码实现
热门文章
- Compilify Alpha阶段测试报告
- 聊天机器人突然火了 Line宣布也将开发挑战FB们
- Shell脚本中:#!/bin/bash和#!/bin/sh
- 笨方法学Python 习题 42: 对象、类、以及从属关系
- 3_OpenCV计算矩阵或矩阵表达式的绝对值---cv::abs()
- 嵌入式系统软件架构设计
- 教师招聘说课视频初中计算机,教师资格证面试说课备考—初中计算机说课稿《工作表》...
- mysql中复合主键指什么作用_MySQL中什么是数据表的复合主键
- ChatGPT为什么会一本正经胡说八道?我们如何改进它?| 文内附有代码
- 几所985高校理工科博士毕业成果要求(2022年更新)