-
아두이노 HC-SR04 초음파센서 튜토리얼스터디그룹/아두이노 튜토리얼 2020. 5. 3. 15:08
아두이노에는 여러기지 센서들이 존재한다. 그 중 우리는 아두이노 HC-SR04 초음파센서를 알아볼 것이다. HC-SR04는 초음파를 이용하여 거리를 측정할 수 있다. 약 2~400cm 범위를 측정할 수 있지만, 거리가 멀거나 날씨, 장애물의 재질 등 환경적인 요건에 의해 오차가 발생한다. 초음파를 발사하고, 장애물에 닿은 후 다시 튕겨져 돌아오는 초음파를 센싱하여 거리 값을 측정한다.
회로도
샘플 코드
#define OutputPin 7 #define InputPin 8 void setup() { Serial.begin (9600); pinMode(OutputPin, OUTPUT); pinMode(InputPin, INPUT); } void loop() { long lengthen, centimeter; digitalWrite(OutputPin, LOW); delayMicroseconds(2); digitalWrite(OutputPin, HIGH); delayMicroseconds(10); digitalWrite(OutputPin, LOW); lengthen = pulseIn(InputPin, HIGH); centimeter = lengthen * 17 / 1000; if (centimeter >= 200 || centimeter <= 0) { Serial.println("거리가 측정이 불가함"); } else { Serial.print(centimeter); Serial.println("cm"); } delay(500); }
코드 해설
*이 초음파 센서에는 trig와 echo가 있는데, trig는 초음파를 쏘는 것이고, echo는 물체에서 튕겨져나온 초음파를 수신하는 것 이다.
*19~31줄에 있는 코드내용 해석
OutputPin핀에서 초음파를 발사하고 그 초음파가 다시 돌아 올 때까지 기다린다. 벽이나 장애물에 닿아서 다시 InputPin으로 돌아오면 걸린 시간을 centimeter에 저장한다.
*34번 줄에 있는 코드 centimeter = lengthen * 17 / 1000; 코드
거리는 시간 X 속도이다. 음속은 340m/s이므로 시간 X 340m이고 cm로 바꾸기 위해서 34000cm로 바꾼다. 시간 값이 저장된 duration은 마이크로초 단위로 저장되어있기 때문에, 변환하기 위해 1000000을 나누어 준다. 그럼 시간 X 34000 / 1000000이라는 값이 나오고, 약분하여 시간 X 34 / 1000이 된다. 하지만 장애물에 닿고 돌아오기까지 총 2번의 시간(가는 시간, 오는 시간)이 걸렸으므로 2를 나누어 준다. 그럼, 시간 X 17/1000이라는 공식이 나오면서 코드에 그렇게 쓰이게 된 것이다.
동영상
'스터디그룹 > 아두이노 튜토리얼' 카테고리의 다른 글
아두이노 8*8 매트릭스 글자 띄우기 튜토리얼 (0) 2020.05.10