본문으로 바로가기

지금 우리는 ~^^ 아두이노 연재 중 세 번째 글인 초음파 센서 다뤄보기 글을 보고 계십니다. 초음파 센서는 아두이노로 로봇을 만들때 가장 많이 사용하는 센서 중 하나입니다. 거리 측정용이면서 장애물 측정용이기도 하구요^^ 아무튼 꽤 쉽게 결과를 얻을 수 있지요^^

오늘의 준비물은 아두이노 보드와 초음파센서와 그리고 케이블입니다.^^

초음파 센서는 저렇게 생겼습니다. 알파펫 T가 보이시나요. 저기로 초음파를 쏘죠~ 그리고 알파벳 R이 보이시나요? R이 있는 쪽에서 반사된 초음파를 받습니다. 내가 쏘고~~~ 받고... ^^ 그리고 그 시간의 간격을 측정해서 거리를 알 수 있는 거죠...

초음파 센서는 이렇게 연결합니다. VCC에는 5V를 GND는 GND에~, 그리고 Trig 핀과 Echo 핀을 적절히 연결합니다. 여기서는 각각 13번과 12번에 연결했습니다. 주의할 것은 13번 핀인 Trig는 초음파를 쏘기 때문에 output으로, Echo인 12번핀은 input으로 pinMode를 설정해 주어야 합니다.

연결하면 저런 모습입니다. 응? 초음파만 달았는데, 그냥~ 월E 느낌이 확 나는군요^^ 이제 코드를 볼까요~^^

 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
#define trigPin 13 
#define echoPin 12

void setup() {
    // put your setup code here, to run once:
	Serial.begin (115200);
	pinMode(trigPin, OUTPUT);
	pinMode(echoPin, INPUT);
}

void loop() {
    // put your main code here, to run repeatedly:
	long duration, distance;
	digitalWrite(trigPin, LOW);       
	delayMicroseconds(2);                 
	digitalWrite(trigPin, HIGH);               
	delayMicroseconds(10);             
	digitalWrite(trigPin, LOW);          
	duration = pulseIn(echoPin, HIGH);

	distance = duration * 17 / 1000; 
	Serial.println(distance);

	delay(100);
}

조금 어렵나요? 라인바이라인으로 볼까요~~~ 

먼저 1번 2번은 define 문이라고 해서, 변수이름과 그 내용을 미리 정의해 두는 것입니다. #define이라고 하면, C/C++하시는 분들은 전처리라고 합니다. 그리고, setup문에서 시리얼통신 속도를 설정(6번행)해두고, 7번 8번행에서 초음파센서의 trigPin과 echoPin을 각각 출력/입력으로 설정해 두었습니다.

이제 loopdㅔ서 먼저 trigPin에 LOW를 쏩니다.(14번행), 그리고 2마이크로초를 기다리고(15번행), 그리고, HIGH를 다시 쏘죠(16번행), 그리고 10마이크로초를 기다리고, LOW로 떨어뜨립니다. 결국, trighPin으로 구형파 하나를 만들어서 쏜거죠. 그리고 echoPin에서 들어오는 pulse의 시간을 측정합니다.

그리고 21번 행이 거리를 구하는 공식인데여ㅛ. 초음파는 음속의 속도를 가져서 초당 340m를 움직인다고 합니다. 그럼 초당 34000cm를 움직인거죠. 그런데, pulseIn 함수의 출력의 단위는 마이크로초(1000000마이크로초 = 1초) 단위입니다. 그래서 거리는 pulseIn 함수의 결과를 저장한 duration 변수에 34000/1000000을 곱하면 됩니다. 그리고, 초음파가 가고/오고 두번 움직여서 2로 나누면 21번행의 결과가 나타납니다.

이제 코드를 업로드하고, 시리얼플로터를 실행합니다.

저렇게 초음파 센서앞에 노트나 손을 대고 움직여 봅니다.^^

그러면 이렇게 결과를 확인할 수 있답니다.


댓글을 달아 주세요

  1. BlogIcon 핑구야 날자 2019.07.11 06:56 신고

    초음파센서를 활용할 수 있으면 여러가지로 응용이 가능하겠네요

  2. BlogIcon 공수래공수거 2019.07.11 07:13 신고

    수고하셨네요^^
    장마철 건강 유의하시기 바랍니다.

  3. BlogIcon 잉여토기 2019.07.11 20:10 신고

    오, 이렇게 초음파 센서를 만들고 사용할 수 있군요.
    액션 영화에서 초록선이나 빨간선으로 길게 빛 쏘며 보안장치로 이용하고 있는 것이 이것과 비슷한 원리가 아닐까 싶어요.

  4. BlogIcon peterjun 2019.07.12 07:52 신고

    역시나...
    어렵지만 신기한... ^^
    금요일 잘 보내시고... 즐건 주말되세요.

  5. BlogIcon 북두협객 2019.07.12 08:06 신고

    초음파코딩으로 구현하지 못하는 것이 없네요~ 신기방기^^