티스토리 뷰
앞서 LED를 켜고 끄는 것을 배웠습니다. 이번에는 서서히 켰다가 끄겠습니다. 영어로는 Fading LED란 기능입니다. LED에 흐르는 전류 크기에 따라 LED에서 나오는 빛의 세기가 결정됩니다. 따라서 LED의 밝기를 서서히 조절하기 위해서는 아두이노 PWM 핀의 전압을 서서히 올리고 내리면 됩니다.
완성된 회로
<그림 1> 3색 LED 연결
Common Cathode LED는 공통단자가 GND에 연결됩니다. Common Anode LED는 공통단자가 5V에 연결됩니다.
완성된 코드
Common Cathode
int ledRed = 11; int ledGreen = 10; int ledBlue = 9; const int fade = 10; //delay time void setup() { pinMode(ledRed, OUTPUT); pinMode(ledGreen, OUTPUT); pinMode(ledBlue, OUTPUT); } void loop() { //ledRed for (int i = 0; i <= 255; i++) { //RED LED fade in analogWrite(ledRed, i); delay (fade); } for (int i = 255; i >= 0; i--) { //RED LED fade out analogWrite(ledRed, i); delay (fade); } //ledGreen for (int i = 0; i <= 255; i++) { //GREEN LED fade in analogWrite(ledGreen, i); delay (fade); } for (int i = 255; i >= 0; i--) { //GREEN LED fade out analogWrite(ledGreen, i); delay (fade); } //ledBlue for (int i = 0; i <= 255; i++) { //BLUE LED fade in analogWrite(ledBlue, i); delay (fade); } for (int i = 255; i >= 0; i--) { //BLUE LED fade out analogWrite(ledBlue, i); delay (fade); } }
for 문을 이용해서 i를 최소 값 0 부터 최대 값 255까지 증가 시켰습니다. 해당하는 색깔의 LED에 걸리는 전압은 0V 부터 서서히 증가합니다. 그 후 다시 255 부터 0까지 감소 시킵니다.
Common Anode
int ledRed = 11; int ledGreen = 10; int ledBlue = 9; const int fade = 10; // delay time void setup() { pinMode(ledRed, OUTPUT); pinMode(ledGreen, OUTPUT); pinMode(ledBlue, OUTPUT); } void loop() { //ledRed for (int i = 0; i <= 255; i++) { //RED LED fade in analogWrite(ledRed, 255-i); analogWrite(ledGreen, 255); analogWrite(ledBlue, 255); delay (fade); } for (int i = 255; i >= 0; i--) { //RED LED fade out analogWrite(ledRed, 255-i); analogWrite(ledGreen, 255); analogWrite(ledBlue, 255); delay (fade); } //ledGreen for (int i = 0; i <= 255; i++) { //GREEN LED fade in analogWrite(ledRed, 255); analogWrite(ledGreen, 255-i); analogWrite(ledBlue, 255); delay (fade); } for (int i = 255; i >= 0; i--) { //GREEN LED fade out analogWrite(ledRed, 255); analogWrite(ledGreen, 255-i); analogWrite(ledBlue, 255); delay (fade); } //ledBlue for (int i = 0; i <= 255; i++) { //BLUE LED fade in analogWrite(ledRed, 255); analogWrite(ledGreen, 255); analogWrite(ledBlue, 255-i); delay (fade); } for (int i = 255; i >= 0; i--) { //BLUE LED fade out analogWrite(ledRed, 255); analogWrite(ledGreen, 255); analogWrite(ledBlue, 255-i); delay (fade); } }
Common Anode LED는 전류가 Vcc에서 LED를 거쳐 Digital Pin으로 흐릅니다. Digital 핀에서 신호가 나오면 전류가 흐르지 못해 LED가 켜지지 않습니다. 켜고자 하는 LED에 해당하는 핀의 출력을 없애면 그 LED가 켜집니다. 따라서 켜고 싶은 LED를 (255-i)로 입력하고, 켜지 않는 LED는 255를 입력해야 합니다. RGB LED에 대한 상세한 설명은 아래 글을 참고 바랍니다.
<그림 2> LED Fade 모습
'아두이노' 카테고리의 다른 글
[아두이노] 포텐셔미터로 스탭모터 제어하기 (1) | 2019.02.04 |
---|---|
[아두이노] 스텝 모터 사용하기 (4) | 2019.02.01 |
[아두이노] 포텐셔미터로 서보모터 동작 (1) | 2019.01.23 |
[아두이노] 시리얼 모니터로 DC모터 제어 (2) | 2019.01.22 |
[아두이노] LED 색깔 별 특성 (1) | 2019.01.18 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Solar Panel
- 릴레이
- 습도
- relay
- 온도
- dc 모터
- solar
- 시리얼 모니터
- 애자일
- 아두이노
- Stepper Motor
- DHT22
- DC Motor
- Step Motor
- Renewable
- Solar Sharing
- Scrum
- 스크럼
- 코딩
- agile
- 태양광 공유
- 초음파센서
- Potentiometer
- 서보모터
- 4 원칙
- dht
- LED
- Fading LED
- Arduino
- 태양광
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함