기록

PWM_LED 밝기 제어 본문

라즈베리파이

PWM_LED 밝기 제어

youngyin 2020. 10. 20. 22:07

PWM(Pulse Width Modulation)

주기적으로 반복되는 ON 또는 OFF 신호를 통해서 모터, 팬의 속도나 LED 밝기 등을 제어한다. 신호의 주기에서 ON신호가 지속되는 시간의 비율을 듀티 사이클이라고 하며, 이 값이 클수혹 팬속도가 빨라지고, LED 가 밝아진다.

 

펄스 폭 변조 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 펄스 폭 변조의 변조된 펄스 폭(0%,25%,%0%,75%,100%) 0v~5v기준 펄스 폭 변조(Pulse Width Modulation, PWM) 방식은 펄스의 폭을 조절하는 방식으로 변조한다. 때때로 PDM(pulse-du

ko.wikipedia.org

브레드보드 연결

라즈베리 파이 스위치
GPIO 18 +
GND -

코드

#-*-coding:utf-8-*-

# 필요한 라이브러리를 불러옵니다. 
import RPi.GPIO as GPIO
import time

# 불필요한 warning 제거,  GPIO핀의 번호 모드 설정
GPIO.setwarnings(False)  
GPIO.setmode(GPIO.BCM)

# GPIO 18번 핀을 출력으로 설정 
GPIO.setup(18, GPIO.OUT)  
# PWM 인스턴스 p를 만들고  GPIO 18번을 PWM 핀으로 설정, 주파수  = 50Hz
p = GPIO.PWM(18, 50)  

p.start(0)  # PWM 시작  , 듀티비  = 0

try:               
    while 1:   
        for dc in range(0, 101, 5):     # dc의 값은  0에서 100까지 5만큼 증가  
            p.ChangeDutyCycle(dc)       # dc의 값으로 듀티비 변경  
            time.sleep(0.1)             # 0.1초 딜레이       
        for dc in range(100, -1, -5):   # dc의 값은  100에서 0까지 5만큼 감소   
            p.ChangeDutyCycle(dc)       # dc의 값으로 듀티비 변경  
            time.sleep(0.1)             # 0.1초 딜레이 
except KeyboardInterrupt:               # 키보드 Ctrl+C 눌렀을 때 예외발생 
    pass                                # 무한반복을 빠져나와 아래의 코드를 실행  
p.stop()                                # PWM을 종료
GPIO.cleanup()                          # GPIO 설정을 초기화 

실습결과

 

 

 

'라즈베리파이' 카테고리의 다른 글

Servo모터 제어하기  (0) 2020.10.23
버튼으로 LED 제어하기  (0) 2020.10.18
Button으로 입력받기  (0) 2020.10.17
LED 제어하기  (0) 2020.10.16
Raspeberry Pi 초기설정  (0) 2020.10.15
Comments