0

我想要做的是读取值 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();
  }
}
4

1 回答 1

0

它打印了这个,因为我错误地使用了错误的端口。问题解决了。一定要在额外的时间后检查您的连接!

于 2017-07-23T22:16:19.680 回答