아두이노에서 아날로그 데이터를 출력할 수 있다. 아날로그 신호는 자연환경에서 나오는 소리의 크기나 빛의 강도처럼 데이터가 연속적으로 연결되는 신호를 말하며 디지털 신호는 1과 0, On과 Off처럼 이산적인 신호를 말한다. 아날로그 신호는 다양한 값을 가질 수 있지만 디지털 신호는 0과 1의 값을 가질 수 있을 뿐이고 그 사이의 값이 존재하지 않는다. 따라서 LED를 디지털 출력으로 표현하면 On 또는 Off의 상태만 출력할 수 있다.
그렇다면 디지털 신호를 아날로그 신호로 바꾸어서 LED의 밝기를 조절할 수 있을까? 아두이노에서는 PWM을 이용하여 값을 조절할 수 있다. PWM은 펄스의 폭을 컨트롤하는 주기 제어 방법으로 디지털 신호를 아날로그 신호처럼 만들어 내는 기술이다.
아두이노에서는 analogWrite(pin,value) 함수를 이용하여 LED를 다양한 밝기로 켤 수 있다.
analogWrite(pin,value) // pin:핀번호, value: Duty Cycle(일정주기에 대한 5V 상태의 비율)
value가 가질 수 있는 값의 범위는 0에서 255까지의 정수이다. 따라서 아두이노에서 LED의 밝기를 256단계로 조절할 수 있다.
아두이노에서 PWM을 사용할 수 있는 핀 번호는 번호 앞에 물결 모양(~)이 있는 번호이다.
~3,~5,~6.~9,~10,~11번 핀을 PWM 핀으로 사용할 수 있다.