초급 예제

누구나 쉽게 따라해볼 수 있는 쉬운 예제들입니다. 가볍게 도전~!

LED 밝기 제어하기

2014-08-04 10:25:01

개요




일반적으로 노트북은 덮개를 덮어두면 대기모드 혹은 잠자기 모드에 들어가는데요
Apple의 Macbook은  내장되어 있는 전원 LED마저도  이러한 잠자기 모드를  감성적으로 디자인하였습니다.
부드럽게 켜고 꺼지는 LED를 보고 있으면, 기계에 불과한 노트북이 마치 사람처럼 조용히 잠을 자고 있는듯 합니다.

그 원리는 무엇인지 살펴보고, 이러한 LED의 움직임을 아두이노로 구현 해 보겠습니다.

먼저  LED의 밝기를 줄이려면, 두 가지 방법이 있습니다.
하나는 전류를 줄이는 방법과, 또 다른 하나는 펄스폭 변조를 통해 
사람이 인지하지 못하는 속도로, 켜고 꺼짐을 반복하면 됩니다.

출처 : PWM - szauroled

 

일정한 시간에 
켜고 꺼짐을 50:50의 비율로 반복하는것이 50%의 밝기라고 본다면,
켜고 꺼짐을 25:75의 비율로 반복하면 25%의 밝기 상태가 되는것입니다.
그럼 본격적으로 아두이노를 통해 숨쉬는 LED를 만들어 보겠습니다.


 

 

미리보기 동영상

 

 

 

 

 

 

 

부품목록

 

본 학습에는 총 5종류의 부품이 필요합니다.

NO    

부품명                                                                         

수량     

상세설명

1

아두이노 우노

1

아두이노

2

LED

1

LED

3

220Ω 저항

1

저항

4

브레드보드

1

브레드보드

5

점퍼 케이블

2

점퍼 케이블

 

  220Ω 저항 브레드보드  아두이노 점퍼케이블 LED
P
A
R
T
S

 X 1
 
X 1 X 1 X 2 X 1

 

 

하드웨어 making

 

 

브레드보드


 

전자 회로도

 

소프트웨어 coding

 

/*
 제목		: 숨 쉬는 LED
 내용		: PWM 펄스 폭 변조에 대해 알아보고, LED 밝기 제어를 통해 숨쉬는 LED를 구현 해 봅시다. 
 */

// Led를 연결한 핀의 번호
int ledPin = 11; 
// sinVal 선언
float sinVal; 
// ledVal 선언
int ledVal; 

void setup() {
	// ledPin을 출력으로 설정
	pinMode(ledPin, OUTPUT);
}

void loop() {
	for (int x=0; x<180; x++) {
		// 각도값을 라디안 값으로 변경합니다.
		// 다음의 사인값을 얻습니다.
		sinVal = (sin(x*(3.1412/180)));
		//사인값을 통해 ledVal을 얻습니다.
		ledVal = int(sinVal*255);
		// 생성된ledVal을 ledPin으로 출력합니다.
		analogWrite(ledPin, ledVal);
		//25ms 동안 대기합니다.
		delay(25);
	}
}

 

 

사전설명


1.이 예제의 개념은 직접 사인파를 만드는 것입니다.
   사인파의 경로를 따라 LED의 밝기를 가지는
   파도를 만들고 이를 통해  빛의 맥동을 만드는 것입니다.
   최대 밝기까지 페이드 한뒤 다시 아래값으로 백업합​​니다.

 

 

스케치 설명

 

for (int x=0; x<180; x++) {
// 각도값을 라디안 값으로 변경합니다.

sinVal = (sin(x*(3.1412/180)));// 다음의 사인값을 얻습니다.


   여기서 사용한 sin()은 수학적연산 기능으로 각도값을 라디안 값으로 변경하여
   그 결과를 ledVal(LED밝기)값으로 전송함으로써 0부터 255의 밝기 값을 제어하게 됩니다.

 

analogWrite(ledPin, ledVal);// 생성된ledVal을 ledPin으로 출력합니다.

 

 

펄스 폭 변조(PWM) -'~'표시가 있는 핀은 PWM 비율을 변경할수 있으며 , 우노 보드의 경우 11,10,9,6,5,3 핀이 이를 지원합니다.


 



analogWrite에서 인자 Value에는 0부터 255값을 쓸수 있으며, 이는 0V 에서 5V 전압을 의미 합니다.



 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

LED, 아두이노