Ultrasonic Sensor(HC-SR04) CN

아두위키 : Arduwiki
ArduWiki (토론 | 기여)님의 2025년 3월 27일 (목) 14:46 판 (→‎所需硬件)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

这是一种利用超声波来测量距离的传感器。

根据环境不同,测量范围可能会有误差。

通过以下顺序测量距离: [超声波发射 -> 超声波反射 -> 接收反射的超声波]

传感器工作原理

1. 通过 trig 引脚发射超声波。

2. 超声波发射完成后,echo 引脚保持 HIGH 状态。

3. 当接收到反射的超声波时,echo 引脚变为 LOW。

4. 使用 pulseIn(echoPin, HIGH); 获取超声波往返的时间。

5. 代入公式计算距离。

距离测量公式

超声波速度 340m/s
超声波往返时间 x
与物体的距离 y

规格参数

  • 工作电压:5V
  • 工作电流:15mA
  • 工作频率:40Hz
  • 超声波频率:40kHz
  • 最大测量距离:4m
  • 最小测量距离:2cm
  • 测量角度范围:15 度
  • 触发输入(Trigger Input):10µs TTL 脉冲

所需硬件

  • 超声波传感器(HC-SR04)
  • Arduino开发板
  • 杜邦线

连接方式

Trig 和 Echo 引脚可以任意设置(本文示例中使用 D3 和 D4 引脚)

HC-SR04 Arduino UNO
GND GND
VCC 5V
Trig D3(可更改)
Echo D4(可更改)

示例代码

以下为使用串口监视器查看距离的示例代码。

#define trigPin 3
#define echoPin 4

// 创建变量用于存储超声波往返时间
double pulseTime;

void setup()
{
    // 设置引脚模式
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);
    
    // 设置波特率为 9600
    Serial.begin(9600);
    delay(2000);
    Serial.println("연결 성공");
    delay(500);
    
    // 初始化 trig 引脚
    digitalWrite(trigPin, LOW);
}

void loop()
{
    // 启动超声波发射
    digitalWrite(trigPin, HIGH);
    
    // 持续发射 10 微秒(根据传感器规格)
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);

    // 测量超声波往返时间
    pulseTime = pulseIn(echoPin, HIGH);

    // 计算与物体的距离
    double distance_cm = pulseTime * 17 / 1000;
    double distance_m = distance_cm / 100;

    // 判断是否在有效测量范围内
    if ((distance_cm < 400) && (distance_cm > 2))
    {
        Serial.print("거리(cm) = ");
        Serial.println(distance_cm);
        Serial.print("거리(m) = ");
        Serial.println(distance_m);
        Serial.println("--------------------------------------------------");
    }
    else
    {
        Serial.println("제품 사용 가능범위 초과");
    }
    delay(1000);
}