티스토리 뷰

Arduino

[Arduino] 적외선 센서를 활용한 전방 감지

생각많은 소심남 2013. 5. 20. 01:12

연휴동안 뭘할까 고민을 하다가 집안 구석에서 놀고 있는 부품들을 하나씩 테스트해보기로 했다.



보통 아두이노 키트를 사면 적외선 센서라고 포함되어 있는 것이 있다. 


(1)


부품명은 SEN0019 라는 것인데 사실 딱 보기만 봤을 때는 VDD와 GND 핀이 있고 Signal 핀이 있어서, 거리를 젤 수 있겠구나 싶었는데.. 아니었다. 실상은 정해진 거리내에 방해물이 있는지 없는지만 검사해주는 역할만 들어있다. 내가 생각했던 것처럼 거리를 알기 위해서는 조금더 비싸고 좋은 적외선 센서를 구입해야 된다. 뭐 아무튼 이걸로 전방에 방해물이 있는지 없는지를 확인하는 것을 시도해보았다. 


휴대폰에 내장되어 있는 CCD 카메라로 보면 위와 같이 적외선이 방출되는 것을 확인할 수 있다. 아마 원리를 보자니 빛이 나오는 부분이 발광부이고, 그 옆에 있는게 수광부인 듯 하다. 그래서 정해진 거리내에서 반사가 된 적외선은 수광부를 통해 받고 결과를 출력하는게 될 것이다.



그래서 블로그에 올린 예제 중 LCD 예제를 활용해서 결과를 LCD에 출력할 수 있게 했다. 방해물이 없으면 X를 출력할 것이고 있으면 O를 출력할 것이다.



결과를 읽는 방법은 매우 간단하다. 앞에서 언급한 것처럼 signal pin을 digital pin쪽에 넣으면 된다. 이해가 안가는 사람은 다음 그림을 활용하면 되겠다.


(2)

참고로 나는 digital input을 7번 핀으로 설정했고, 코드는 다음과 같다.

#include <LiquidCrystal.h> const int sensorPin = 7; LiquidCrystal lcd(12,11,5,4,3,2); void setup(){ lcd.begin(16,2); pinMode(sensorPin,INPUT); } void loop(){ lcd.clear(); int value = digitalRead(sensorPin); lcd.setCursor(0,0); lcd.print("Detected: "); if(value == 0){ lcd.print("O"); } else{ lcd.print("X"); } delay(100); }



동작 영상을 보면 잘 작동하는 것을 확인할 수 있다.




Reference :

 1), 2) :  http://www.dfrobot.com/wiki/index.php?title=Adjustable_Infrared_Sensor_Switch_(SKU:SEN0019)

- 신나는 프로토 타이핑 - 고바야시 시게루 저 (인사이트)

댓글