콘텐츠로 이동

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);
}

⚠️ 주의할 점

  1. 측정 범위: 2cm ~ 400cm (너무 가깝거나 멀면 부정확)
  2. 부드러운 천/각진 물체: 초음파가 흩어져 오차 발생

✅ 점검하기

  1. 왜 58로 나누나요?
정답 확인 소리 속도(340m/s)와 왕복 거리를 고려한 상수예요.
  1. 측정값이 계속 달라지는 이유는?
정답 확인 센서 특성상 약간의 오차가 있어요. 여러 번 측정 후 평균을 내면 안정적!

🔗 다음 장 미리보기

다음 장: 측정 오차를 줄이는 평균값 필터링 기법을 배워요! 📊