树莓派控制超声波传感器

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

//树莓派控制超声波传感器
//若连续进行,测量周期应该在60ms以上
//通过发射信号到收到回响信号的时间间隔可计算得到距离

#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h>	//提供控制GPIO接口函数
#include <unistd.h>		//提供sleep()函数

int main(void)
{
	int GPIO_TRIGGER=0;	//TRIG触发控制信号输入
	int GPIO_ECHO=1;	//ECHO回响信号输出

	wiringPiSetup();	//使wiringPi可以工作,并使用wiringPi Pin口

	pinMode(GPIO_TRIGGER,OUTPUT);	//
	pinMode(GPIO_ECHO,INPUT);		//

	digitalWrite(GPIO_TRIGGER,0);	//将TRIG设置为低电平

	struct timeval tv;	//

	usleep(1000*500);	//延迟0.5秒

	digitalWrite(GPIO_TRIGGER,1);	//将TRIG设置为高电平
	usleep(10);		//延迟10微妙(us),即提供一个10us以上的脉冲触发信号
	digitalWrite(GPIO_TRIGGER,0);	//将TRIG设置为高电平

	gettimeofday(&tv,NULL);
	unsigned int start=tv.tv_usec;	//获取当前时间
	

	while(GPIO_ECHO==0)
	{

	}
	while(GPIO_ECHO==1)
	{
		//循环,若电平有高变成低,则退出
	}

	gettimeofday(&tv,NULL);
	unsigned int stop=tv.tv_usec;//获取当前时间

	unsigned int time=stop-start;	//ECHO高电平时刻时间减去低电平时刻时间,所得时间为时间间隔
	float dis=(time*0.0343)/(float)(2.0);	//得到距离(厘米)

	digitalWrite(GPIO_TRIGGER,0);
	digitalWrite(GPIO_ECHO,0);		//将端口清零
	
	return 0;
}


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值