我有一个HC-SR04超声波传感器连接到我的Arduino Uno。我遇到的问题是,当我检查串行监视器以查看传感器是否正常工作时:无论距离有多远,它只显示“超出范围”。我想我可能把距离计算错了,因为RedLED一直亮着,蜂鸣器也没有响。
下面是我的.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);
}发布于 2017-05-07 00:27:25
我不能发表评论,所以我会在回复中发表。
检查您是否已将VCC连接到5v,而不是3.3v。
我认为你的计算是正确的。此外,要排除计算,只需打印持续时间,并查看它是否发生变化。
https://stackoverflow.com/questions/43822077
复制相似问题