안녕하세요 전자공이 입니다.
본문에서 해볼 것은 아두이노에서 CDS 값을 받아 시리얼 출력하고 값의 조건에 맞춰 LED를 5단계로 불을 켜주는 CDS LED 5단계 게이지를 만들어 보겠습니다.
cds 값에 따라 LED의 빛이 미터기로 작동하는 것 만들기
-회로 구성-
아래의 글들에 들어가서 LED 연결 방법과 CDS 광센서 연결 방법을 참고하여 아두이노에 연결해준다.
-----------------------------------------------------------------------------------------------------------------------------------
아두이노 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 값이 얼마나 나오는지 천천히 보고 싶다면 값을 낮추세요
}
-----------------------------------------------------------------------------------------------------------------------------------
맨아래 딜레이를 낮추면 빠른 반응을!! 딜레이를 높이면 시리얼 모니터상 값을 정확히 볼 수 있습니다.
물론 딜레이가 생긴만큼 반응은 느려지지만 확인을 위해서 한 번씩 바꾸어 보세요.
회로 구성을 마치고 업로드를 했다면 테스트해봅시다.
착한 친구들은 이렇게 밀집하여 LED 연결하지 말고 반드시 하나하나 연결해주세요
조건 1에 대해 빛을 차단해 봅니다.
조건 2에 대해 빛을 차단해 봅니다.
조건 3에 대해 빛을 차단해 봅니다.
조건 4에 대해 빛을 차단해 봅니다.
나머지 조건 else에 대한 LED 켜짐이 되었습니다.
완벽하게 가로등처럼 작동을 합니다. 짠~
다시 손을 떼면?
빛이 CDS에 비추어지기 때문에 LED에 불이 들어오지 않습니다.
CDS 여러모로 쓸모가 많은 소자 입니다.
잘 작동되는지 따라 해 보고 꼭 자신의 것으로 만들어 봅시다.
(LED는 반드시 하나하나 연결해주세요 사진처럼 연결하면 나중에 헷갈려요...)
-아두이노 CDS LED 게이지 만들어 보기 끝-
'코딩 > 아두이노' 카테고리의 다른 글
아두이노 초음파 센서와 LED를 이용 하여 거리를 측정 해보자 (0) | 2019.11.17 |
---|---|
아두이노 온습도 센서 제어 해보자 (0) | 2019.11.11 |
아두이노 초음파 센서(HC-SR04) 로 거리 측정을 해보자 (0) | 2019.11.09 |
아두이노로 광센서 값을 시리얼 모니터로 출력해보자 (0) | 2019.11.08 |
아두이노 시리얼 통신으로 LED를 제어 해보자 (0) | 2019.11.05 |
댓글