【 아두이노 센서#26】 IR 적외선 센서 거리 LED 레벨바 만들기
지난 시간 적외선(IR) 센서인 GP2Y0A41SK의 기본 사용법에 대해 알아 보았다. 이번 시간에는 거리에 따른 LED 레벨바를 만들어 보려 한다. 과거 LED Latch 회로를 다루어 보았는데 IR 센서와 연결하면 간단히 구현가능하다.
▶ 선수 학습 :
1. (센서)#9 시프트 레지스터 이해하기 1 (Latch 회로이해1) ☜ 강좌보기클릭 2. (센서)#10 나이트라이더 만들어보기 (Latch 회로이해2) ☜ 강좌보기클릭
3. (센서)#25 IR적외선 센서 다루기 (IR 센서 기초) ☜ 강좌보기클릭
▶ IR 센서 사양 및 동작 특성
▶ 실습 목표 :
1. IR 센서의 작동 방식에 대해 이해하고 응용할 수 있다.
2. 센서로 부터 얻어 지는 아날로그 값을 디지털값 및 전압값으로 바꾸어 거리값으로 환산할 수 있다.
3. 얻어진 거리값을 시리얼 모니터와 LED로 표시할 수 있다.
4. 시프트 레지스터 기능(74HC595) IC를 이용하여 거리에 따라 LED가 켜지도록 레벨바 형태를 구현 할 수 있다.
▶ 실습 회로도면 :
(이미지 클릭하면 확대 가능)
▶ 실습 절차 :
▶ 프로그램 코드 및 설명 :
/* 적외선 센서 (IR sensor) LED 레벨바 응용 프로그램 */
/* by RASIno , http://rasino.tistory.com */
const int SER=8; // 시프트 레지스터로 데이터를 입력하는 8번 핀 SER 상수 정의
const int LATCH=9; //LATCH 핀 LATCH 상수 정의
const int CLK= 10; //CLOCK 핀 CLK 상수 정의
const int DIST=0; //아날로그 입력 0번 핀에 연결된 IR 센서의 장애물 거리값
//LED 거리값 패턴을 저장한 vals 배열 정의
int vals[9]={0,1,3,7,15,31,63,127,255};
int maxVal=600; //IR 센서의 장애물 거리 최대값
int minVal=260; //IR 센서의 장애물 거리 최소값
//### IR 센서의 최대, 최소값은 실제 측정해보고 원하는 값으로 수정 필요
void setup( ) {
Serial.begin(9600); // 시리얼 통신 시작
pinMode(SER, OUTPUT);
pinMode(LATCH, OUTPUT);
pinMode(CLK, OUTPUT);
}
void loop( ) {
int distance=analogRead(DIST); //IR 센서에서 장애물 거리값을 읽음
Serial.println(distance); // 시리얼 모니터로 IR값을 확인해 본다
distance=map(distance, minVal, maxVal, 0, 8);
distance=constrain(distance,0,8); //거리값 범위 조정
digitalWrite(LATCH,LOW); //LATCH에 LOW 입력
shiftOut(SER, CLK, MSBFIRST, vals[distance]); //거리값에 맞는 데이터전송
digitalWrite(LATCH, HIGH); // 거리에 따라 LED가 켜지도록 High 입력함
delay(10); // 센서가 장애물을 감지하는 시간 간격 지정
}
▶ 실행영상 :
(전체화면 보기로 보세요)
▶ 아두이노 파일(실습1. 다운) :
'아두이노 > 2. 아두이노센서' 카테고리의 다른 글
【 아두이노 센서#28】 터치 센서( TTP223B) Touch Sensor 다루기 #2 (0) | 2019.02.11 |
---|---|
【 아두이노 센서#27】 터치 센서( TTP223B) Touch Sensor 다루기 #1 (0) | 2019.02.08 |
【 아두이노 센서#25】 IR 적외선 센서 다루기 ( GP2Y0A41SK ) (0) | 2019.01.31 |
【 아두이노 센서#24】 L298N 모터 모듈을 활용한 초음파센서 회로#1 (2) | 2019.01.22 |
【 아두이노 센서#23】 HC-SR04 초음파 센서 경보회로2 with i2c LCD (9) | 2019.01.21 |