[아두이노 강좌] 17. 아날로그 신호 PWM 출력하기 / LED 밝기 조절하기 / analogWrite(), 반복문 for()

dd8457f7720c52a9512181cc3c4d2350_1462692


dd8457f7720c52a9512181cc3c4d2350_1462692 개요

 

아두이노는 PWM 출력핀을 통해 아날로그 신호를 출력할 수 있습니다. (디지털핀과 다르게 

입력과 출력이 따로 따로..) 이번 글에서는 아두이노 PWM핀을 통해 아날로그 신호를 

출력하여 LED의 밝기를 조절해보도록 하겠습니다.

 

dd8457f7720c52a9512181cc3c4d2350_1462693
 

 

dd8457f7720c52a9512181cc3c4d2350_1462693 PWM핀 및 PWM출력

 

아두이노 우노 보드는 총 6개의 PWM 출력핀을 가지고 있습니다. 디지털 핀쪽에 물결(~)

표시가 있는 핀이 아두이노의 PWM 출력핀에 해당됩니다.


dd8457f7720c52a9512181cc3c4d2350_1462693

 그림1. 아두이노 PWM 출력핀

 

PWM 출력은 Pulse Width Modulation의 약자로 진동의 폭을 조절한다는 의미입니다.

이러한 출력 방식은 결과적으로 아날로그성 신호를 출력할 수 있게되며, 그 원리는 

다음과 같습니다.


dd8457f7720c52a9512181cc3c4d2350_1462693


디지털 신호는 위 그림과 같이 시간에 따라 Pulse(주기)로 나눌 수 있습니다. 그리고 각 

주기별로 높은 구간(HIGH)과 낮은 구간(LOW)이 존재하게 됩니다. 

 

PWM출력은 각 주기별로 HIGH의 비율(Duty)을 조절함으로써 아날로그성 신호를 

만들어주는 출력방법입니다. 

 

아두이노는 PWM핀을 통해 PWM신호를 출력함으로써 0~5V를 0~255(256가지)의 

신호로 나눠줄수 있습니다. 

 

dd8457f7720c52a9512181cc3c4d2350_1462693

 

 

dd8457f7720c52a9512181cc3c4d2350_1462694
 

 

dd8457f7720c52a9512181cc3c4d2350_1462694 LED 밝기 조절하기

 

LED의 구동전압은 약 1.8~2V입니다. 하지만 LED의 불이 켜지기 시작하는것은 1.2V부터

이며, 전원 입력값에 따라 밝기가 조절됩니다. 이러한 성질과 아두이노의 PWM출력을

통해 LED의 밝기를 조절해보도록 합시다.


dd8457f7720c52a9512181cc3c4d2350_1462694 준비물

dd8457f7720c52a9512181cc3c4d2350_1462694

 

dd8457f7720c52a9512181cc3c4d2350_1462694
  

dd8457f7720c52a9512181cc3c4d2350_1462694 회로도 연결
dd8457f7720c52a9512181cc3c4d2350_1462694
디지털 6번 (PWM)핀에 LED를 연결해주세요. (220옴 저항, GND)

dd8457f7720c52a9512181cc3c4d2350_1462694

 dd8457f7720c52a9512181cc3c4d2350_1462694 프로그램 코드 (7)

void setup() {                     

   pinMode(6, OUTPUT);  // 디지털 6번핀을 출력모드로 설정.

}


void loop() {                                

   for (int i =10;i<255;i=i+10) {  // for()문 (i=10이며; 255보다 작고; 매번 10씩 커진다.)

   analogWrite(6, i);            // 6번핀에  i만큼의 아날로그 신호 출력

   delay(100);                      // 0.1초 동안 딜레이.

   }

}


dd8457f7720c52a9512181cc3c4d2350_1462694

dd8457f7720c52a9512181cc3c4d2350_1462694 프로그램 해석

새로운 코드 for(반복문)이 등장했습니다. for문을 사용하면 반복되는 비슷한 명령어를

간단한 표현으로 실행 시킬 수 있습니다. 완성된 프로그램은 결과적으로 LED가 연결된 

6번핀에 아날로그 신호 i를 출력하게됩니다.

  

dd8457f7720c52a9512181cc3c4d2350_1462695
 

dd8457f7720c52a9512181cc3c4d2350_1462695 관련함수 정리 


■analogWrite(핀번호,값)

아날로그 신호를 출력하기 위한 함수입니다.

매개변수

핀번호 - 신호를 출력할 PWM핀을 입력해줍니다.

값 - 출력할 신호(0~255)를 입력해줍니다.


■for문 (반복문)

반복되는 비슷한 명령어를 간단한 표현으로 실행할 수 있습니다.

매개변수

반복문 - for(초기식;조건식;증감식)으로 사용합니다. 예를 들면 다음과 같습니다.

for (int i =10;i<255;i=i+10) /// for (초기식;조건식;증감식)

 

▶아래 플러스 친구 버튼을 통해 다양한 정보와 교제 자료 및 이벤트등의 소식을 받아보실 수 있습니다.




모바일 버전으로 보기