인텔 갈릴레오2 CdS광센서를 이용한 LED 밝기 조정하기

 갈릴레오2와 빛을 감지하는 CdS광센서를 이용해서 LED의 밝기를 조절하는 회로를 만들어보자.
Fade : https://communities.intel.com/docs/DOC-22429준비물 : 갈릴레오2, 브레드보드, 연결선, LED, CdS 광센서, 10K 저항, 1K 저항
스케치 파일 : 파일 -> 예제 -> 01. Basics -> Fading
 스케치 코드
const int InSensor = A5;  // 센서는 아날로그5번 핀에 연결
const int OutledPin = 11; // LED는 11번 PWM에 연결
int InSensorValue;
int voltage;
int OutledValue;
void setup()
{
  Serial.begin(9600); // 시리얼통신 시작.
}
void loop()
{
  InSensorValue = analogRead(InSensor);      // 아날로그 입력 5번 핀의 값을 읽어 sensorValue에 저장
  voltage  = InSensorValue * (5.0 / 1023.0);
  OutledValue = 255 - InSensorValue * (255 / 1023.0);
  analogWrite(OutledPin, OutledValue);       // 11 PWM 출력
  Serial.print("INPUT Analog Value: ");
  Serial.print(InSensorValue);        // sensorValue 값을 시리얼 모니터에 표시 (0 ~ 1023)
  Serial.print(" = ");
  Serial.print(voltage);            // 전압으로 변환된 값을 시리얼 모니터에 표시 (0 ~ 5 V);
  Serial.print("V ===> OUTPUT LED: ");
  Serial.println(OutledValue);
  delay(50);                         // 50밀리 초 동안 정지
}
 기본 회로도
 기본 예제에서는 입력값을 이용해서 밝기를 조정했는데, 필자가 변형한 위의 회로도에서 광센서를 A5번 PWD에 연결하는 부분이 추가되었다. Fritzing(링크)를 이용하면 쉽게 회로도를 직접 그릴수 있다.

 간단히 CdS광센서에 대해서 알아보자.
 CdS광센서는 빛을 감지하여, 밝은 빛에서는 저항값이 작아지고 어우둔 빛에서는 저항값이 커진다. 이것를 이용해 주변이 밝으면 LED를 희미하게 켜고, 주변이 어두우면 LED를 밝게 하는 회로를 만들려고 한다. 
CdS 값 : 가장 밝은 빛 = 0, 가장 어두운 빛 = 1023
 스케치 코드 분석
 아날로그 5번(A5)핀의 입력값을 읽어 PWD로 출력하여 LED 밝기를 조절한다. 
analogWrite(PWD출력핀번호, PWD출력값);
 PWD출력값은 0 ~ 255 값을 가진다. 갈릴레오 보드의 디지털핀 번호 앞에 ~ 표시가 있는 3, 5, 6, 9, 10, 11의 6개만이 PWD값을 출력 할 수 있다. 

 회로 만들기
 5V와 GND를 기판에 연결한다.
 저항과 Cds광센서를 연결한다.
 CdS광센서의 한쪽을 A5와 연결한다.
 출력부분에 사용할 저항과 LED를 배치한다.
 출력부분인 PWD ~11번을 LED와 연결한다.
 아두이노 IDE에서 위 스크치 코드를 업로드(Ctrl+U)하고 아래의 시리얼 모니터를 켠다. LED를 연결하는 순간 불이 들어오는 것을 알 수 있다.