const int echoPin = 3;
const int trigPin = 2;
const int buzzerPin = 12;
void setup()
{
Serial.begin(115200); // 시리얼 통신을 115200 bps로 설정 (컴퓨터와 데이터를 주고 받음)
pinMode(trigPin, OUTPUT); // 트리거 핀을 출력 모드로 설정 (초음파 신호 전송)
pinMode(echoPin, INPUT); // 에코 핀을 입력 모드로 설정 (반사된 초음파 신호 수신)
Serial.println("Distance Measure (Ultrasonic Sensor)"); // 상태 메시지 출력
pinMode(buzzerPin, OUTPUT); // 버저 핀을 출력 모드로 설정
}
void loop()
{
long duration, distance;
// 트리거 핀으로 신호를 전송하여 초음파를 방출
digitalWrite(trigPin, LOW); // 트리거 핀을 LOW로 설정하여 안정화
delayMicroseconds(2); // 2 마이크로초 대기
digitalWrite(trigPin, HIGH); // 트리거 핀을 HIGH로 설정하여 초음파 신호 전송
delayMicroseconds(10); // 10 마이크로초 동안 신호 유지
digitalWrite(trigPin, LOW); // 다시 트리거 핀을 LOW로 설정
// 에코 핀에서 반사된 초음파를 감지하여 시간을 측정
duration = pulseIn(echoPin, HIGH); // 에코 핀에 도착한 신호가 HIGH가 될 때까지의 시간을 측정
// 시간을 거리로 변환 (음속 0.034cm/us를 이용하여 계산, 왕복 시간이므로 나누기 2)
distance = duration * 0.034 / 2;
// 측정된 거리 출력 (cm)
Serial.print(distance);
Serial.println("cm");
// 거리가 10cm 이내일 때만 버저를 울림
if(distance <= 10) // 거리가 10cm 이하일 경우
{
tone(12, 262, 1000); // D12 핀에 주파수 262Hz로 1000 ms 동안 음을 냄
}
else
{
noTone(12); // 그렇지 않으면 버저 끄기
}
delay(100); // 0.1초 대기
}