티스토리 뷰
1. 목표
- LED 밝기 제어하는 것을 목표로 한다. 단, 지난번에 LED 연결하기와 회로구성은 동일하다.
2. PWM (Pulse Width Modulation)
- RPi.GPIO API에 LED의 밝기와 전원을 제어할 수 있는 PWM 함수를 이용한다.
- PWM은 초당 펄스의 주파수를 유지한 채, 펄스의 길이를 변화시키는 기술이다.
- LED 밝기, 모터 스피드 제어에 사용된다.
1) PWM 초기화
- PWM 초기화를 위해서, GPIO.PWM([pin], [frequency]) 함수를 사용한다.
. pin : GPIO의 pin 번호
- pwm.start([duty cycle]) 함수를 통해, duty cycle 초기값을 세팅한다.
pwm = GPIO.PWM(18, 500) pwm.start(100)
-> PWM 의 500Hz 주파수를 세팅하고, 출력을 100%이 duty cycle로 세팅한다.
2) PWM 출력 변경
- pwm.ChangeDutyCycle([duty cycle]) 함수를 사용하면, 0%~100% 사이의 [duty cycle] 값으로 바꿀 수 있다.
- [duty cycle]의 개념을 wiki에 검색하면, 다음과 같이 나온다.
. "어떤 신호가 활성화되는데 한 주기의 퍼센트 값이다. 주기는 신호가 하나의 on-and-off의 cycle가 완성되는데 걸리는 시간을 의미한다. "
. "펄스 폭 변조 (PWM)는 전력 공급 및 전압 조절과 같은 다양한 전기적 상황에 사용된다."
pwm.ChangeDutyCycle(10)
3) PWM 종료
- pwm.stop() 명령을 통해서 핀 종료가 가능하다.
3. 소스
- https://github.com/gregor77/raspberrypi/blob/master/code/gpio_basic/led_control_bright.py
- 'end'를 키보드 입력하면, LED 밝기 제어는 종료된다.
- PWM의 duty cycle은 1에서 100까지 입력 가능하다.
import RPi.GPIO as GPIO led_pin = 18 GPIO.setmode(GPIO.BCM) GPIO.setup(led_pin, GPIO.OUT) pwm_led = GPIO.PWM(led_pin, 500) pwm_led.start(100) while True: duty_str = raw_input("Enter Brightness (0 to 100):") duty = int(duty_str) if duty > 100: print("wrong input value.") else: pwm_led.ChangeDutyCycle(duty) end_key = raw_input(" - Stop to Blink LED, Please enter the 'end' : ") if end_key == "end": break GPIO.cleanup()
4. 실행 화면
- 영상을 보면 duty cycle의 값을 1에서 100까지 증가시키면 LED의 밝기가 밝아지는 것을 확인할 수 있다.
'Raspberry Pi > GPIO' 카테고리의 다른 글
라즈베리파이 GPIO : LED 연결하기 (1) | 2015.06.09 |
---|
- Total
- Today
- Yesterday
- 마크다운 티스토리
- React시작하기
- 파이썬 데이터분석
- enzyme
- start-React
- mocha
- git proxy
- LED 밝기 제어
- Git 개념
- Express
- 라즈베리파이 GPIO
- matplotlib
- Git Password
- pandas
- jupyter notebook
- 라즈베리파이 스크린샷
- 라즈베리파이 Screenshot
- EJS
- LED 연결하기
- redux
- react
- Learning React
- Git 암호 저장
- ES6
- 파이썬 Jupyter Notebook 실전입문
- proxy node.js
- markdown티스토리
- Proxy
- Github proxy 서버
- React 시작
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |