본문 바로가기
코딩/아두이노

아두이노 초음파 센서와 LED를 이용 하여 거리를 측정 해보자

by 어릴적 꿈은 미친과학자 2019. 11. 17.

안녕하세요. 전자공이 입니다.

본문에서는 초음파 센서를 이용해 아두이노로 거리를 측정을 하고 LED를 이용해

거리가 얼마나 줄어들었는지 눈으로 볼 수 있도록 만들어 보려고 합니다.

 

 

 

 

-준비물-


아두이노

브레드 보드

HC-SR04 초음파 센서

330옴 또는 1k옴 고정 저항

LED

점퍼선

 

 

-----------------------------------------------------------------------------------------------------------------------------------

아두이노------------------<>------------------초음파 센서

pin2------------------<>------------------Trig

pin3------------------<>------------------Echo

VCC(5v)------------------<>------------------VCC

GND------------------<>------------------GND

 

아두이노------------------<>------------------LED

pin5------------------<>------------------LED+

pin6------------------<>------------------LED+

pin7------------------<>------------------LED+

pin8------------------<>------------------LED+

pin9------------------<>------------------LED+

-----------------------------------------------------------------------------------------------------------------



 

코드부분

 

-코딩 및 설명-

-----------------------------------------------------------------------------------------------------------------

int echo = 2; // echo는 아두이노 2번 핀 설정
int trig = 3; // trig는 아두이노 3번 핀 설정

void setup() {
Serial.begin(9600); // 시리얼 9600바이트 속도 설정

pinMode(trig, OUTPUT); // trig OUTPUT설정

pinMode(echo, INPUT);  // echo INPUT 설정

pinMode(5, OUTPUT);  // 5번 핀을 OUTPUT으로 사용

pinMode(6, OUTPUT);  // 5번핀을 OUTPUT으로 사용

pinMode(7, OUTPUT);  // 5번핀을 OUTPUT으로 사용

pinMode(8, OUTPUT);  // 5번핀을 OUTPUT으로 사용

pinMode(9, OUTPUT);  // 5번핀을 OUTPUT으로 사용

}

void loop() {
  
    digitalWrite(trig, LOW); //trig를 LOW로
    digitalWrite(echo, LOW); //echo를 LOW로
    delayMicroseconds(2); //딜레이를 마이크로초 단위로 설정
    digitalWrite(trig, HIGH);  //trig를 HIGH로
    delayMicroseconds(10); //딜레이를 마이크로초 단위로 설정
    digitalWrite(trig, LOW);  //trig를 LOW로

    unsigned long duration = pulseIn(echo, HIGH);  //echo를 HIGH로
 
  float distance = ((float)(340 * duration) / 10000) / 2;   // 값을 계산하여 cm로 산출하기 위한 식
  
  Serial.print(distance); // 시리얼로 거리 값을 표시함
  Serial.println("cm"); // cm단위로 표시

 if(distance>80){  // level이 80 넘으면 LED를 한 개 켜겠다는 조건
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
  }
else if (distance>60){  // level이 60 넘으면 LED를 두 개 켜겠다는 조건
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);

  }
  else if (distance>40){ // level이 40 넘으면 LED를 세 개 켜겠다는 조건
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);

  }
  else if (distance>20){  // level이 20 넘으면 LED를 네 개 켜겠다는 조건
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);

  }
else { // 위의 조건에 위배되지 않는 조건이라면 모든 불을 켜겠다는 조건
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
  }

  delay(1000); // 시리얼에 값이 표시되는 딜레이 설정

}

 

-----------------------------------------------------------------------------------------------------------------

점점 초음 센서와 물체의 거리가 줄어들 수 록 불이 한 단계씩 켜져서 경고?를 한다는 의미에서

마지막(20cm보다 가까워졌을 때)에는 LED 5개의 빛이 모두 켜지게 되는 코드입니다.

아래의 두 게시글의 회로 구성과 코드를 블랜딩 한 방법으로 만들게 되었습니다.

위의 방식에 대해 이해가 어려운 부분이 있다면 아래 게시글을 참고하시면 도움이 될 거라 생각됩니다.

 

https://nova1004.tistory.com/48

 

아두이노 초음파 센서(HC-SR04) 로 거리 측정을 해보자

안녕하세요. 전자공이 입니다. 본문에서는 초음파 센서를 이용해 아두이노로 거리를 측정하는 것을 해보려고 합니다. 이번에 사용할 초음파 센서입니다. HC-SR04 모델로 사양과 다르게 거리 측정 시 각이 잘 맞으..

nova1004.tistory.com

https://nova1004.tistory.com/52

 

아두이노 CDS로 LED 제어 해보자(LED 미터기)

안녕하세요 전자공이 입니다. 본문에서 해볼 것은 아두이노에서 CDS 값을 받아 시리얼 출력하고 값의 조건에 맞춰 LED를 5단계로 불을 켜주는 CDS LED 5단계 게이지를 만들어 보겠습니다. cds 값에 따라 LED의 빛..

nova1004.tistory.com

 

 

 

-아두이노 초음파 센서를 이용한 LED 거리 표시기 끝-

댓글


page contents