아두이노를 활용해 거리를 측정할 수 있을까?
초음파 센서에 대해 알아보도록 합시다.
01. 초음파 센서란 무엇인가?
출처:코코아팹 교육자료
초음파는 귀이 들리지 않을 정도의 높은 주파수(약 20MHz) 소리를 말합니다. 속도는 초등 340m의 속도를 갖습니다.
HC-SR04 초음파센서는 이러한 초음파를 발신 및 수신할 수 있는 센서이며, 이를 이용해 사물을 감지하고, 거리를 측정하는데 사용됩니다.
거리=시간 x 속도 (초음파 속도 340m/s)
왕복거리=340 x 측정시간
편도거리=왕복거리/2=340x측정시간/2
02. 초음파 센서를 아두이노에 연결해 보도록 합시다.
03. 초음파 센서에 이용되는 함수를 함께 알아봅시다.
pulseIn
pulseIn이란 특정 핀에서 하나의 사각 파형(HIGH 또는 LOW)을 읽는 명령어이다.
pulseIn(pin, value); pin에는 사각 파형을 읽고자 하는 핀 번호,
value는 읽고자 하는 사각 파형, 지속되는 HIGH 구간의 사각 파형 또는 Low 구간의 사각 파형
04. 초음파 센서로 거리를 측정하기 위핸 스케치를 작성해 봅시다.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
const int trig_pin=11;
const int echo_pin=12;
void setup() {
pinMode(trig_pin, OUTPUT);
pinMode(echo_pin, INPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trig_pin,LOW);
delayMicroseconds(2);
digitalWrite(trig_pin,HIGH);
delayMicroseconds(10);
digitalWrite(trig_pin,LOW);
long duration=pulseIn(echo_pin,HIGH);
long distance=(duration/2)/29.1;
Serial.print(distance);
Serial.println("cm");
}
01: trig_pin 상수에 11번 핀을 할당한다.
02: echo_pin 상수에 12번 핀을 할당한다.
03~09: setup 함수를 정의한다.
04: trig_pin을 출력으로 설정한다.
05: echo_pin을 입력으로 설정한다.
06: 시리얼 통신속도를 115200bps로 설정한다.
07~16 : loop함수를 정의한다.
08: trig_pin을 LOW로 설정한다.
09: delayMicroseconds 함수를 호출하여 2마이크로초간 지연을 준다.
10: trig_pin을 HIGH로 설정한다.
11: delayMicroseconds 함수를 호출하여 10마이크로초간 지연을 준다.
12: trig_pin을 LOW로 설정한다.
(*참고: 1초=1000000마이크로초)
13: pulseIn 함수를 호출하여 echo_pin의 HIGH 구간을 측정한 후, duration 변수에 저장한다.
14: duration값을 2로 나눈 후, 다시 29.1fh 나누어 distance 변수에 저장한다
15: Serial.print 함수를 호출하여 distance 값을 출력하고
16: Serial.println 함수를 호출하여 “cm”문자열을 출력한다.
초음파센서로 거리를 측정하는 기능을 활용한다면 어떤 제품을 설계할 수 있을까?