hc - sr04 超声波距离传感器
HC-SR04 超声波距离传感器
超声波传感器是一种传感器,使用高频声音来测量距离。它发出40,000赫兹的超声波(高于人类能听到的)。如果它从它前面的东西反弹,声音将反射回传感器,它可以检测"回声"反射。通过测量发射和回波之间的时间,传感器可以确定与物体的距离。
超声波传感器有4个引脚。两个提供电源。一个是Trig引脚,它从阿杜伊诺取出脉冲,向传感器指示发出超声波脉冲。回声引脚为 Arduino 提供了输入,指示传感器读取的距离。
您可以引用上面的电路图将传感器连接到 Arduino。所附示样代码将通过串行监视器打印出某样东西离传感器前部有多远(工具>串行监视器)。
引脚名称
名字 | 描述 |
---|---|
VCC | 电压电源 (5V) |
Trig | 开始测量的脉冲 |
Echo | 测量高脉冲长度以获得距离 |
GND | 地 |
操作
要开始新的距离测量,TRIG 引脚设置为 10uS 或更高。然后等待,直到ECHO针走高,并计算它保持高(脉冲长度)的时间。ECHO 高脉冲的长度与距离成正比。使用以下表将微秒内的 ECHO 脉冲长度转换为厘米/英寸:
单位 | 距离 |
---|---|
厘米 | 脉冲数 / 58 |
英寸 | 脉冲数 / 148 |
// Read the result:int duration = pulseIn(PIN_ECHO, HIGH);Serial.print("Distance in CM: ");Serial.println(duration / 58);Serial.print("Distance in inches: ");Serial.println(duration / 148);
测量距离函数
float readDistanceCM() {digitalWrite(TRIG_PIN, LOW);//清除trigPin条件delayMicroseconds(2);digitalWrite(TRIG_PIN, HIGH);//设置trigPin HIGH (ACTIVE)为10微秒delayMicroseconds(10);digitalWrite(TRIG_PIN, LOW);int duration = pulseIn(ECHO_PIN, HIGH);//读取ECHO_PIN,返回以微秒为单位的声波传播时间return duration * 0.034 / 2;//声波速度除以2(来回)
}
点击此处仿真开始在线仿真
源代码
/*HC-SR04 Ultrasonic Sensor Example.Turn the LED on when an object is within 100cm range.Copyright (C) 2021, Uri Shaked
*/#define ECHO_PIN 2
#define TRIG_PIN 3void setup() {Serial.begin(115200);pinMode(LED_BUILTIN, OUTPUT);pinMode(TRIG_PIN, OUTPUT);pinMode(ECHO_PIN, INPUT);
}float readDistanceCM() {digitalWrite(TRIG_PIN, LOW);//清除trigPin条件delayMicroseconds(2);digitalWrite(TRIG_PIN, HIGH);//设置trigPin HIGH (ACTIVE)为10微秒delayMicroseconds(10);digitalWrite(TRIG_PIN, LOW);int duration = pulseIn(ECHO_PIN, HIGH);//读取ECHO_PIN,返回以微秒为单位的声波传播时间return duration * 0.034 / 2;//声波速度除以2(来回)
}void loop() {float distance = readDistanceCM();bool isNearby = distance < 100;digitalWrite(LED_BUILTIN, isNearby);Serial.print("Measured distance: ");Serial.println(readDistanceCM());delay(100);
}
每日一句:
是你多么温馨的目光,教我坚毅望着前路,叮嘱我跌倒不应放弃。 – beyond