1. HC-SR04 센서
DataSheet을 보면서 스펙을 따져보도록 하자.

무려 4m까지 측정이 가능하다고! (진짜...일까..?)
2. 초음파가 거리를 계산하는 방법
우리가 통상적으로 거리를 구할 때 거리는 속도 * 시간으로 알고 있다. 그렇다면 초음파의 속도는 얼마일까?
초음파도 소리이기 때문에 소리의 속도와 일반적으로 같다. (온도에 따라 다르지만) 일반적으로 소리의 속도는 343m/s이기에 초음파의 속도도 343m/라고 한다. 초음파가 물체에 도달하여 다시 돌아오는 원리로 거리를 계산하면 식은 다음과 같다.
거리 = 시간 * 속도 / 2
이를 이용해서 거리를 계산한다.
3. HC-SR04 결선
HC-SR04는 다음과 같다.

5V Vcc와 0V GND, 그리고 Echo, Trig가 있다.
결선표는 다음과 같다.
Vcc | 5V |
GND | GND |
Echo | D3 |
Trig | D2 |
마침 HC-SR04 모듈이 2개가 있길래 그냥 2개 다 연결해보았다.

4. 코드 구현
나는 2가지 센서를 썼기 때문에 핀모드도 4개를 썼다.
const int trigPin1 = 2;
const int echoPin1 = 3;
const int trigPin2 = 4;
const int echoPin2 = 5;
void setup() {
Serial.begin(9600);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
}
void loop() {
long duration1, distance1;
long duration2, distance2;
// 첫 번째 센서
digitalWrite(trigPin1, LOW);
delayMicroseconds(2);
digitalWrite(trigPin1, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin1, LOW);
duration1 = pulseIn(echoPin1, HIGH);
distance1 = duration1 * 0.034 / 2;
// 두 번째 센서
digitalWrite(trigPin2, LOW);
delayMicroseconds(2);
digitalWrite(trigPin2, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin2, LOW);
duration2 = pulseIn(echoPin2, HIGH);
distance2 = duration2 * 0.034 / 2;
// 결과 출력
Serial.print("Sensor 1: "); Serial.print(distance1); Serial.print(" cm, ");
Serial.print("Sensor 2: "); Serial.print(distance2); Serial.println(" cm");
delay(1000); // 1초 간격으로 측정
}
그렇다면 결과는?
꽤 일정하다. 하지만 멀리까지 되는지는 잘 모르겠다.
'Arduino' 카테고리의 다른 글
[Arduino] 4. Arduino Nano 사용해보기 (Mac) (0) | 2024.08.01 |
---|---|
[Arduino] 2. MPU6050 가속도 / 자이로 센서 (2) - 필터 (1) | 2024.07.26 |
[Arduino] 1. MPU6050 가속도 / 자이로 센서 (1) - 구현 (2) | 2024.07.23 |