코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-10-02 10:46:06
라인 센서는 빛은 조사 후 반사되는 빛의 세기에 따라 출력 전압이 변화하는 센서입니다.
이것은 주로 로봇, 자동차 등의 많이 쓰입니다. 위 동영상 처럼 라인을 감지할 때 사용합니다.
IR LED을 빛내서 되돌아오는 빛의 양을 통해 라인을 감지할 수 있습니다.
예를 들어 검은 색 라인인 경우 되돌아 빛의 양이 적음을 통해서 옆에 있는 하얀색 바탕과 구분합니다.
이로써 움직임을 통제할 때, 원하는 경로를 지정할 때 사용할 수 있습니다.
본문에서는 qre1113 / analog을 이용하여 라인을 감지한 후
라인인 경우 LED을 밝혀 보겠습니다.
NO | 부품명 | 수량 | 상세설명 |
1 | 오렌지 보드 | 1 | |
2 | 브레드 보드 | 1 | |
3 | 라인 센서 | 1 | QRE1113 / analog 타입을 사용하였습니다. |
4 | LED | 2 | 다른 두 가지 색을 준비하세요. |
5 | 330 ohm 저항 | 2 | |
6 | 점퍼 케이블 | 7 |
부품명 | 오렌지 보드 | 브레드 보드 | LED | 330 ohm 저항 | 점퍼 케이블 |
사진 | X1 | x1 | x2 | x2 | x7 |
부품명 | 라인 센서 |
사진 | x1 |
다음 스케치를 아두이노에 업로드 하세요.
/* 라인 센서 투토리얼 스케치 본 스케치는 여러 커뮤니티를 참고하여 kocoafab에서 작성하였습니다. 누구나 무료로 사용할 수 있습니다. */ int qre1113 = A0; //QRE1113 라인센서 int red = 9; //red LED int green = 10; //green LED void setup() { pinMode(red, OUTPUT); pinMode(green, OUTPUT); Serial.begin(9600); } void loop() { while(analogRead(qre1113) > 800 ) { //QRE1113을 통해 읽어온 값이 800보다 큰 동안 digitalWrite(green, HIGH); //초록 LED를 ON digitalWrite(red, LOW); Serial.println(analogRead(qre1113)); } while (analogRead(qre1113) < 800 ) { //QRE1113을 통해 읽어온 값이 800보다 작은 동안 digitalWrite(green, LOW); digitalWrite(red, HIGH); //빨간 LED를 OFF Serial.println(analogRead(qre1113)); }
}
QRE1113는 반사되는 빛의 양에 따라 다른 출력 전압을 나타냅니다.
이 출력 값의 범위를 시리얼 모니터의 출력해 보는 방법 등을 이용해 범위를 알아내고
그 값을 사용하면서 스케치를 작성해봅시다.
void loop() { while(analogRead(qre1113) > 800 ) { //QRE1113을 통해 읽어온 값이 800보다 큰 동안 digitalWrite(green, HIGH); //초록 LED를 ON digitalWrite(red, LOW); Serial.println(analogRead(qre1113)); }
스케치를 업로드 하시고 센서를 검은색 물체 위에 가져 놓으세요.
그리고 시리얼 모니터를 확인하시면 검은색 물체 위에 놓은 경우 800 이상의 값을
하얀색 물체 위에 놓은 경우 100이하의 값을 출력하시는 것을 알게 되실 것입니다.
이 값을 이용하여 800보다 큰 경우에는 초록색 LED를 켜주시고
작을 경우 빨간 LED가 켜질 수 있도록 작성하였습니다.
다른 센서를 값에 따라 작동하게 하고 싶은 신 분은 while구문 안을 수정해주세요.
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!