ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 아두이노 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이라는 공식이 나오면서 코드에  그렇게 쓰이게 된 것이다.

     

     

     

     

    동영상

     

     

     

    댓글

Designed by Tistory.