일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 돌코냉이
- 제주철학사랑방
- 온습도센서
- sht10
- 동자석
- 라즈베리파이
- rain fall
- AM2302
- wind direction
- 온습도 센서
- LM2567
- DHT22
- 작은항해자
- wind speed
- 마이못
- LM1117
- DC5V
- lm7805
- 철사방
- 장수물
- 초종용
- 수산리 곰솔
- 가막샘
- 포구
- 제주문화유산답사회
- 하귀리 해신당
- 암맥군
- 구시물
- 내도동
- weather station
- Today
- Total
작은항해자의 항해
초음파센서 본문
초음파 센서 HC-SR04
초음파 거리 측정 센서.
4Pin으로 구성된 모듈. 초음파를 발사하여 되돌아 오는 시간을 기준으로 거리를 측정.
유효 거리는 2 ~ 400 cm이다.
센서 핀 |
|
아두이노 |
|
VCC |
5V Supply |
5V |
|
Trig |
Trig pulse Input |
digital pin |
트리거 펄스 발생 |
Echo |
Echo Pulse Outupt |
digital pin |
초음파 반사 입력력 |
GND |
0V Ground |
GND |
|
프로그램
#define trigPin 12 // 트리거 포트
#define echoPin 13 // 에코 포트
void setup(){
Serial.begin(9600); //시리얼 포트 설정
pinMode(trigPin, OUTPUT); // 초음파 출력을 내보내기 위하여 ouput 모드 설정
pinMode(echoPin, INPUT); // 반사되어 돌아오는 초음파를 입력 받기 위해서 input 모드로 설정
}
void loop(){
int duration, distance;
digitalWrite(trigPin, HIGH); // 트리거 신호 발생 코드
delayMicroseconds(1000);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH); // pulseIn() 함수는 echoPin 포트가 HIGH가 될때까지의 시간을 microseconds 단위로 리턴해준다. pulseIn()은 pin-신호를 읽을 핀의 번호, type-읽을 신호의 형태(HIGH or LOW)
distance = (duration/2)/29.1; // 초음파가 반사되어 돌아온 시간을 cm로 계산 "반사시간/29.1/2"
// 소리는 초당 343m를 이동, 1cm를 이동하는데 29.155마이크로초가 소요된다.
if(distance >=200 || distance <= 0) {
Serial.println("Out of range");
} else {
Serial.print(distance);
Serial.println("cm");
}
delay(500);
}
PulseIn 함수
echoPin으로 지정된 포트의 값이 HIGH 신호로 변경되기까지의 시간을 반환하는 함수이다.
unsigned long pulseIn(uint8_t pin, uint8_t state);
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout);
timeout값이 지정되지 않으면 기본값 1,000,000 usec 이다.
'IT 이야기 > Arduino' 카테고리의 다른 글
아두이노 나노 (0) | 2015.05.12 |
---|---|
OLED 0.96인치 SPI 통신 (1) | 2014.11.25 |
LCD 라이브러리 (0) | 2014.11.25 |
4 Digital Tube (SH5461AS) (0) | 2014.10.31 |
온습도 센서 (0) | 2014.10.31 |