안녕하세요.
이전 내용에서 For문을 이용해서 자동으로 밝기가 조절되게 했는데, 이번에는 가변저항을 부착해서 아날로그 값으로 읽어서 듀티 값으로 적용하는 것입니다.
추가 부품은 가변저항으로, 가능하다면 1KΩ 이상 되는 저항을 이용하는 것을 추천드립니다. 테스트는 10KΩ으로 하였습니다.
가변저항 값을 변경하여 아날로그 핀에 입력되는 전압을 조절합니다. 그 입력되는 값을 사용하여 LED의 밝기를 제어하는 것입니다.
가변저항으로 LED 밝기 조절하기
Raspberry Pi Pico에는 아날로그 신호를 수신할 수 있는 입력 핀이 있습니다. 즉, 1과 0(켜기 및 끄기)의 값만 읽는 대신 그 사이의 값을 읽을 수 있습니다.
가변저항(Potentiometer)은 이 기능을 위한 완벽한 아날로그 장치입니다.
회로의 버튼을 가변저항으로 교체합니다. 아래 배선도에 따라 아날로그 핀에 연결합니다.
(추가 내용 : 가변저항 3핀을 연결할 때 한쪽 끝은 GND, 다른 쪽 끝은 3.3V, 중간 핀은 GP26_ADC0에 연결합니다.)
Thonny의 새 파일에서 먼저 가변저항의 저항값을 읽을 수 있습니다.
이 코드를 새 파일에 추가한 다음 실행합니다.
from machine import ADC, Pin
import time
adc = ADC(Pin(26))
while True:
print(adc.read_u16())
time.sleep(1)
가변저항을 돌려 최댓값과 최솟값을 확인합니다.
약 0에서 65025 사이여야 합니다.
(추가 내용 : 가변저항을 돌리면 Shell 창에 변화되는 값이 표시됩니다.)
이제 이 값을 사용하여 LED의 PWM의 듀티 사이클을 제어할 수 있습니다.
코드를 다음과 같이 변경합니다. 실행한 후에는 가변저항의 다이얼을 조정하여 LED의 밝기를 제어합니다.
from machine import Pin, PWM, ADC
pwm = PWM(Pin(15))
adc = ADC(Pin(26))
pwm.freq(1000)
while True:
duty = adc.read_u16()
pwm.duty_u16(duty)
(추가 내용: 코드상 ADC에서 읽은 값을 duty 값으로 바로 전달하기 때문에 가변저항의 저항값을 변화를 주면 바로 LED 밝기가 변화하는 것을 알 수 있습니다.)
다음은 마지막 내용으로 "Raspberry Pi Pico 전원 공급(Power your Raspberry Pi Pico)"입니다.
감사합니다.
<참고 사이트>
1. Getting started with Raspberry Pi Pico (Control an LED with an analogue input)
https://projects.raspberrypi.org/en/projects/getting-started-with-the-pico/8