一、实验准备:
1、查阅相关资料,了解本次实验所用到的引脚、接口的相关知识。
2、准备Arduino板(本次实验所用到的型号为mega2560)、超声波测距模块、杜邦公母线。
二、实验操作:
1、将超声波的Vcc,Trig ,Echo,GND引脚用杜邦线分别与接口+5,GDN,数字引脚2,3相连。
2、将Arduino连上主机,打开IDE,在工具选项卡中设置对应的开发板(mega2560)和一个端口。
3、验证代码并上传代码至Arduino。
三、以下为我本次实验的运行代码
#define TrigPin 2 #define EchoPin 3 float Value_cm; void setup() { Serial.begin(9600); //初始化 pinMode(TrigPin, OUTPUT); pinMode(EchoPin, INPUT); } void loop() { digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin delayMicroseconds(2); digitalWrite(TrigPin, HIGH);//输入高电平 delayMicroseconds(10); digitalWrite(TrigPin, LOW);//输入低电平 Value_cm = float( pulseIn(EchoPin, HIGH) * 17 ) / 1000; //读取一个引脚的脉冲(HIGH或LOW)。例如,如果value是HIGH,pulseIn()会等待引脚变为HIGH,开始计时,再等待引脚变为LOW并停止计时。 //接收到的高电平的时间(us)*340m/s/2=接收到高电平的时间(us)*17000cm/1000000us = 接收到高电平的时间*17/1000(cm) Serial.print(Value_cm); Serial.println("cm"); delay(1000); //等待一秒钟 }
四、心得:
在开始超声波测距的时候,我还不清楚怎么找,就在百度博客园中搜了一篇关于超声波测距的博客。但是看了一会后,别人才告诉我,我看的并不是arduino的。然后就打开他给我们的推文,重新开始了超声波测距的测试。还要看清楚是不是相符合的。
开始还不知道代码中宏定义TrigPin EchoPin是什么意思。但是后来想起之前在博客园中找到的超声波测距的博客中(不是Arduino),代码中PinMode(TrigPin,OUTPUT) PinMode(EchoPin,INPUT)正是与超声波的测距原理相对应。TrigPin应该就是要给它一个输出电平,当它输出一个高电平时,就启用了SR04这个模块。也就同时开启了计时器。并且这个模块会自动循环发射8个40KHz的声波之后,
当接收器接收到后,就Echopin将收到的回响信号输出。之后通过模块中的计算代码得出距离。
如果有错误的还请大佬们指正。慢慢来,加油!
原文:https://www.cnblogs.com/fys2635858969/p/14539290.html