我想做的是读取pulseIn(ECHO, HIGH)值,以便最终可以将其转换为厘米,这样我就知道超声波传感器距离物体有多远。然而,当我读取串行监视器中打印的值时,它仅为 3 或 4,并且与超声波传感器距任何物体的距离无关。我什至不明白为什么它会恰好是这两个值或为什么它们之间会发生变化。我不知道如何解决这个问题或是什么原因导致它。不知道是代码问题还是组件问题。然而,这个传感器最近被其他人测试过,然后就起作用了,所以也许只是我做错了。帮忙吗?
#define SPEAKER 11
#define TRIGGER 2
#define ECHO 3
#define SPLIT 40
unsigned long duration;
int alarm1()
{
Serial.print("alarmtest");
analogWrite(SPEAKER, 100);
delay(100);
analogWrite(SPEAKER, 0);
delay(100);
analogWrite(SPEAKER, 100);
delay(100);
analogWrite(SPEAKER, 0);
delay(500);
}
void setup()
{
Serial.begin(9600);
pinMode(SPEAKER, OUTPUT);
pinMode(TRIGGER, OUTPUT);
pinMode(ECHO, INPUT);
}
void loop()
{
digitalWrite(TRIGGER, LOW);
delayMicroseconds(50);
digitalWrite(TRIGGER, HIGH);
delayMicroseconds(50);
digitalWrite(TRIGGER, LOW);
duration = pulseIn(ECHO, HIGH);
delay(200);
Serial.print(duration);
if (duration < SPLIT)
{
// alarm1();
}
}
它打印了这个,因为我错误地使用了错误的端口。问题解决了。请务必在额外时间后检查您的连接!
当我尝试使用 NodeMCU 的 HC-SR04 时,我也遇到了同样的问题。超声波传感器给出的值在 3 至 5 厘米之间。请帮忙