我的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
}
答案 0 :(得分:0)
如果srf05没有接收到回波脉冲,则超时。脉冲宽度为30 ms。
30,000 / 58是517,接近531.看起来你的设备没有从对象接收回声。这使您的问题成为硬件问题,而不是编程问题。 (代码看起来是正确的。)