硬件:
软件(与超声波相关,绝不是整个程序):
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;
}
问题:
以前有人遇到过这个问题吗?从我看到的示例来看,我的 setup() 函数看起来“正常”。为了解决这个问题,我为两个传感器的活动线连接了一个开关。这样 Arduino 就可以启动,然后我就可以给传感器供电。对我来说,这似乎是一个拙劣的解决方法,如果有人能够提供的话,我想要一个硬编码的软件解决方案!
如果您查看传感器的特性,很明显您需要在 Rx 为 0 的情况下启动它们。请查看此链接。这很可能就是启动 Arduino 后必须断开传感器连接才能使其工作的原因。您还需要确保连接了上拉电阻,以避免读数不可靠。
开机时超声波传感器的行为异常。因此,在完成设置代码之前,我调用了以下例程。可能不需要耗尽 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);
}
}