초음파 센서로 거리 측정하기
#define ECHO 3
#define TRIG 4
void setup() {
pinMode(ECHO, INPUT);
pinMode(TRIG, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(TRIG, LOW); // 4번 끄기
delayMicroseconds(2); // 0.000002초 대기
digitalWrite(TRIG, HIGH); // 4번 켜기
delayMicroseconds(10); // 0.00001초 대기
digitalWrite(TRIG, LOW); // 4번 끄기
long dist = (pulseIn(ECHO, HIGH))/58.2;
Serial.println(dist);
}
■ delayMicroseconds(시간)
아두이노 보드를 일정 시간 동안 대기하는 함수이다.
‘시간’의 단위는 마이크로초로 1마이크로초는 0.000001초이다.
■ pulseIn(핀번호, 전압)
해당 디지털 입력 핀의 전압이 LOW 또는 HIGH가 될 때까지 소요된 시간을 반환하는 함수이다.
pulseIn(3, HIGH); 는 핀번호 3번(ECHO)이 HIGH가 될 때까지 걸린 시간을 측정하여 반환한다.
7~11 라인은 4번 핀에 연결된 Trig에서 초음파 신호를 끄고, 켜고, 끄는 것을 매우 짧은 시간 동안 실행하는 명령이다.
12~13 라인에서는 3번 핀에 연결된 Echo에서 앞의 Trig에서 보낸 초음파 신호를 이용하여 초음파가 초음파 센서와 물체 사이를 왕복한 시간을 계산한 후, dist란 변수에 측정 거리를 저장해 주는 기능을 수행한다. 이때 측정 거리의 단위는 cm이다.