안녕하세요.
이번에는 켜고 끄는 것을 넘어서, 밝기를 조절할 수 있는 것을 확인할 수 있습니다.
밝기 조절하기 위해서 PWM(Pulse Width Modulation)라는 기술이 필요한데, 간단히 말해서 일정한 주기(주파수) 내에서 파형의 폭(Duty)을 조절해서 밝기(전압)를 저절 한다고 보시면 편하지 않을까 합니다.
PWM으로 LED 밝기 조절하기
Pulse Width Modulation을 사용하면 LED와 같은 디지털 장치에 아날로그 동작을 할 수 있습니다. 즉, LED를 단순히 켜거나 끄는 것이 아니라 밝기를 제어할 수 있습니다.
이 내용에서 마지막(이전) 단계에서 사용한 회로를 사용할 수 있습니다.
Thonny에서 새 파일을 열고 다음 코드를 추가합니다.
from machine import Pin, PWM
from time import sleep
pwm = PWM(Pin(15))
pwm.freq(1000)
while True:
for duty in range(65025):
pwm.duty_u16(duty)
sleep(0.0001)
for duty in range(65025, 0, -1):
pwm.duty_u16(duty)
sleep(0.0001)
파일을 저장하고 실행합니다. 연속 주기로 LED 펄스가 밝거나 어두워지는 것을 확인할 수 있습니다.
주파수(pwm.freq)는 Raspberry Pi Pico에 장착된 LED의 전원을 켜고 끄는 빈도를 알려줍니다.
듀티 사이클(Duty Cycle)은 LED가 매번 켜져 있어야 하는 시간을 알려줍니다. MicroPython의 Raspberry Pi Pico의 경우 범위는 0에서 65025까지입니다. 65025는 시간의 100%이므로 LED가 밝게 유지됩니다. 약 32512의 값은 절반 시간 동안 켜져 있어야 함을 나타냅니다.
pwm.freq() 값과 pwm.duty_u16() 값, 멈추는 시간 길이를 사용하여 깜박이는 LED의 밝기와 속도를 조정하는 방법에 대해 알 수 있습니다.
<참고 사이트>
1. Getting started with Raspberry Pi Pico (Control LED brightness with PWM)
https://projects.raspberrypi.org/en/projects/getting-started-with-the-pico/7
2. Pulse Width Modulation
https://en.wikipedia.org/wiki/Pulse-width_modulation