안녕하세요 땜블리 입니다.
라즈베리파이 피코 베이직 트레이닝 보드를 이용한 PWM 제어실습을 진행 하겠습니다.
베이직 트레이닝 보드는 아래에서 확인이 가능합니다.
https://ttcw.tistory.com/4
1) PWM 제어 구동 원리
(1) 동작설명
PWM은 가장 일반적인 전압 제어 방법입니다. 일정한 주기에서, 출력이 필요로 하는 만큼의 전력을 스위치 ON하여 입력으로부터 공급받습니다. 따라서, 필요한 출력전력에 따라 ON / OFF의 비율, 듀티 사이클 (duty cycle)이 달라집니다. 듀티비가 클수록 모터에 전류가 흐르는 전체 시간이 길어집니다.
펄스 폭 변조(Pulse Width Modulation) 신호
2) PWM기능을 이용하여 LED밝기 제어
(1) 동작설명
가변저항을 이용하여 밝기를 제어 합니다.
(2) 코드작성
code.py
import time
import board
import pwmio
from analogio import AnalogIn
led1 = pwmio.PWMOut(board.GP2, frequency=5000, duty_cycle=0)
led2 = pwmio.PWMOut(board.GP3, frequency=5000, duty_cycle=0)
VR = AnalogIn(board.GP26)
while True:
led1.duty_cycle = VR.value
led2.duty_cycle = VR.value
time.sleep(0.1)
(3) 동작 결과
3) PWM기능을 이용하여 LED 숨쉬기 만들기
(1) 동작설명
LED가 자연스럽게 숨을 쉬는(breathing) 효과를 주기 위해서는, 밝기가 서서히 증가하고 감소하는 애니메이션 효과를 추가해야 합니다. 이를 위해 PWM(Pulse-Width Modulation) 기능을 사용하여 LED의 밝기를 서서히 조절하면서, 적절한 딜레이를 주어 자연스러운 숨쉬기 효과를 만들 수 있습니다.
def breathe(): # breathe() 함수는 LED의 밝기를 서서히 증가시킨 후, 서서히 감소시키는 동작을 반복하여 LED가 자연스럽게 숨을 쉬는 효과를 줍니다
(2) 코드작성
code.py
import time
import board
import pwmio
led1 = pwmio.PWMOut(board.GP2, frequency=5000, duty_cycle=0)
led2 = pwmio.PWMOut(board.GP3, frequency=5000, duty_cycle=0)
# LED 숨쉬기 효과 함수 정의
def breathe():
# LED 밝기를 서서히 증가시키기
for i in range(0, 65535, 100):
led1.duty_cycle = i
led2.duty_cycle = i
time.sleep(0.007)
# LED 밝기를 서서히 감소시키기
for i in range(65535, 0, -100):
led1.duty_cycle = i
led2.duty_cycle = i
time.sleep(0.007)
while True:
breathe()
(3) 동작 결과
'라즈베리파이_피코_피코 W > circuitPython' 카테고리의 다른 글
08. Circuit 파이썬 라즈베리파 피코 W 릴레이제어 (0) | 2023.03.17 |
---|---|
07. Circuit 파이썬 라즈베리파이 피코 W WS2812 제어하기 (2) | 2023.03.16 |
05. Circuit 파이썬 라즈베리파이 피코 W ADC 제어 (0) | 2023.03.14 |
04. Circuit 파이썬 라즈베리파이 피코 W 부저 제어 (2) | 2023.03.13 |
03. Circuit 파이썬 라즈베리파이 피코 W 스위치 제어 (0) | 2023.03.12 |
댓글