📜  Arduino超声波测距仪(1)

📅  最后修改于: 2023-12-03 14:39:20.281000             🧑  作者: Mango

Arduino超声波测距仪

Arduino超声波测距仪是一种基于Arduino开发板的测距设备。它通过发射一定频率的超声波并测量其从目标物体反射回来的时间来计算距离。该设备可以用于很多应用领域,如避障、探测距离等。

硬件设备
  • Arduino开发板
  • 超声波传感器
  • 电位器
  • 面包板
  • 杜邦线
程序实现

下面是一个简单的Arduino超声波测距仪的程序

const int trigPin = 9;
const int echoPin = 10;

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  long duration, distance;
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2); 
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10); 
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = duration * 0.034 / 2;
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");
  delay(500);
}

本程序使用Arduino的pulseIn函数对回声信号进行计时。该函数返回收到的脉冲的长度(微秒)。将脉冲长度乘以声音每秒传播千米数(0.034 cm/μs),然后除以2,可以得到物体的距离,因为声波从发射到收到后再到发射器的过程中,声波在空气中的传输速度是一个定值,这个定值即音速,它的值在公制单位下约为 340m/s,由于这个采用倍数制,所以,实际上速度是340m/s Converted to the basic unit, that is 34000cm/1000ms/1000μs = 0.034cm / μs。

接线方式

超声波测距模块VCC接5V电源,TRIG引脚接Arduino的9号脚,ECHO引脚接Arduino的10号脚,GND接GND。使用面包板连接器将它们连接起来。

简单应用

本设备可以用于很多应用领域,如避障、探测距离等。接下来,让我们通过一个简单的应用程序来验证它的有效性。


#define trigPin 9
#define echoPin 10
#define LED 13

void setup() {
 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
 pinMode(LED, OUTPUT);
 Serial.begin(9600);
}

void loop() {
 long duration, distance;
 digitalWrite(trigPin, LOW);
 delayMicroseconds(2);
 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10);
 digitalWrite(trigPin, LOW);
 duration = pulseIn(echoPin, HIGH);
 distance = (duration / 2) / 29.1;
 Serial.print("Distance: ");
 Serial.print(distance);
 Serial.println(" cm");
 if (distance > 30) {
 digitalWrite(LED, HIGH);
 }
 else {
 digitalWrite(LED, LOW); 
 }
 delay(500);
}

本程序使用了一个led灯,灯亮时距离大于30厘米,灯灭时距离小于30厘米。

参考资料

Arduino超声波测距仪