[Arduino] 9.초음파 센서




초음파 센서




초음파란 사람의 귀에 들리지 않을 정도로 높은 주파수 (약 20 kHz 이상)의 소리를 말합니다. 이와 같은 특성을 이용한 것이 초음파센서로 음파를 쏘아올리고 반사되어 오는 음파까지의 시간차를 거리로 계산하여 측정하는 방식으로 동작된다.

초음파 거리 센서는 발신부(Trig)와 수신부(Echo)로 구성되는데, 이 초음파는 파장이 짧아 지향성과 직진성이 높으며 공기 중에서는 340 m/s의 일정한 속도로 진행하는 특징을 가지므로 거리 측정을 위한 수단으로 많이 사용됩니다. 자동차의 후방 경보 시스템이 초음파를 이용한 대표적인 예에 해당합니다.

이외에도 물체 검출, 물체 크기 측정, 수위 측정 등 다양한 분야에서 초음파 센서가 사용됩니다.


image




다음과 같이 연결하면 됩니다~!


image




피에조 스피커와 초음파 센서를 이용하여 거리에 따라 신호음을 발생시켜보겠습니다.

20 ~ 30cm 는 신호음 1개, 10 ~ 20cm는 신호음 2개, 10cm 미만은 신호음 3번 발생입니다!


#define NOTE_C6  1047 //도
int TrigPin = 8; //초음파 발신부
int EchoPin = 9; //초음파 수신부
int speaker = 11;
void setup() {
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
Serial.begin(115200);
}

void loop() {
 float distance, duration;
 //TrigPin에서 초음파 발생
 digitalWrite(TrigPin, HIGH);
 delayMicroseconds(10);
 digitalWrite(TrigPin, LOW);
 //EchoPin 에서 초음파 수신
 duration = pulseIn(EchoPin, HIGH); //초음파 받을 때 까지 시간 단위: micro초 (백만분의 1초)
 //공기 속도 1초에 340m -> cm 로 변환 34000 // 왕복이니까 나누기 2
 distance = ((duration *340*100)/1000000)/2; //단위 cm
 Serial.println("거리: " +(String)distance+"cm");

 if(distance < 10){
   speakerHigh(3);
 }else if(distance <=20){
   speakerHigh(2);
 }else if(distance <=30){
   speakerHigh(1);
 }
 delay(300);
}
void speakerHigh(int num){
 for(int i = 0; i < num; i++){
   analogWrite(speaker, NOTE_C6);
   delay(200);
   analogWrite(speaker, LOW);
   delay(200);
 }
 delay(1000);
}