全志H616超声波测距

1. 测距原理基本说明

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

型号:HC-SR04

接线参考:模块除了两个电源引脚外,还有TRIG,ECHO引脚

怎么让它发波 Trig?

给Trig端口至少10us的高电平

怎么知道开始发了 Echo信号?

由低电平跳转到高电平,表示开始发送波 怎么知道接收了返回波 Echo,由高电平跳转回低电平,表示波回来了

怎么算时间 Echo引脚维持高电平的时间?

波发出去的那一下,开始启动定时器 波回来的拿一下,我们开始停止定时器,计算出中间经过多少时间 怎么算距离 距离=速度(340m/s)*时间/2

#include 
#include 
#include 
#include 
#include 
#define Trig 0
#define Echo 1
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;
}

你可能感兴趣的:(全志H616,算法)