Arduino超声波初始化问题

问题描述 投票:0回答:2

硬件:

  • Arduino MEGA 2560
  • 2 x MaxBotix MaxSonar-EZ0

软件(与超声波相关,绝不是整个程序):

void setup() {
    Serial.begin(9600);

    //Ultrasonic Left
    pinMode(26, OUTPUT);
    pinMode(2, INPUT);
    digitalWrite(26, LOW);

    //Ultrasonic Right
    pinMode(27, OUTPUT);
    pinMode(3, INPUT);
    digitalWrite(27, LOW);
}

void readSonar() {
    digitalWrite(26, HIGH);
    delayMicroseconds(25);
    digitalWrite(26, LOW);
    data[0] = pulseIn(2, HIGH);

    digitalWrite(27, HIGH);
    delayMicroseconds(25);
    digitalWrite(27, LOW);
    data[1] = pulseIn(3, HIGH);

    return data;
}

问题:

  • 当 Arduino 首次启动时,两个超声波传感器的读数不会更新。它们报告为非零值,通常在 500 - 1500 范围内。它们略有波动(很可能是由于电源中的噪声),但往往保持在它们初始化的值附近。
  • 根据这些传感器的数据表,在初始化阶段,传感器周围 14 英寸范围内没有障碍物。
  • 只需断开并重新连接到传感器的电缆(从传感器背面,而不是直接连接到 Arduino 输入),我就可以立即从传感器接收准确的读数。

以前有人遇到过这个问题吗?从我看到的示例来看,我的 setup() 函数看起来“正常”。为了解决这个问题,我为两个传感器的活动线连接了一个开关。这样 Arduino 就可以启动,然后我就可以给传感器供电。对我来说,这似乎是一个拙劣的解决方法,如果有人能够提供的话,我想要一个硬编码的软件解决方案!

initialization arduino sensors
2个回答
0
投票

如果您查看传感器的特性,很明显您需要在 Rx 为 0 的情况下启动它们。请查看此链接。这很可能就是启动 Arduino 后必须断开传感器连接才能使其工作的原因。您还需要确保连接了上拉电阻,以避免读数不可靠。


0
投票

开机时超声波传感器的行为异常。因此,在完成设置代码之前,我调用了以下例程。可能不需要耗尽 10 个回声,但这非常快,所以谁在乎 - 它起作用了!...

// mostly to discard first few echos which may be junk
void InitializeSonicSensor()
{
    for (int i = 1; i <= 10; i = i + 1) {
      a=srAPPROACH.Distance();
      delay(50);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.