프로그래밍 / C++ / 언리얼

Programming/Arduino

[Arduino] 아두이노 광센서(CDS)를 활용해서 LED 제어하기

아트성 2020. 7. 9. 22:44

 

 

 

 

   광센서의 개요

 

 

우리가 길가다가 도시나, 골목길에서 가로등을 자주 마추치게 된다.

가로등 뿐만아니라 해가질때 산에 올라가서 서울 시내를 바라볼때 일몰시간이 시작되면 도심속 빌딩들이 점점 환하게 불이 켜지는것을 목격할 수 있다.

 

우리가 살고있는 이곳은 숨어있는 원리들이 생활속에 하나하나씩 존재한다.

낮에는 불이 안들어오고 밤에만 환하게 비추어주는 가로등의 원리는 과연 무엇일까?

이번시간에 아두이노를 통해서 그 원리를 알아보도록 하자.

 

 

 

CDS는 빛을 받아들이게 되면 전도성을 가지는 반도체이며, 빛의 양에 따라서 저항값이 바뀌게되는 가변저항이다.

센서의 구성물질을 황화카드뮴이며, 회로구성이 간단하고 저렴해서 우리의 실생활에서 자주 유용하게 쓰인다.

 

아두이노에 회로를 구성하게되면, 빛의 양으로인해 저항값이 바뀜과 동시에 전류의 세기도 마찬가지로 바뀌게 되고,

일정하지 않은 전자의 양이 아날로그 값으로 표현이 된다.

그 뒤에 정수로 변환시켜 빛의 양을 한눈에 알아볼 수 있게 우리는 시리얼 모니터를 통해 확인할 수 있게된다. 

 

 

 

   예제실습 - 광센서의 작동확인

 

우선 필요한 준비물은 LED전구 , CDS(빛센서) , 220Ω , 10kΩ 각각 하나씩 필요하다.

 

CDS센서는 특이하게 극성이 존재하지 않는다. 그래서 예외적으로 GND와 5V를 구분하지 않아도 된다. 

CDS회로를 구성할때 전류의 값이 불안정하므로 10k 저항을 구성시킨다.

LED는 5번핀에다가 연결시켜주고 220저항을 연결해준다.

 

int val = 0;

void setup() {
  pinMode(5, OUTPUT);
  Serial.begin(9600);
}
  
void loop() {
  int val = analogRead(A0);
  Serial.println(val);
  if (val < 500){
    digitalWrite(5, HIGH);
  }
  else{
    digitalWrite(5, LOW);
  }
  delay(200);
}

코드는 위와같이 매우 간단하게 구성되어있다.

 

loop문을 추가로 설명하자면 아날로그 값을 읽어올때 정수타입의 변수를 설정해주면 우리가 시리얼 모니터로 읽어오기 훨씬 편리하다. 그래서 가급적이면 정수타입으로 바꿔주는게 좋다.

 

그리고 여기서 조건문을 설정해주고 값이 500이하면 불이 켜지게 하고, 그 이상이면 불이 꺼지게 loop문을 구성해준다.

 

컴파일을 시키게 되면 빛의 양에따라서 위의 사진과 같이 LED의 상태가 바뀌는것을 확인할 수 있다.

 

이 원리는 앞서 말했듯이 이원리는 가로등에서도 쓰이지만, 야간의 자동차의 라이트가 켜지는 원리, 빛의 밝기에 따라서 휴대폰의 밝기가 자동적으로 조절되는 원리랑도 비슷하다.

반응형