2022. 1. 9. 21:16ㆍ아두이노

빛을 측정하는 조도센서는 실생활에서 가로등(저녁이 되면 자동으로 켜짐), 자동차 헤드라이트(터널 들어가면 자동으로)
스마트폰 화면(주변 밝기에 따라 화면 밝기 조절) 등에 사용됩니다.
조도센서 원리
:빛의 양을 CDS(Cadmiun Sulfide, 황하카드뮴)로 측정.
빛의 양 ↑ ==> 전도율 ↑ (전류가 잘흐르는 정도) ==> 저항값 ↓
빛의 양 ↓ ==> 전도율 ↓ ==> 저항값 ↑
조도센서는 센서라고 부르지만 실제로는 극성없는 가변저항입니다.
정확한 조도수치보다는 주변의 밝기를 상대적으로 비교할 수 있는 정도만 제공합니다.
조도를 측정하기 위해서는 풀업 회로를 사용하며 풀업 저항 사용시에는 조도센서의 저항 값에 따라
전압 분배가 일어나 주변이 밝을수록 측정되는 전압의 크기가 작아집니다.
전압분배 법칙




위 조도센서 회로에서는
Vout= analogPin을 통해 아두이노 입력되는 값
Vin=5V(일정), R1= 우리가 설치한 저항(일정), R2= 조도센서의 저항 입니다.
즉, 위 식에서 R2 ↑ (어두울 때) -> Vout↑ , R2 ↓(밝을 때) -> Vout ↓ 이되고
결론적으로 어두울 때 센서의 값이 높게 측정됩니다.
아날로그 센서 측정 : 지금까지는 'UNO' 라는 글씨 위쪽의 디지털핀을 사용해왔지만 아날로그 핀은 'analog IN'핀에 넣어 센서가 측정한 값을 아두이노에 전달합니다.
아두이노에서는 analogRead()를 사용해 전달된 값을 받습니다.
실습. Serial을 통해 cds 값을 확인해보고, cds값에 따라 다른색이 켜지도록 해봅시다.

문제 :
CDS센서 값 | 3색 RGB |
0~200 | 백색 |
201~400 | 빨간색 |
401~600 | 초록색 |
601~800 | 파란색 |
801~1023 | led OFF |
int red=13;
int green=12;
int blue=11;
int cds=0; // 조도센서 값 저장
void setup() {
pinMode(red,OUTPUT);
pinMode(green,OUTPUT);
pinMode(blue,OUTPUT);
Serial.begin(9600);
}
void loop() {
cds=analogRead(A0); //A1으로부터 입력값 저장
if(cds>=0 && cds<=100 ) {
digitalWrite(red,HIGH);
digitalWrite(green,LOW);
digitalWrite(blue,LOW);
}else if(cds>100 && cds<=500 ){
digitalWrite(red,LOW);
digitalWrite(green,HIGH);
digitalWrite(blue,LOW);
}else{
digitalWrite(red,LOW);
digitalWrite(green,LOW);
digitalWrite(blue,HIGH);
}
Serial.println(cds);
delay(1000);
}