You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

US-100超声波传感器测距结果恒为零的问题排查与解决

US-100超声波传感器测距结果恒为零问题排查

问题背景

使用US-100超声波传感器时出现测距结果始终为零的问题,已提前确认传感器引脚接线正确。

测试过程

IO触发测距模式测试

最初采用IO触发测距模式测试,运行以下代码未得到有效结果:

const int pingPin = 5; // Trigger Pin of Ultrasonic Sensor
const int echoPin = 6; // Echo Pin of Ultrasonic Sensor

long duration;

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

void loop() {
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(pingPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  Serial.print(duration / 29 / 2);
  Serial.println(" cm");
  delay(300);
}

首次串口模式测试

引入SoftwareSerial.h库尝试用串口模式驱动传感器,依然没有正常输出,一度怀疑传感器硬件损坏。

解决方案

将串口通信引脚更换为12、13号引脚重新测试,成功得到正常测距数据,可用测试代码如下:

#include <SoftwareSerial.h>
const int pin_TX = 12; 
const int pin_RX = 13; 
SoftwareSerial mySerial(pin_RX, pin_TX);
unsigned int HighByte = 0;
unsigned int LowByte  = 0;
unsigned int Len  = 0;

void setup() {
  Serial.begin(9600);
  mySerial.begin(9600);
}

void loop() {
  mySerial.flush();
  mySerial.write(0X55);                           // trig US-100 begin to measure the distance
  delay(500);                                  
  if (mySerial.available() >= 2)                  // check receive 2 bytes correctly
  {
    HighByte = mySerial.read();
    LowByte  = mySerial.read();
    Len  = HighByte * 256 + LowByte;          // Calculate the distance
    if ((Len > 1) && (Len < 10000))
    {
      Serial.print("Distance: ");
      Serial.print(Len, DEC);          
      Serial.println("mm");                  
    }
  }
  delay(1000);                                    
}

内容的提问来源于stack exchange,提问作者nob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 01:06:01