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可以启动,然后我可以给传感器供电。这对我来说似乎是一个拙劣的解决方法,如果有人能够提供的话,我想要一个硬编码的软件解决方案!

4

1 回答 1

0

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

于 2013-05-09T04:11:27.547 回答