728x90
이번 시간에는 아두이노와 초음파센서, 피에조 스피커를 사용해서 충돌방지모듈을 만들어보겠습니다.
아래 게시글에서 이어집니다.
https://stickode.tistory.com/1060
1. 준비
아두이노 우노, 초음파 센서, 피에조 부저를 준비합니다.
2. 피에조 부저(Piezo Buzzer)란?
피에조 부저는 톤, 알람 또는 소리를 내는 데 사용되는 전자 장치의 일종입니다. 간단한 구조에 가볍고 저렴한 편이라서 아두이노에서 주로 소형 스피커로 사용됩니다.
3. 회로도
4. 소스 코드
int echo = 8; // 초음파센서 ECHO 핀 번호
int trig = 12; // 초음파센서 TRIG 핀 번호
int spk = 13; // 피에조부저 핀 번호
void setup() {
Serial.begin(9600); // 시리얼 통신을 9600 bps로 초기화
pinMode(trig, OUTPUT); // TRIG 핀을 출력으로 설정
pinMode(echo, INPUT); // ECHO 핀을 입력으로 설정
pinMOde(spk, OUTPUT); // 피에조부저 핀을 출력으로 설정
}
void loop() {
float cycle_time; // 초음파 신호의 왕복 시간을 저장하는 변수
float distance; // 계산된 거리를 저장하는 변수
digitalWrite(trig, HIGH); // 초음파 신호를 생성하기 위해 TRIG 핀을 HIGH로 설정
delay(10); // 10 마이크로초 동안 신호를 유지
digitalWrite(trig, LOW); // TRIG 핀을 LOW로 설정하여 초음파 신호 생성 완료
cycle_time = pulseIn(echo, HIGH); // ECHO 핀에서 초음파의 왕복 시간을 측정하여 저장
// 거리 계산: 초음파는 속도가 340m/s 이므로, 왕복 시간을 거리로 변환 (2로 나누어야 정확한 단일 방향 거리)
distance = ((340 * cycle_time) / 10000) / 2;
Serial.print("Distance:"); // 거리 정보 출력 시작
Serial.print(distance); // 계산된 거리 값 출력
Serial.println("cm"); // 거리 단위인 센티미터(cm) 출력
delay(100); // 100 밀리초(0.1초) 동안 대기.
// 거리에 따라 경고음 발생
// 거리가 20cm 이하일 때부터 경고음 울리기, 가까워질수록 간격이 짧아짐
if (distance <= 20 && distance > 15) {
tone(SPK, 523, 250); // 523Hz의 소리를 0.25초 동안 발생
delay(1000); // 1초 간격으로
} else if (distance <= 15 && distance > 10) {
tone(SPK, 523, 250);
delay(500);
} else if (distance <= 10 && distance > 5) {
tone(SPK, 523, 250);
delay(200);
} else if (distance <= 5) {
tone(SPK, 523, 250);
delay(50);
}
}
5. 실행 영상
'C++' 카테고리의 다른 글
[C++] 아두이노로 적외선 거리측정센서 사용하기 (0) | 2024.03.30 |
---|---|
[C++] 아두이노 조이스틱 모듈 사용하기 (0) | 2024.03.04 |
[C++] 아두이노로 초음파센서 사용하기 (0) | 2024.01.22 |
[C++] 아두이노로 자동 햇빛 가리개 만들기 (0) | 2024.01.13 |
[C++] 아두이노로 조도센서 사용하기 (2) | 2023.12.31 |