Arduino 超声波模块


1、注意:超声波模块的有效范围2cm-450cm(300cm以内)。超声波模块直接放在桌面上,距离小于2cm时,会出现数据不准确,例如1187.52cm。

2、代码:

#define TrigPin 2
#define EchoPin 3

float DistanceCM;

void setup()
{
  Serial.begin(9600);
  pinMode(TrigPin, OUTPUT);
  pinMode(EchoPin, INPUT);
}
void loop()
{
  // 低电平  高电平  低电平  发一个短时间脉冲去TrigPin
  digitalWrite(TrigPin, LOW); 
  delayMicroseconds(2);
  digitalWrite(TrigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPin, LOW);

  // 将回波时间换算成cm
  DistanceCM = float( pulseIn(EchoPin, HIGH) * 17 ) / 1000;
  // 读取一个引脚的脉冲(HIGH或LOW)。例如,如果value是HIGH,pulseIn()会等待引脚变为HIGH,开始计时,再等待引脚变为LOW并停止计时。
  // 返回脉冲的长度,单位微秒。如果在指定的时间内无脉冲函数返回。
  // 此函数的计时功能由经验决定,长时间的脉冲计时可能会出错。计时范围从10微秒至3分钟。(1秒=1000毫秒=1000000微秒)
  // 接收到的高电平的时间(us)* 340m/s / 2 = 接收到高电平的时间(us) * 17000 cm / 1000000 us = 接收到高电平的时间 * 17 / 1000  (cm)

  Serial.print(DistanceCM);
  Serial.println("cm");
  delay(1000);
}

 

发表评论

邮箱地址不会被公开。 必填项已用*标注