본문 바로가기
코딩/아두이노

아두이노 CDS로 LED 제어 해보자(LED 미터기)

by 어릴적 꿈은 미친과학자 2019. 11. 13.

안녕하세요 전자공이 입니다.

본문에서 해볼 것은 아두이노에서 CDS 값을 받아 시리얼 출력하고 값의 조건에 맞춰 LED를 5단계로 불을 켜주는 CDS LED 5단계 게이지를 만들어 보겠습니다.

cds 값에 따라 LED의 빛이 미터기로 작동하는 것 만들기

 

 

 

쓸모있는 녀석

 

-회로 구성-

아래의 글들에 들어가서 LED 연결 방법과 CDS 광센서 연결 방법을 참고하여 아두이노에 연결해준다.

-----------------------------------------------------------------------------------------------------------------------------------

아두이노 LED를 켜보자

 

아두이노 LED를 켜보자

아두이노를 처음 시작했다면 LED를 켜봐야 아두이노 해봤다고 할 수 있다. 그래서 이번 글에서는 아두이노로 LED를 켜고 끄는 방법을 알아보려고 한다. 아두이노 프로그램을 시작하기 앞서서 미리 준비를 하자 -준..

nova1004.tistory.com

 

 

아두이노 ------------<>------------LED(+) 극에 저항 반드시 달아줄 것

pin2--------------------------------LED1

pin3--------------------------------LED1

pin4--------------------------------LED1

pin5--------------------------------LED1

pin6--------------------------------LED1

 

아두이노 ------------<>------------CDS극에 저항 반드시 달아줄 것

VCC-------------------------------CDS

GND------------------------------CDS

 

이렇게 해줘야 됩니다.

-----------------------------------------------------------------------------------------------------------------------------------

회로 구성을 다해주고

아래의 코드를 입력하고 업로드해줍니다.

 

 

아두이노 코드 부분

 

-코딩 및 설명-

CDS 값이 낮아질 수 록 빛이 많아지는 코드입니다.

마치 저녁에 되어 빛이 없어지면 켜지는 가로등 같이 작동하게 됩니다.

-----------------------------------------------------------------------------------------------------------------------------------

void setup(){
  Serial.begin(9600);   // 시리얼 통신 속도를 9600 바이트로 선언
  pinMode(2, OUTPUT);  // 핀 2번을 OUTPUT으로 사용
  pinMode(3, OUTPUT);  // 핀 3번을 OUTPUT으로 사용
  pinMode(4, OUTPUT);  // 핀 4번을 OUTPUT으로 사용
  pinMode(5, OUTPUT);  // 핀 5번을 OUTPUT으로 사용
  pinMode(6, OUTPUT);  // 핀 6번을 OUTPUT으로 사용
  }

  void loop(){
    int level =analogRead(A0);   // level에 analogRead (A0) 값을 넣어줌
Serial.println(analogRead(A0));   // analogRead(A0)의 값 출력을 보기 위한 시리얼 출력 코드

if(level>100){  // level이 100 넘으면 모두 led를 끄겠다는 조건
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
 else if(level>80){  // level이 80 넘으면 LED를 한 개 켜겠다는 조건
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
  }
else if (level>60){  // level이 60 넘으면 LED를 두 개 켜겠다는 조건
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);

  }
  else if (level>40){ // level이 40 넘으면 LED를 세 개 켜겠다는 조건
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);

  }
  else if (level>20){  // level이 20 넘으면 LED를 네 개 켜겠다는 조건
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);

  }
else { // 위의 조건에 위배되지 않는 조건이라면 모든 불을 켜겠다는 조건
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
  }

delay(10);  // 시리얼 모니터에서 CDS 값이 얼마나 나오는지 천천히 보고 싶다면 값을 낮추세요
    }

-----------------------------------------------------------------------------------------------------------------------------------

맨아래 딜레이를 낮추면 빠른 반응을!! 딜레이를 높이면 시리얼 모니터상 값을 정확히 볼 수 있습니다.

물론 딜레이가 생긴만큼 반응은 느려지지만 확인을 위해서 한 번씩 바꾸어 보세요.

 

 

회로 구성을 마치고 업로드를 했다면 테스트해봅시다.

 

1
2
3

착한 친구들은 이렇게 밀집하여 LED 연결하지 말고 반드시 하나하나 연결해주세요

 

4

조건 1에 대해 빛을 차단해 봅니다.

 

5

조건 2에 대해 빛을 차단해 봅니다.

 

6

조건 3에 대해 빛을 차단해 봅니다.

 

7

조건 4에 대해 빛을 차단해 봅니다.

 

8

 

나머지 조건 else에 대한 LED 켜짐이 되었습니다.

완벽하게 가로등처럼 작동을 합니다. 짠~

 

다시 손을 떼면?

9

 

빛이 CDS에 비추어지기 때문에 LED에 불이 들어오지 않습니다.

 

CDS 여러모로 쓸모가 많은 소자 입니다.

잘 작동되는지 따라 해 보고 꼭 자신의 것으로 만들어 봅시다.

(LED는 반드시 하나하나 연결해주세요 사진처럼 연결하면 나중에 헷갈려요...)

 

 

 

-아두이노 CDS LED 게이지 만들어 보기 끝-

 

댓글


page contents