아두이노 기초_ 조도(cds)센서 제어하기
조도센서란?
조도센서는 주변의 밝기를 측정하는 센서입니다.
빛이 입사하면 전도성이 되는 반도체로서, 빛의 세기에 따라 저항 값이 변하는(빛의 세기가 셀수록 저항이 작아진다) 광 가변저항입니다.
일반적으로 Cds(황화카드뮴)를 사용하므로 Cds센서 라고 합니다.
광센서중에 하나로 가장 간단하고 저렴하지만 우리 주변의 많은 곳에 쓰이고 있습니다.
아두이노 조도센서 연결
위의 설명처럼 조도센서는 수많은 광센서 중 가장 간단하고 저렴합니다. 때문에 아두이노 기초 예제 및 간단 프로젝트에는 이 조도센서만한 부품이 없습니다.
조도센서를 테스트 하기위해 아두이노, 조도센서, 저항(10k) 을 준비합니다.
그리고 조도센서의 값에 따른 결과를 직접 확인하기 위한 방안으로 LED를 함께 연결해서 테스트 해보겠습니다. LED와 저항(330)을 추가로 준비해주세요.
아두이노와 부품 사이의 연결은 위 사진과 같습니다.
먼저 브래드보드 위쪽 Vcc, GND라인과 아두이노 Vcc, GND라인을 연결합니다.
(아두이노에서 +와 - 즉 전원이 출력되는 핀의 개수가 한정적이기 때문에 브래드보드를 이용한 실습시 항상 가장 먼저 해야할 작업이 전원 라인을 연결하는 것입니다.)
다음으로 조도센서와 저항(10k)를 브래드보드에 그림과 같이 연결합니다. 저항과 센서가 연결된 핀이 밝기값을 출력해주는 데이터핀이 됩니다.
(조도센서는 극성이 없기 때문에 다리의 방향은 고려하지 않아도 됩니다.)
마지막으로 LED와 저항(330)을 연결합니다. LED는 조도센서와 반대로 다리의 극성을 가지고 있기 때문에 유의하여 연결해야 원하는 출력을 확인할 수 있습니다.
LED의 -핀은 브래드보드의 GND에 저항핀을 아두이노 데이터핀(그림에서는 pin2)에 연결합니다.
(LED의 극성은 다리가 긴쪽이 "+" 짧은쪽이 "-"입니다.)
아두이노 스케치 코드
/*
* 제목 : 아두이노 기초 조도센서 제어하기
* 내용 : 조도센서를 이용해서 어두워지면 LED가 켜지고 밝아지면 LED가 꺼지도록 한다
*/
int cds_sensor = A0; //조도센서를 아날로그 A0핀으로 설정
int LED = 2; //LED를 디지털 2번 핀으로 설정
void setup() {
Serial.begin(9600); //조도센서값을 확인하기 위한 시리얼통신 설정
pinMode(LED, OUTPUT); //LED핀을 출력으로 설정
}
void loop() {
int cds_val = analogRead(cds_sensor); //cds센서값을 cds_val변수에 저장
Serial.print("Cds = "); //시리얼 모니터에 다음의 문자열 출력 print<< 그냥 출력
Serial.println(cds_val); //위의 문자열 바로 다음에 cds센서값 출력 println<< 내용 출력 후 줄바꿈
if(cds_val > 500){ //센서값이 500보다 크다면
digitalWrite(LED, HIGH); // LED를 켠다
}
else{
digitalWrite(LED, LOW); //아니면(센서값이 500보다 작다면
Serial.println("LED OFF"); // LED를 끈다
}
delay(500); // 0.5초 대기
}
mblock 코드
mblock을 이용한 블록코딩으도 위의 아두이노 스케치와 같은 결과물을 만들어 낼 수 있습니다.
mblock은 스크래치를 기반으로 만들어진 블록코딩툴 입니다. 기존의 인터페이스와 기능은 스크래치와 동일하지만 mblock은 라이브러리를 직접 블록으로 제작할 수 있고 타인이 만든 라이브러리를 다운받아서 자유롭게 사용할 수 있습니다.
이 기능은 스크래치, 엔트리, 마이크로비트 등 어디에도 없었던 방식이며 개인적으로 블록코딩의 본질을 가장 잘 이해하고 개발되어진 프로그램 이라고 생각합니다.
다음 코드는 위의 아두이노 스케치의 코드와 100% 동일한 코드입니다.
mblock 프로그램 내에서 사진과 같이 블록코딩한 결과를 아두이노 스케치로 변환하여 볼 수 있습니다. (편집 -> 아두이노 모드)
그리고 아두이노 모드에서 코드 위부분에 "아두이노 업로드"버튼을 누르게 되면 mblock프로그램에서 바로 보드로 프로그램 업로드를 할 수 있습니다.
(업로드를 하기 위해서는 연결 -> 시리얼포트 에서 아두이노에 연결된 COM포트를 설정 해야합니다.)
다만 위에서 제가 작성한 프로그램과 달리 조금 난잡하게 코드가 생성된 것을 확인할 수 있습니다. (윈도우에서는 제대로 될지 모르겠습니다.)
다음과 같이 생성된 프로그램을 아두이노IDE에서 복사해서 사용하려면 위에서 "__var__67___68...."과 같은 코드를 전부 수정해야 합니다.
수정을 하지않아도 사용할 수 있으나 난잡해 보일수 있기 때문에 초보자들은 오히려 더 혼동이 올 수 있을 것 같습니다.