我想要做的是读取值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();
}
}
答案 0 :(得分:0)
它打印了这个,因为我错误地使用了错误的端口。问题解决了。请务必在额外的时间后检查您的连接!