全志ARM-超声波测距
创始人
2025-01-07 22:34:52
0

超声波测距模块是用来测量距离的一种产品,通过发送和收超声波,利用时间差和声音传播速度, 计算出模块到前方障碍物的距离

1.测距原理:

给Trig端口至少10us的高电平发送声波,Echo信号,由低电平跳转到高电平,开始发送波;Echo,由高电平跳转回低电平,表示波回来了

计算时间:Echo引脚维持高电平的时间!声波发出去的那一下,开始启动定时器声波回来的拿一下,我们开始停止定时器,计算出中间经过多少时间

计算距离:

距离=速度(340m/s)*时间/2

2. 时间函数

#include int gettimeofday(struct timeval *tv,struct timezone *tz )

gettimeofday()会把目前的时间用tv 结构体返回,当地时区的信息则放到tz所指的结构中

1. timeval 结构体定义:

struct  timeval{         long  tv_sec;  /*秒*/         long  tv_usec; /*微妙*/  };

 2. timezone 结构定义:

struct  timezone{          int tz_minuteswest;/*和greenwich 时间差了多少分钟*/          int tz_dsttime;    /*type of DST correction*/  }:

代码实现:

//计算程序在当前环境中数数10万次耗时多少 #include   #include   //int gettimeofday(struct timeval *tv,struct timezone *tz )  void mydelay()  {  int i,j;  for(i=0;i<100;i++){  for(j=0;j<1000;j++);  }  }  int main()  {  struct timeval startTime;  struct timeval stopTime;  gettimeofday(&startTime,NULL);  mydelay();  gettimeofday(&stopTime,NULL);  long diffTime = 1000000*(stopTime.tv_sec - startTime.tv_sec) +   (stopTime.tv_usec - startTime.tv_usec);  printf("全志H6的Linux数100000耗时%ldus\n",diffTime);  return 0;  }

3.实现超声波实时返回距离

getDistance()函数实现声波测定距离,主函数main()中获取并打印,sleep()控制每次测定距离的间隔

 double getDistance()  {  double dis;  struct timeval start;  struct timeval stop;  pinMode(Trig, OUTPUT);  pinMode(Echo, INPUT);  digitalWrite(Trig ,LOW);  usleep(5);  digitalWrite(Trig ,HIGH);  usleep(10);  digitalWrite(Trig ,LOW);  /*above init CSB*/  while(!digitalRead(Echo));  gettimeofday(&start,NULL);  while(digitalRead(Echo));  gettimeofday(&stop,NULL);  }  long diffTime = 1000000*(stop.tv_sec-start.tv_sec)+(stop.tv_usec -  start.tv_usec);  printf("diffTime = %ld\n",diffTime);  dis = (double)diffTime/1000000 * 34000 / 2;  return dis;    int main(){      double dis;  if(wiringPiSetup() == -1){  fprintf(stderr,"%s","initWringPi error");  exit(-1);  }  while(1){  dis = getDistance();  printf("dis = %lf\n",dis);  usleep(500000);  }  return 0;    }

相关内容

热门资讯

我来教大家!新星游辅助软件免费... 您好,越乡游义乌透视下载安卓这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多...
一分钟了解!欢乐情怀辅助挂(辅... 一分钟了解!欢乐情怀辅助挂(辅助挂)固有有开挂辅助安装(的确有挂);欢乐情怀辅助挂软件透明挂是一个全...
一分钟了解!福建十三水辅助(辅... 一分钟了解!福建十三水辅助(辅助挂)本来有开挂辅助挂(有挂方式)1、首先打开福建十三水辅助最新版本,...
重要通知!万能透视辅助器免费版... 重要通知!万能透视辅助器免费版,雀友会潮汕辅助器,玩家教你(有挂讲解);1.万能透视辅助器免费版 a...
关于!新西部微信辅助,新天道挂... 关于!新西部微信辅助,新天道挂机辅助,安装教程(有挂分享);1、在新西部微信辅助ai机器人技巧中,中...
揭秘几款!南宁友乐辅助(辅助挂... 揭秘几款!南宁友乐辅助(辅助挂)先前有开挂辅助安装(详细教程);是一款可以让一直输的玩家,快速成为一...
记者揭秘!爱来辅助器(辅助挂)... 记者揭秘!爱来辅助器(辅助挂)一贯有开挂辅助平台(讲解有挂)1、用户打开应用后不用登录就可以直接使用...
实测教程!微乐贵阳捉鸡麻将挂软... 实测教程!微乐贵阳捉鸡麻将挂软件,雀神麻雀充运势有用吗,实用技巧(有挂功能)是一款可以让一直输的玩家...
必看攻略!人海大厅挂件怎么买,... 必看攻略!人海大厅挂件怎么买,蜜蜂大厅辅助插件,微扑克教程(有挂教学)是一款可以让一直输的玩家,快速...
普及知识!微乐家乡麻将辅助(辅... 普及知识!微乐家乡麻将辅助(辅助挂)从前有开挂辅助插件(有挂总结);1、很好的微乐家乡麻将辅助工具软...