2014-12-13 141 views
0

我的Arduino板是Arduino Due ATmega328p。我的超声波是srf05arduino超声波srf05错误值

我测量的距离是5厘米,但我的序列显示我“531”。串行监视器显示距离的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 
} 

回答

0

如果srf05没有收到回波脉冲,超时。脉冲的宽度是30毫秒。

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