이번에 내용은 초음파센서를 이용한 거리측정입니다.
초음파는 20khz이상(가청주파수 위) 주파수를 이용한 센서이며, 보통 거리나 앞에 장애물을 인식하는 센서로 이용됩니다.
사용할 초음파센서에 전기적인 특성부터 확인.
-전원 : 5V
-측정각도 : 15도
-트리거에 입력 받는 펄스 시간 : 10uS
-거리 계산식 : (high level time×velocity of sound (340M/S) / 2
구성도
코딩
int trig = 3;
int echo = 4;
void setup() {
pinMode(trig, OUTPUT);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
pinMode(echo, INPUT);
Serial.begin(9600);// 9600bps 초당 비트 전송 속도
}
void loop() {
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
int distance=pulseIn(echo, HIGH)/58; //거리=속도x시간 , 초음파는 초당 340m로 반응 340mx1s=340m/s
//1cm(0.01m)=340m/초 ,T=D/S, T=0.01/340 29.42us 즉 1cm에 29.42us이다.
//340m/s -> cm/us로 변환 -> 34000cm/s -> 34000*10^-6 -> 0.034cm/us
if(distance>13)
digitalWrite(13, HIGH);
else
digitalWrite(13, LOW);
if(distance>12)
digitalWrite(12, HIGH);
else
digitalWrite(12, LOW);
if(distance>11)
digitalWrite(11, HIGH);
else
digitalWrite(11, LOW);
if(distance>10)
digitalWrite(10, HIGH);
else
digitalWrite(10, LOW);
if(distance>9)
digitalWrite(9, HIGH);
else
digitalWrite(9, LOW);
if(distance>8)
digitalWrite(8, HIGH);
else
digitalWrite(8, LOW);
if(distance>7)
digitalWrite(7, HIGH);
else
digitalWrite(7, LOW);
if(distance>6)
digitalWrite(6, HIGH);
else
digitalWrite(6, LOW);
delay(100);
}
초음파데이터 사양서를 보게되면 에코는 트리거에서 나가고 반사되는 하이레벨을 읽는 것입니다.
주석으로 시간을 구하는 방법과 속도로 변환하는 방법 2가지를 남겨 두었습니다.
트리거 신호가 us이기때문에 에코도 us로 변환해서 계산하시면됩니다.
'LAP > Arduino' 카테고리의 다른 글
[아두이노] 2개 DC Motor 방향제어(조이스틱) (0) | 2019.09.25 |
---|---|
[아두이노] 온도센서 이용 모터,LED제어 (0) | 2019.09.25 |
아두이노 시리얼 통신 2 (0) | 2019.08.21 |
아두이노 시리얼통신 제어 (0) | 2019.08.21 |
ARDUINO FOR문 LED 쉬프팅[순차점멸] (0) | 2019.08.20 |