全志H616——超声波测距小实验

代码如下:详细解析


  1 #include <sys/time.h>
  2 #include <unistd.h>
  3 #include <stdio.h>
  4 #include <stdlib.h>
  5 #include <wiringPi.h>
  6
  7 #define Ting 0
  8 #define Echo 1
  9
 10 double getDistance()
 11 {
 12     double dis;
 13     struct timeval start;
 14     struct timeval stop;
 15
 16     pinMode(Ting,OUTPUT);
 17     pinMode(Echo,INPUT);
 18
 19     digitalWrite(Ting,LOW);
 20     usleep(5);
 21
 22     digitalWrite(Ting,HIGH);
 23     usleep(10);
 24     digitalWrite(Ting,LOW);
 25
 26     //上面是初始化CSB
 27
 28     //下面是读取信号的发送时间节点
 29     while(!digitalRead(Echo));
 30     gettimeofday(&start,NULL);
 31     while(digitalRead(Echo));
 32     gettimeofday(&stop,NULL);
 33
 34
 35     long difftime = 1000000*(stop.tv_sec-start.tv_sec)+(stop.tv_usec-start.tv_usec);//单位是us
 36     dis = (double)difftime/1000000*34000/2;//计算两者距离,单位为厘米
 37     return dis;
 38
 39
 40 }
 41
 42
 43 int main()
 44 {
 45     double data;
 46
 47     if(wiringPiSetup()== -1){//判断wiringpi是否初始化成功
 48     fprintf(stderr,"%s","initWiriPi error");
 49     exit(-1);
 50
 51     }
 52     while(1){
 53         data = getDistance();
 54         printf("distance=%lfcm\n",data);
 55         usleep(500000);
 56     }
 57     return 0;
 58
 59 }

./build.sh csb.c

sudo ./a.out

即可获得图一

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值