Arduino超声波初始化问题

时间:2013-05-07 14:28:35

标签: initialization arduino sensor

设备:

  • Arduino MEGA 2560
  • 2 x MaxBotix MaxSonar-EZ0

软件(与Ultrasonics有关,绝不是整个程序):

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

1 个答案:

答案 0 :(得分:0)

如果你看一下传感器的特性,你看起来很清楚你需要在Rx为0的情况下启动它们。看看这个link。这很可能是您启动Arduino以使其工作后必须断开传感器的原因。您还需要确保连接了上拉电阻,以避免读数不可靠。