失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 树莓派超声波 c语言 树莓派超声波测距+蜂鸣器(c语言)

树莓派超声波 c语言 树莓派超声波测距+蜂鸣器(c语言)

时间:2022-09-28 13:32:48

相关推荐

树莓派超声波 c语言 树莓派超声波测距+蜂鸣器(c语言)

今天我们就来看看怎么把两个模块全都应用起来,做一个防盗装置。

先来看一下各个引脚的连接方式(需要七根母对母的杜邦线):

超声波模块:

1.Vcc:接5V电源(接1号引脚)

2.Trig:输出端口(接16号引脚)

3.Echo:输入端口(接18号端口)

4.Gnd:接地端(接6号端口)

蜂鸣器模块

1.GND 接地引脚(接树莓派14号引脚)

2.I/O 输入输出引脚(接树莓派11号引脚——GPIO.0)

3.VCC 接电源引脚(接树莓派4号引脚)

接下来附上c语言代码:

#include

#include

#include

#define Trig 4

#define Echo 5

#define VOICE 0

void ultraInit(void){

pinMode(Echo,INPUT);

pinMode(Trig,OUTPUT);

pinMode(VOICE,OUTPUT);

}

float disMeasure(void){

struct timeval tv1;

/*

struct timeval{

time_t tv_sec;

suseconds_t tv_usec;

}

*/

struct timeval tv2;

long start=0,stop=0;

digitalWrite(VDICE,LOW);

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;

return (float)(stop - start) / 1000000*34000 / 2;

}

void doVoice(void){

for(int i=1;i<=6;i++){

digitalWrite(VOICE,HIGH);

delay(500);

digitalWrite(VOICE,LOW);

delay(1000);

}

}

int main(){

float dis;

float olddis=0;

if(wiringPiSetup() == -1){

printf("setup wiringPi failed!");

return 1;

}

ultraInit();

while(1){

dis = disMeasure();

printf("disMeasure = %0.2f cm\n",dis);

if(olddis==0){

olddis=dis;

continue;

}else{

int s=dis-olddis;

if(s30){

doVoice();

}

olddis=dis;

}

delay(1000);

}

return 0;

}

我们这个程序的思想为利用超声波测距,记录上一次超声波测距的距离,和本次超声波测距的距离比较,如果距离相差在30cm以上,则蜂鸣器报警。思想和编程都相对简单。

本次实验是在一个新的领域的第一次尝试,以前从来没有接触过基于树莓派的程序开发。刚开始时遇到了许多的问题:

1.树莓派系统烧录错误,当时搞了很长时间。

2.实验器材的选择,对于我来说选择强迫症真是一个可怕的东西,买了一大堆没用的东西回来,包括但不限于3.5寸屏幕、树莓派引脚扩展板、170孔面包板(太小了)、摇杆模块、4*4薄膜键盘、温度传感器、一路继电器、电风扇。开始之前心很大,想做一些了不起的东西,到最后时间不够了才反应过来还是从简单的做起吧

3.公对公、母对母,公对母的杜邦线各40条……根本用不上这么多,QWQ,难受

4.c语言的代码以及教程是真的难找,好不容易找到一篇介绍wiringPi的博客,顿时如获至宝,现在市面上的树莓派教材基本是基于python的,python是一门很好用的语言,但是老师要求使用c语言我也没有办法呀

5.github很有用,但是你要会用。学会合理且优雅的移植代码是一个程序猿的必修课。

作者联系方式:sjtyuemos@ 博客中有什么不懂的问题欢迎来信。

如果觉得《树莓派超声波 c语言 树莓派超声波测距+蜂鸣器(c语言)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。