초음파센서는 우리 일상에서 생각보다 자주 볼 수 있다. 병원에서 초음파 진단기로 질병을 진단하고 초음파를 이용하여 세척을 하기도 한다. 그리고 바다에서 고기잡이를 하기 위해 수중 초음파 장비를 사용하기도 한다. 그리고 의료용으로 초음파를 이용하여 신체의 근육, 내부 장기 등을 촬영하여 환자 치료에 도움을 준다. 초음파는 인간이 들을 수 없는 범위의 주파수로 20KHz 이상인 음파를 말한다. 사람이 들을 수 있는 주파수 범위는 일반적으로 16Hz에서 20KHz 사이이다. 그 범위를 벗어난 영역 중에 20KHz 이상인 주파수가 큰 쪽은 초음파 범위이고 20Hz 이하의 낮은 쪽은 초저주파 범위이다.
초음파센서는 신호를 보내는 발신부와 물체에 반사되어 돌아오는 신호를 받는 수신부가 분리되어 있다. 발신부에서 신호를 보내고 반사되어 돌아오기까지 시간을 계산하여 거리를 측정한다. 신호를 보내는 부분이 Trig이고 받는 부분이 Echo 부분이다.
초음파센서는 4개의 핀이 있다. VCC 부분은 아두이노의 5V에 연결한다. Trig는 2번 핀, Echo는 3번 핀, GND는 GND에 연결한다.

// 출력 핀(trig)과 입력 핀(echo) 연결 설정, 다른 핀을 연결해도 됨
int trigPin =2;
int echoPin =3;
// 시리얼 속도 설정, trigPin을 출력, echoPin을 입력으로 설정
void setup(){
Serial.begin(9800);
pinMode(trigPin,OUTPUT);
pinMode(echoPin,INPUT);
}
void loop(){
float duration, distance;
digitalWrite(trigPin,HIGH);
delay(10);
digitalWrite(trigPin,LOW);
// echoPin이 HIGH를 유지한 시간을 저장
duration = pulseIn(echoPin,HIGH);
// HIGH일 때 초음파를 보냈다가 돌아오는 시간을 가지고 거리를 계산
// 340은 초 당 소리의 속도이고 10000은 밀리세컨드를 세컨드로, 왕복 거리이므로 2로 나눔
distance = ((float)(340*duration)/10000)/2;
// 시리얼 모니터에 Echo가 HIGH인 시간 및 거리를 표시함
Serial.print("Duration:");
Serial.print(duration);
Serial.print("\nDistance");
Serial.print(distance);
Serial.print("cm\n");
delay(500);
}
int trigPin =2;
int echoPin =3;
Serial.begin(9800);
pinMode(trigPin,OUTPUT);
pinMode(echoPin,INPUT);
digitalWrite(trigPin,LOW);
duration = pulseIn(echoPin,HIGH);

