arduino超声波srf05错误值

时间:2014-12-13 08:35:35

标签: arduino

我的Arduino板是Arduino Due ATmega328p。我的超声波是srf05

我测量的距离是5厘米,但我的序列显示我" 531" .Serial Monitor显示距离int,其值始终为531.为什么?

以下是代码。

#define ECHOPIN 2                            // Pin to receive echo pulse    
#define TRIGPIN 3                            // Pin to send trigger pulse

void setup(){
  Serial.begin(9600);
  pinMode(ECHOPIN, INPUT);
  pinMode(TRIGPIN, OUTPUT);
}

void loop(){
  digitalWrite(TRIGPIN, LOW);                   // Set the trigger pin to low for 2uS
  delayMicroseconds(2);
  digitalWrite(TRIGPIN, HIGH);                  // Send a 10uS high to trigger ranging
  delayMicroseconds(10);
  digitalWrite(TRIGPIN, LOW);                   // Send pin low again
  int distance = pulseIn(ECHOPIN, HIGH);        // Read in times pulse

  distance = distance/58;                        // Calculate distance from time of pulse
  Serial.println(distance);                     
  delay(50);                                    // Wait 50mS before next ranging
}

1 个答案:

答案 0 :(得分:0)

如果srf05没有接收到回波脉冲,则超时。脉冲宽度为30 ms。

30,000 / 58是517,接近531.看起来你的设备没有从对象接收回声。这使您的问题成为硬件问题,而不是编程问题。 (代码看起来是正确的。)