반응형

센서스펙


초음파를 이용하여 거리를 측정하는 제품이며,

약 2cm ~ 400cm 범위를 측정할 수 있습니다. 


날씨, 초음파가 닿는 벽의 재질 등의 요건에 따라 약간의 오차가 발생할 수 있습니다.


동작전압: 5V

동작 전류: 15mA

동작 주파수: 40Hz

발생 주파수: 40kHz

측정 거리: 2~400cm

크기: 45x 20 x 15mm



회로도






코드

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
int trigPin = 12;
int echoPin = 11;
 
void setup()
{
  Serial.begin (9600);              // 시리얼 모니터를 사용하기 위해 보드레이트를 9600으로 설정합니다.
  pinMode(trigPin, OUTPUT);   // trigPin 핀을 출력핀으로 설정합니다.
  pinMode(echoPin, INPUT);    // echoPin 핀을 입력핀으로 설정합니다.
 
}
 
void loop()
 
{
  long duration, distance;                   // 각 변수를 선언합니다.
  digitalWrite(trigPin, LOW);                 // trigPin에 LOW를 출력하고
  delayMicroseconds(2);                    // 2 마이크로초가 지나면
  digitalWrite(trigPin, HIGH);                // trigPin에 HIGH를 출력합니다.
  delayMicroseconds(10);                  // trigPin을 10마이크로초 동안 기다렸다가
  digitalWrite(trigPin, LOW);                // trigPin에 LOW를 출력합니다.
  duration = pulseIn(echoPin, HIGH);   // echoPin핀에서 펄스값을 받아옵니다.
 
/*
      trigPin핀에서 초음파를 발사하였고 그 초음파가 다시 돌아 올 때까지 기다립니다.
      만약 벽이나 장애물에 닿아서 다시 echoPin으로 돌아왔다면 그동안의 시간을 duration에 저장합니다.
  */ 
  distance = duration * 17 / 1000;          //  duration을 연산하여 센싱한 거리값을 distance에 저장합니다.
 
  /*
     거리는 시간 * 속도입니다.
     초음파의 속도는 빛의속도와 같은 초당 340m이므로 시간 * 340m이고 cm단위로 바꾸기 위해 34000cm로 변환합니다.
     시간 값이 저장된 duration은 마이크로초 단위로 저장되어 있어, 변환하기 위해 1000000을 나눠줍니다.
     그럼 시간 * 34000 / 1000000이라는 값이 나오고, 정리하여 거리 * 34 / 1000이 됩니다.
     하지만 시간은 장애물에 닿기까지와 돌아오기까지 총 두 번의 시간이 걸렸으므로 2를 나누어줍니다.
     그럼 시간 * 17 / 1000이라는 공식이 나옵니다.
  */
 
  if (distance >= 200 || distance <= 0)       // 거리가 200cm가 넘거나 0보다 작으면
  {
    Serial.println("거리를 측정할 수 없음");   // 에러를 출력합니다.
  }
  else                                                    // 거리가 200cm가 넘지 않거나 0보다 작지 않으면
  {
 
    Serial.print(distance);                         // distance를 시리얼 모니터에 출력합니다.
    Serial.println(" cm");                           // cm를 출력하고 줄을 넘깁니다.
                                                           // distance가 10이면 10 cm로 출력됩니다.
 
  }
  delay(500);                                         // 0.5초동안 기다립니다.
}

cs





코드는 설명이 잘되있어서

http://makeshare.org/bbs/board.php?bo_table=arduinosensor&wr_id=366

사이트에서 가져왔습니다.



IOE-SR05모델에서는 안되는건지 고장난건지 15cm 만 계속나오네요. 혹시 IOE-SR05모델을 가지고 계신분은 코드가 적용되는지 다른 코드를 사용해야된다면 많은 가르침 부탁드립니다.

반응형

'아두이노' 카테고리의 다른 글

아두이노 버튼(연속)  (0) 2020.12.03
아두이노 LCD+온습도센서  (0) 2020.12.02
아두이노 온습도센서(DHT11)  (0) 2020.11.25
아두이노 블루투스로 servo모터 제어  (0) 2020.06.12
아두이노 블루투스 연결  (0) 2020.06.11
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기