일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- http://jeonghwan-kim.github.io/dev/2019/06/25/react-ts.html
- 게시판
- toString
- 출처 : https://webdir.tistory.com/506
- https://velog.io/@velopert/create-typescript-react-component
- 출처 : https://joshua1988.github.io/web-development/javascript/promise-for-beginners/
- object
- Today
- Total
Back Ground
아두이노 - 초음파 센서 사용하기 본문
1. 초음파 센서 사용하기
초음파센서 HC-SR04(초음파센서)
초음파 센서인 HC-SR04를 이용하여 거리를 측정해보자.
이 센서는 테스트 결과 1m 안의 물체에 대해서는 상당히 정확한 거리값을 구해 준다.
하지만 1m를 넘어가면 값이 별로 정확하지는 않은 것 같다.
초음파로 거리를 계산하는 원리는 다음과 같다.
초음파의 속도는 340m/s 이다.(일반적인 소리의 속도와 같다.) 초음파가 발생되어 대상물체에 부딪히게 되면 반사되어 돌아오게 된다. 이의 시간차를 계산하면 거리를 계산할 수 있다. 박쥐가 동굴에서 빛 없이도 장애물을 파악하고 피해가는 원리와 비슷하며, 번개가 치고 1초뒤 천둥소리가 들렸다면 번개가 친 곳과의 거리가 340m 인 것을 파악하는 원리와 같다고 생각하면 된다.
Trig 가 초음파를 발생하는 신호이며, Echo가 반사되어 오는 초음파를 받는 역할을 한다.
2.초음파 센서 와 삼색 LED (색깔이 초음파에 따라 변함)
삼색 LED를 9, 10, 11번 핀에 연결합니다. 초음파센서의
Trig를 2번 핀, Echo를 3번 핀에 연결해줍니다.
스케치
// 초음파센서의 Trig, Echo 핀을 매크로 상수로 선언합니다.
#define TRIG 2
#define ECHO 3
// 삼색 LED의 R, G, B에 해당하는 핀들을 매크로 상수로 선언합니다.
#define RED 11
#define GREEN 10
#define BLUE 9
void setup() {
// 초음파센서의 Trig를 출력 모드로 설정합니다.
pinMode(TRIG, OUTPUT);
// 초음파센서의 Echo를 입력 모드로 설정합니다.
pinMode(ECHO, INPUT);
}
void loop() {
// 다음은 초음파센서의 Trig에서 초음파를 발사하는 코드입니다.
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
// pulseIn명령어를 통해 Echo핀에 초음파가 들어오는 시간을 계산합니다.
// pulseIn에서 반환된 값에 58.2를 나눈 이유는 시간을 cm로 변경하기 위해서입니다.
long distance = pulseIn(ECHO, HIGH)/58.2;
// 삼색 LED의 R, G, B를 모두 0으로 설정해서 끕니다.
analogWrite(RED, 0);
analogWrite(GREEN, 0);
analogWrite(BLUE, 0);
if(distance < 10) {
// 거리가 10cm 이내이면 빨간색으로 표시합니다.
analogWrite(RED, 255);
}else if(distance < 20) {
// 거리가 10 ~ 20 이내이면 초록색으로 표시합니다.
analogWrite(GREEN, 255);
}else if(distance < 30) {
// 거리가 20 ~ 30 이내이면 파란색으로 표시합니다.
analogWrite(BLUE, 255);
}
// 0.1초간 멈춥니다.
delay(100);
}
함 수
3.초음파 센서 와 피에조 스피커 연결 (거리에 따라 스피커소리가 느려졌다.빨라졌다가 함)
피에조 스피커를 8번 핀에 연결합니다. 초음파센서의
Trig를 2번 핀, Echo를 3번 핀에 연결
스케치
// 초음파센서의 Trig, Echo 핀을 매크로 상수로 선언합니다.
#define TRIG 2
#define ECHO 3
void setup() {
// 초음파센서의 Trig를 출력 모드로 설정합니다.
pinMode(TRIG, OUTPUT);
// 초음파센서의 Echo를 입력 모드로 설정합니다.
pinMode(ECHO, INPUT);
}
void loop() {
// 다음은 초음파센서의 Trig에서 초음파를 발사하는 코드입니다.
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
// pulseIn명령어를 통해 Echo핀에 초음파가 들어오는 시간을 계산합니다.
// pulseIn에서 반환된 값에 58.2를 나눈 이유는 시간을 cm로 변경하기 위해서입니다.
long distance = pulseIn(ECHO, HIGH)/58.2;
// 피에조 스피커의 소리를 약 0.02초간 울립니다.
// 음의 주파수는 임의로 1000으로 설정했습니다.
tone(8, 1000, 20);
// 0.1초 멈춥니다.
delay(100);
// 앞에와 똑같이 피에조 스피커를 다시 울립니다.
tone(8, 1000, 20);
// 거리값만큼 멈춥니다.
delay(distance);
}
3.거리 측정기를 만들어 보자. (응용예제)
연결:
Vcc ---- 아두이노 5V
GND ---- 아두이노 GND
Trig ---- 아두이노 디지털 9번핀
Echo ---- 아두이노 디지털 8번핀
스케치
//출력핀(trig)과 입력핀(echo) 연결 설정, 다른 핀을 연결해도 됨.
int trigPin = 9;
int echoPin = 8;
//시리얼 속도설정, trigPin을 출력, echoPin을 입력으로 설정
void setup(){
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
//초음파를 보낸다. 다 보내면 echo가 HIGH(신호받기) 상태로 대기
void loop(){
float duration, distance;
digitalWrite(trigPin, HIGH);
delay(10);
digitalWrite(trigPin, LOW);
// echoPin 이 HIGH를 유지한 시간을 저장 한다.
duration = pulseIn(echoPin, HIGH);
// HIGH 였을 때 시간(초음파가 보냈다가 다시 들어온 시간)을 가지고 거리를 계산 한다.
// 340은 초당 초음파(소리)의 속도, 10000은 밀리세컨드를 세컨드로, 왕복거리이므로 2로 나눠준다.
distance = ((float)(340 * duration) / 10000) / 2;
//시리얼모니터에 Echo가 HIGH인 시간 및 거리를 표시해준다.
Serial.print("Duration:");
Serial.print(duration);
Serial.print("\nDIstance:");
Serial.print(distance);
Serial.println("cm\n");
delay(500);
}
'아두이노' 카테고리의 다른 글
아두이노 - 7 세그먼트 사용하기 (0) | 2016.06.21 |
---|---|
아두이노 - LCD 패널 사용하기 (0) | 2016.06.21 |
아두이노 - 조도 센서 사용하기 (3) | 2016.06.21 |
아두이노 - Piezo스피커02 (0) | 2016.06.21 |
아두이노 - Piezo스피커 (0) | 2016.06.21 |