Chapter 11: 초음파 센서로 거리 측정하기¶
🎯 이 장에서 배우는 것¶
- [ ] 초음파 센서의 작동 원리를 설명할 수 있다
- [ ] 거리 측정 코드를 실행하고 결과를 확인할 수 있다
⏱️ 예상 학습 시간: 1차시
📚 핵심 개념¶
개념: 초음파 거리 측정¶
비유로 시작해요!
박쥐가 어둠 속에서 날 수 있는 비결, 아시나요? 🦇
"삐익!" 소리를 내고, 벽에 부딪혀 돌아오는 시간을 측정해요.
sequenceDiagram
participant 센서 as 🔊 Trig
participant 물체 as 📦 물체
participant 수신 as 👂 Echo
센서->>물체: 초음파 발사!
물체-->>수신: 반사되어 돌아옴
Note over 센서,수신: 왕복 시간 측정 → 거리 계산
정확한 정의:
- Trig 핀: 초음파를 발사 (방아쇠)
- Echo 핀: 돌아오는 신호 감지
- 거리 공식: 거리(cm) = 왕복시간(μs) ÷ 58
🔨 따라하기¶
Step 1: 회로 연결¶
| HC-SR04 | 아두이노 |
|---|---|
| VCC | 5V |
| Trig | D9 |
| Echo | D10 |
| GND | GND |
Step 2: 코드 업로드¶
코드:
#define TRIG 9
#define ECHO 10
void setup() {
Serial.begin(9600);
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
}
void loop() {
// 초음파 발사
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
// 거리 계산
long duration = pulseIn(ECHO, HIGH);
float distance = duration / 58.0;
Serial.print("거리: ");
Serial.print(distance);
Serial.println(" cm");
delay(500);
}
실행 결과:
거리: 15.3 cm
거리: 15.1 cm
거리: 14.9 cm
💡 손을 센서 앞에서 가까이/멀리 움직여보세요!
📝 전체 코드¶
#define TRIG 9
#define ECHO 10
void setup() {
Serial.begin(9600);
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
}
void loop() {
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
long duration = pulseIn(ECHO, HIGH);
float distance = duration / 58.0;
Serial.print("거리: ");
Serial.print(distance);
Serial.println(" cm");
delay(500);
}
⚠️ 주의할 점¶
- 측정 범위: 2cm ~ 400cm (너무 가깝거나 멀면 부정확)
- 부드러운 천/각진 물체: 초음파가 흩어져 오차 발생
✅ 점검하기¶
- 왜 58로 나누나요?
정답 확인
소리 속도(340m/s)와 왕복 거리를 고려한 상수예요.- 측정값이 계속 달라지는 이유는?
정답 확인
센서 특성상 약간의 오차가 있어요. 여러 번 측정 후 평균을 내면 안정적!🔗 다음 장 미리보기¶
다음 장: 측정 오차를 줄이는 평균값 필터링 기법을 배워요! 📊