MindSensor IR Dist 센서 드라이버
소개
Driver for MindSensor IR Distance Sensor
made by Flyer( http://flyjsw.canxan.com )
다운로드
이 드라이버 코드는 BSD 라이센스에 의해 배포됩니다!
0.1.0a
다운로드: drv_dist.h
How to use
드라이버 include
드라이버를 사용하기 위해 코드를 incldue한다.
드라이버 초기화
드라이버에서 제공하는 함수를 이용하기 전에, 드라이버 초기화 함수가 꼭 실행되어야 한다.
초기화에 실패하면 bool값 false를 반환한다.
센서 초기화
그 다음, IR센서를 초기화해야 한다.
초기화에 실패하면 bool값 false를 반환한다.
1번째 인자는 IR센서가 달린 포트이며, 2번째 인자는 센서의 Range다.
- Short Range -> 0
- Mid Range -> 1
- Long Range - > 2
만약 IR센서를 다 사용하고, 해당 포트에 다른 센서를 사용하게 되는 경우에는 아래 함수로 IR센서를 초기화 해제한다.
해제에 실패하면 bool값 false를 반환한다.
거리 읽기
IR센서를 초기화하는데 성공했다면, 다음 인터페이스를 이용해 자유롭게 거리를 읽을 수 있다.
그때그때 거리 얻어오기
필요할 때마다 함수를 호출하여 거리를 얻어올 수 있다.
거리를 얻어오지 못하면 0을 반환할 것이다.
이 함수를 호출할 때마다 IR센서와 I2C통신을 함으로써 거리 데이터를 가져오게 되는데, 통신에 실패하면 성공할 때까지 무한 루프를 돌도록 되어 있으므로 여기서 오버헤드(딜레이) 내지는 프로그램이 먹통이 될 가능성이 잠재적으로 존재한다.
수시로 거리 업데이트하기
다른 방법으로, 센서 값을 업데이트하는 태스크를 돌려서 값을 업데이트하는 방법도 있다. 이를 위해 다음 코드로 태스크를 시작한다.
msDist_listener 태스크의 역할을 다음과 같다.
- msDist_initSensor 함수로 초기화 된 센서들의 거리 데이터를,
- msDist_getDist 함수를 이용해 수시로 받아,
- int msDist_valueDist[]; 배열에 저장한다.
msDist_valueDist 배열은 인덱스가 0~3까지 존재한다. 인덱스가 뜻하는 것이 포트 번호임을 쉽게 짐작할 수 있을 것이다. 이 변수는 SensorValue[] 쓰듯 사용하면 된다.
필요에 따라 msDist_listener 태스크를 끝장낼 수 있다 ;-)
Comments (0)