본문
초음파 센서 실습
사물인터넷(IoT) 2017. 5. 17. 23:05
반응형
# 초음파 센서 실습
1. 초음파 센서 회로구성
2. source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | int echo = 3; // Echo Port int trig = 2; // Trigger Port unsigned long duration; float distance; void setup() { Serial.begin(9600); pinMode(echo, INPUT); pinMode(trig, OUTPUT); } void loop() { // Trigger Signal Output digitalWrite(trig, HIGH); delay(10); digitalWrite(trig, LOW); // Echo Signal Input duration = pulseIn(echo, HIGH); // Calcurate distance distance = ((float)(340 * duration) / 10000 )/ 2; Serial.print(distance); Serial.println("cm"); delay(100); } | cs |
3. function 설명
1 | pulseIn(pin, value); | cs |
여기서, pin은 입력 포트를 지칭하며, value는 포트의 레벨(LOW/HIGH)을 지정한다. 이 함수의 기능은 입력 포트의 신호의 주기를 리턴 해 준다. 예를 들면, 위에 예제처럼 HIGH로 지정되어 있으면, echo 핀의 레벨이 HIGH가 유지되고 있는 시간을 마이크로세켄드(us) 단위로 리턴을 해 준다. 즉, 초음파 센서 에코 펄스의 길이를 시간으로 받을 수 있다. 길이를 측정하는 방법으로 사용하기 위해서는 이 시간을 1/2 값을 사용하면 된다. 리턴 된 duration 값은 us단위의 시간이기 때문에, 이를 거리로 환산을 하려면 음파의 속도인 340m/s를 이용하면 된다. 우리는 거리 계산을 cm 단위로 하기 때문에, 거리(cm) = (34000(cm) * duration / 10^6 )/2 이 식을 이용하면 된다.
4. TEST
코드를 작성하고 컴파일 후에 업로드를 하고, 그 결과를 시리얼 포트로 출력을 해 보면, 비교적 정확하게 거리 측정이 가능하다.
P.S. 관련 자료
http://server-engineer.tistory.com/admin/entry/post/?id=390
반응형
댓글