Arduino使用HC-SR04超声波测距

2025-10-21 18:48:00

在开源硬件中,Arduino是非常受欢迎,并且非常容易入门的产品,本文讲述在该开源硬件上使用HC-SR04这款超声波模块来实现距离测量。

方法/步骤

对于距离测试的方法有很多种,而使用超声波来测距是很常见的,下面使用到的超声波模块HC-SR04,可测量范围为2-400cm,下面是其照片如下:

Arduino使用HC-SR04超声波测距

其有4根PIN,分别是VCC、Trig、Echo、GND,将其分别接到Arduino UNO R3板卡的5V、Digital PIN7、Digital PIN8、GND。

硬件连接好后,就是打开Arduino的开发IDE,然后创建文件,将下面的源码保存起来:

int echoPin = 8; 

int trigPin = 7; 

int ledPin = 13; 

void setup() {

    pinMode(ledPin, OUTPUT);

    pinMode(trigPin, OUTPUT);

    pinMode(echoPin, INPUT); 

void loop() {

    long duration, cm;

    digitalWrite(trigPin, LOW);

    delayMicroseconds(2);

    digitalWrite(trigPin, HIGH);

    delayMicroseconds(10);

    digitalWrite(trigPin, LOW);

    duration = pulseIn(echoPin, HIGH);

    cm = msToCm(duration);

    if (cm > 20) {

        digitalWrite(ledPin, LOW);

    } else {

        digitalWrite(ledPin, HIGH);

    }

    delay(500);

long msToCm(long ms) {

    return ms / 29 / 2; 

}

从源码可以看到,每次都从Trig引脚发送一个高电平方波脉冲,然后使用pluseIn()函数读取Echo引脚检测到高电平需要多久,再将该时间值进行转换,即可得到距离值,声音在空气的传播速度为340m/s,那么相当于1ms传播29cm,而上面测试得到的是来回往返的时间差,故而还要减半处理。当得到的距离值超过20cm时,会将UNO板上的L灯灭掉,如果小于该值则亮灯。 

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢