2017-05-06 134 views
1

我有一個HC-SR04超聲波傳感器連接到我的Arduino Uno。我遇到的問題是,當我檢查串行監視器以查看傳感器是否正常工作時:無論距離如何,它只表示「超出範圍」。我相信我的距離計算可能會錯誤,因爲RedLED保持打開狀態,蜂鳴器不會熄滅。如何讓超聲波傳感器與Arduino Uno一起正常工作?

這裏是我的.ino代碼:

#define trigPin 6 
#define echoPin 7 
#define RedLED 9 
#define buzzer 3 

int sound = 500; 


void setup() { 
    Serial.begin (9600); 
    pinMode(trigPin, OUTPUT); 
    pinMode(echoPin, INPUT); 
    pinMode(RedLED, OUTPUT); 
    pinMode(buzzer, OUTPUT); 
} 

void loop() { 
    long duration, distance; 
    digitalWrite(trigPin, LOW); 
    delayMicroseconds(2); 
    digitalWrite(trigPin, HIGH); 
    delayMicroseconds(10); 
    digitalWrite(trigPin, LOW); 
    duration = pulseIn(echoPin, HIGH); 
    distance = (duration/5)/29.1; 


    if (distance < 20) { 
    digitalWrite(RedLED, HIGH); 
    sound = 1000; 
} 
else { 
    digitalWrite(RedLED,LOW); 
} 

if (distance > 20 || distance <= 0){ 
    Serial.println("Out of range"); 
    noTone(buzzer); 
} 
else { 
    Serial.print(distance); 
    Serial.println(" cm"); 
    tone(buzzer, sound); 

} 
delay(300); 
} 

回答

0

不能發表評論,所以我會在回答張貼。

檢查您是否已將VCC連接到5v而不是3.3v。
我認爲你的計算是可以的。此外,爲了排除計算,只需輸出持續時間並查看是否更改。