【问题标题】:Arduino - Ultrasonic sensor (SR04T) measure only 0Arduino - 超声波传感器 (SR04T) 仅测量 0
【发布时间】:2016-04-23 06:28:41
【问题描述】:

我有一个连接到我的 Arduino 的超声波传感器 (SR04T)。我在 Arduino UNO 上使用 TX 和 RX 端口。问题是它只能读取 0 cm 的值。谁能帮我找出错误?

我使用的代码如下所示:

const int trigPin = 1;
const int echoPin = 0;

void setup() {

  Serial.begin(9600);
}

void loop()
{

  long duration, inches, cm;


  pinMode(trigPin, OUTPUT);
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);


  pinMode(echoPin, INPUT);
  duration = pulseIn(echoPin, HIGH);

  // convert time into cm
  cm = microsecondsToCentimeters(duration);


  Serial.print(cm);
  Serial.print("cm");
  Serial.println();

  delay(100);
}



long microsecondsToCentimeters(long microseconds)
{

  return microseconds / 29 / 2;
}

【问题讨论】:

  • 应该是多少厘米(在您的测试设置中)?你知道传感器在工作吗?
  • 它将在 0 - 250 厘米之间测量。我不确定它是否有效,我刚刚得到它。
  • 您尝试过我提出的修复方法吗?
  • 我还没试过。只要我的 arduino UNO 和超声波传感器在我面前,我就会这样做。我会告诉你它是否有效。

标签: arduino arduino-uno arduino-ultra-sonic


【解决方案1】:

你在这里做错了两件事。

  1. 您正在循环中设置 pinMode。没必要。将它们放入设置中。无需连续设置 pinmode。

  2. 在使用串行时,您将引脚 0 和 1 用于输入和输出。串行使用引脚 0 和 1 进行串行通信。使用其他引脚进行输入和输出。看看http://marcusjenkins.com/wp-content/uploads/2014/06/ARDUINO_V2.png

【讨论】:

  • 我刚开始只是将引脚更改为 7 和 8。看起来修复了它。谢谢。
  • 不知道有没有办法校准它?我确实用 Bosch DLE 70 Professional 测量了距离,它们之间有 2-6 厘米的间隙。
  • 测量然后比较,然后调整直到你测量的结果你也得到了 Arduino。您正在从输入中接收数字。更改您的计算,直到它们与实际距离相关。请记住,您正在使用持续时间,这也可能会关闭。
猜你喜欢
  • 2013-07-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多