작은항해자의 항해

초음파센서 본문

IT 이야기/Arduino

초음파센서

작은항해자 2014. 10. 30. 17:17

초음파 센서 HC-SR04


초음파 거리 측정 센서.

4Pin으로 구성된 모듈. 초음파를 발사하여 되돌아 오는 시간을 기준으로 거리를 측정.

유효 거리는 2 ~ 400 cm이다.




센서 핀

 

아두이노

 

 VCC

 5V Supply

 5V

 

 Trig

 Trig pulse Input

 digital pin

 트리거 펄스 발생

 Echo

 Echo Pulse Outupt

 digital pin

 초음파 반사 입력력

 GND

 0V Ground

 GND

 




프로그램


#define trigPin 12             // 트리거 포트
#define echoPin 13          // 에코 포트

void setup(){
  Serial.begin(9600);                       //시리얼 포트 설정
  pinMode(trigPin, OUTPUT);         // 초음파 출력을 내보내기 위하여 ouput 모드 설정
  pinMode(echoPin, INPUT);          // 반사되어 돌아오는 초음파를 입력 받기 위해서 input 모드로 설정
}

void loop(){
  int duration, distance;
 
  digitalWrite(trigPin, HIGH);                    // 트리거 신호 발생 코드
  delayMicroseconds(1000);
  digitalWrite(trigPin, LOW);
 
  duration = pulseIn(echoPin, HIGH);                 // pulseIn() 함수는 echoPin 포트가 HIGH가 될때까지의 시간을 microseconds 단위로 리턴해준다. pulseIn()은 pin-신호를 읽을 핀의 번호, type-읽을 신호의 형태(HIGH or LOW)
  distance = (duration/2)/29.1;                            // 초음파가 반사되어 돌아온 시간을 cm로 계산  "반사시간/29.1/2"  

                                                                                    // 소리는 초당 343m를 이동, 1cm를 이동하는데 29.155마이크로초가 소요된다.
  if(distance >=200 || distance <= 0) {
    Serial.println("Out of range");
  } else {
    Serial.print(distance);
    Serial.println("cm");
  }
  delay(500);
}


PulseIn 함수

echoPin으로 지정된 포트의 값이 HIGH 신호로 변경되기까지의 시간을 반환하는 함수이다.


unsigned long pulseIn(uint8_t pin, uint8_t state);

unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout);

timeout값이 지정되지 않으면 기본값 1,000,000 usec 이다.


'IT 이야기 > Arduino' 카테고리의 다른 글

아두이노 나노  (0) 2015.05.12
OLED 0.96인치 SPI 통신  (1) 2014.11.25
LCD 라이브러리  (0) 2014.11.25
4 Digital Tube (SH5461AS)  (0) 2014.10.31
온습도 센서  (0) 2014.10.31