超声波测量距离简单实用,本次使用HC SR04超声模块进行讲解,之后把这个模块应用到小车上,进行避障功能应用。模块的实物如下:
超声避障模块-HC SR04
零知标准板
杜邦线若干
接线比较简单,按照如下顺序连线即可:
我们根据模块的原理来进行代码编写,超声测距时的操作时序如下:
编写代码如下,即可测出距离:
/**
* 文件: 超声测距.ino by 零知实验室([url=http://www.lingzhilab.com]www.lingzhilab.com[/url])
* -^^- 零知开源,让电子制作变得更简单! -^^-
* 时间: 2018/10/13 15:29
* 说明:
**/
#define SR04_TRIG 9
#define SR04_ECHO 10
// the setup routine runs once when you press reset:
void setup() {
// put your setup code here, to run once:
pinMode(SR04_TRIG, OUTPUT);
pinMode(SR04_ECHO, INPUT);
Serial.begin(9600);
}
// the loop routine runs over and over again forever:
void loop() {
// put your main code here, to run repeatedly:
int distance = getDistance();
Serial.print("distance = ");
Serial.println(distance);
delay(300);
}
其中getDistance函数实现如下:
//超声测距
int getDistance()
{
digitalWrite(SR04_TRIG, LOW);
delayMicroseconds(2);
digitalWrite(SR04_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(SR04_TRIG, LOW);
int distance = pulseIn(SR04_ECHO, HIGH);
distance = distance/58.0;
return distance;
}
我们把程序上传到零知标准板后,可以测得如下所示距离数据,单位cm:
完整工程