초음파 센서로 거리 경보 시스템 만들기¶
🎯 이 장에서 배우는 것¶
- [ ] 거리에 따라 다른 경보음을 내는 프로그램을 작성할 수 있다
- [ ] 연속적인 값을 단계별로 구분하는 알고리즘을 구현할 수 있다
⏱️ 예상 학습 시간: 약 45분
📚 핵심 개념¶
개념: 임계값 기반 단계 분류¶
비유로 시작해요!
신호등을 떠올려 보세요. 🚦
- 초록불 → 안전, 지나가세요
- 노란불 → 주의, 속도를 줄이세요
- 빨간불 → 위험, 멈추세요
거리 경보 시스템도 똑같아요! 측정된 거리를 임계값(기준점)으로 나눠서 단계별로 다른 반응을 만들어요.
flowchart LR
A[거리 측정] --> B{30cm 이상?}
B -->|Yes| C[🟢 안전]
B -->|No| D{15cm 이상?}
D -->|Yes| E[🟡 주의]
D -->|No| F[🔴 위험]
정확한 정의
📖 임계값(Threshold): 상태가 바뀌는 기준점이 되는 값
🔨 따라하기¶
Step 1: 거리 단계 판별 함수 만들기¶
코드:
def get_danger_level(distance):
"""거리에 따라 위험 단계 반환"""
if distance >= 30:
return "safe" # 안전
elif distance >= 15:
return "warning" # 주의
else:
return "danger" # 위험
Step 2: 단계별 경보음 설정¶
코드:
def alert_by_level(level):
"""단계에 따라 다른 경보"""
if level == "safe":
print("🟢 안전 - 경보 없음")
elif level == "warning":
print("🟡 주의 - 삐- 삐-")
else:
print("🔴 위험 - 삐삐삐삐!")
실행 테스트:
# 테스트해보기
test_distances = [50, 20, 10]
for d in test_distances:
level = get_danger_level(d)
print(f"거리: {d}cm")
alert_by_level(level)
print()
실행 결과:
거리: 50cm
🟢 안전 - 경보 없음
거리: 20cm
🟡 주의 - 삐- 삐-
거리: 10cm
🔴 위험 - 삐삐삐삐!
📝 전체 코드¶
# 거리 경보 시스템
def get_danger_level(distance):
"""거리에 따라 위험 단계 반환"""
if distance >= 30:
return "safe"
elif distance >= 15:
return "warning"
else:
return "danger"
def alert_by_level(level):
"""단계에 따라 다른 경보"""
alerts = {
"safe": "🟢 안전 - 경보 없음",
"warning": "🟡 주의 - 삐- 삐-",
"danger": "🔴 위험 - 삐삐삐삐!"
}
print(alerts[level])
# 시뮬레이션 실행
print("=== 거리 경보 시스템 테스트 ===\n")
for distance in [50, 25, 10, 5]:
print(f"📏 측정 거리: {distance}cm")
level = get_danger_level(distance)
alert_by_level(level)
print()
⚠️ 주의할 점¶
임계값 순서가 중요해요!
# ❌ 잘못된 순서
if distance >= 15: # 20cm도 여기서 걸림!
return "warning"
elif distance >= 30: # 절대 실행 안 됨
return "safe"
# ✅ 올바른 순서 (큰 값부터!)
if distance >= 30:
return "safe"
elif distance >= 15:
return "warning"
💡 팁: 조건문은 큰 값 → 작은 값 순서로 검사하세요!
✅ 점검하기¶
- 25cm일 때 어떤 단계인가요?
정답 확인
`warning` (주의) - 15 이상 30 미만이므로- 임계값을 20cm, 10cm로 바꾸려면 어디를 수정하나요?
정답 확인
`get_danger_level` 함수의 숫자를 `30→20`, `15→10`으로 변경🔗 다음 장 미리보기¶
이번 장에서 거리를 단계로 분류하는 법을 배웠어요! 🎉
다음 장에서는 실제 하드웨어와 연결하여 진짜 경보음이 울리는 시스템을 완성해볼 거예요!