1

我有一个连接到我的 Arduino Uno 的 HC-SR04 超声波传感器。我遇到的问题是当我检查串行监视器以查看传感器是否工作时:无论距离如何,它都只会显示“超出范围”。我相信我的距离计算可能有误,因为 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);
}
4

1 回答 1

0

无法发表评论,所以我将其发布在答案中。

检查您是否已将 VCC 连接到 5v 而不是 3.3v。
我觉得你的计算没问题。另外要排除计算,只需打印持续时间并查看它是否发生变化。

于 2017-05-06T16:27:25.300 回答