티스토리 뷰
요즘 아이들은 모두 스마트폰은 기본적으로 가지고 다니는 것 같습니다. 하지만 제 아이들에게는 아직 스마트폰을 사주지 않고 있습니다. 스마트폰이 아이들 손에 들어가는 순간 더이상 수 많은 세상의 것들로 부터 컨트럴 할 수 없기 때문입니다. 필요한 것이 있으면 제 스마트폰이나 와이프의 스마트폰을 잠깐 빌려주곤 합니다. 어제는 봐야할 영상이 있다며 제 폰을 빌려갔는데 밝은 거실에 있다가 불이꺼진 딸의 방으로 들어갔을 때 스마트폰 화면 밝기가 어두워지는 것을 보면서 신기하다고 했습니다. 어떻게 동작하는지 원리를 설명해 주면서 우리가 아두이노로 직접 만들어 보자고 제안하였습니다.
목차 1.부품 설명 2.회로 구성 3.소스 코드 4.데모 |
1.부품 설명
이번에 사용할 센서는 빛의 세기에 따라 출력하는 값이 변하는 photoregister 입니다. 레지스터에서 빛을 감지하면 내부 저항값이 줄어드는 특성을 가지고 있어 빛의 밝기에 따라 임의의 값을 변경해야 할때 사용하는 부품입니다. 보통 전등이나 화면의 밝기를 조절하는데 사용되고 있습니다.
2.회로 구성
회로 구성은 아래 그림과 같습니다. 밝기에 따라 LED 수를 변경하여 구분하도록 구성하였습니다. 밝기 값이 제일 높을 때는 LED를 켜지 않고 가장 어두운 값을 가질 때는 3개의 LED를 모두 켜도록 하였습니다. 센서의 출력은 A0 아날로그 입력핀에 연력하여 밝기 값을 읽을수 있도록 연결하였습니다.
3.소스 코드
int LED3 = 9; // R,G,B LED를 아두이노 우노 보드 2,3,4번 핀에 연결 int LED2 = 10; int LED1 = 11; int sensorPin = A0; //센서 출력을 A0핀에 연결 int sensorValue; void setup() { pinMode(LED1, OUTPUT); //세가지 LED 핀을 출력으로 설정 pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); pinMode(sensorPin, INPUT); //아날로그 핀을 입력으로 설정 Serial.begin(9600); // 시리얼 모니터 시작 } void loop() { sensorValue = analogRead (sensorPin); if(sensorValue >900) //밝기 값이 900 보다 클때(어두울 때) { digitalWrite(LED3, HIGH); digitalWrite(LED2, HIGH); digitalWrite(LED1, HIGH); } else if(sensorValue >500)//밝기 값이 500 보다 클때(중간 밝기일 때) { digitalWrite(LED3, LOW); digitalWrite(LED1, HIGH); digitalWrite(LED2, HIGH); } else if( sensorValue > 200)//밝기 값이 200 보다 클때(밝을 때) { digitalWrite(LED2, LOW); digitalWrite(LED1, LOW); digitalWrite(LED3, HIGH); } else { //밝기 값이 200 미만일때(아주 밝을 때) digitalWrite(LED1, LOW); digitalWrite(LED2, LOW); digitalWrite(LED3, LOW); } Serial.println(sensorValue, DEC); delay(500); } |
4.데모