코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2015-01-07 16:04:52
레이저는 일반 빛과는 달리 곧은 직진성을 가지고 있어 빛을 다루려는 유저들에게 매력적으로 다가온다.
아두이노에서도 역시 레이저를 제어할 수 있는 모듈이 있는데 연결방법이나 사용법이 매우 간단하여 누구나 쉽게 제어가 가능하다.
이번에는 레이저모듈을 사용하여 정말 간단하게 장애물 감지 시스템을 만들어 보자.
적외선 장애물 감지 센서가 이미 존재하지만 그 센서를 좀 더 크게 확장한 것이라고 생각하면 편하다.
영화에서 보듯이 레이저가 있고 그 레이저에 물체가 걸리면 피에조부저에서 소리가 울리게 된다.
NO |
부품명 |
수량 |
상세설명 |
1 |
아두이노 보드 |
1 |
오렌지 보드 |
2 |
레이저 모듈 |
1 |
|
3 |
피에조 부저 |
1 |
|
4 |
조도 센서 |
1 | |
5 |
저항 10kΩ |
1 | |
6 |
브레드 보드 |
1 |
저항 |
7 |
점퍼 케이블 |
1 |
|
부품명 | 아두이노 보드 | 레이저 모듈 | 피에조 부저 | 조도 센서 |
부품 사진 |
||||
부품명 | 저항 10kΩ | 브레드 보드 | 점퍼 케이블 | |
부품 사진 |
const int LIMITVALUE = 900; //센서별 핀번호 선언 int lasor = 8; int piezo = 9; int cds = A0; //조도센서의 값을 저장하는 변수 선언 int val; void setup() { //핀모드 설정 pinMode(piezo, OUTPUT); pinMode(cds, INPUT); pinMode(lasor, OUTPUT); Serial.begin(9600); //시리얼 통신 초기화 } //피에조 부저에서 소리를 내게 하자 void loop() { digitalWrite(lasor, HIGH); //레이저모듈핀에 항상 HIGH값을 입력 val = analogRead(cds); //조도센서로 부터 값을 읽어들인다 Serial.println(val); //시리얼 모니터에 출력 if(val < LIMITVALUE) { //값이 일정값 이하로 떨어질 경우 analogWrite(piezo, 128); //피에조부저에서 소리가 난다 } else { //그 이외의 경우 analogWrite(piezo, 0); //소리가 울리지 않는다 } delay(500); // 1초 대기 }
레이저모듈은 3핀을 가지고 있어 vcc, gnd, output핀을 가지고 있다.
loop()에서는 레이저모듈에게 항상 HIGH값을 줌으로 계속 켜져있게 한다.
조도센서는 레이저모듈와 같은 선상에 있어 레이저모듈에서 오는 빛을 항상 받고 있는데 그 값을 아두이노에서 계속 측정하게 된다.
레이저 모듈에서 날라오는 빛을 측정한 값을 위 소스에서는 하한값 900으로 잡고 실행하였는데 그 값은 사용자가 수정하여도 무방하다.
const int LIMITVALUE = 900;
900이하의 값을 받게 되면 아두이노에서는 레이저와 조도 센서 사이에 물체가 있어 빛을 차단한 것으로 인식한다.
그렇게되면 피에조부저에서는 소리가 울리게 되고 조도센서에서 측정되는 값이 다시 900이상으로 올라가지 않을 경우 계속 울리게 된다.
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!