[raspberry pi] 파이썬으로 LED 제어하기
라즈베리파이 같이 파이썬으로 제어 가능한 장치가 있을때 단색 LED
및 RGB LED
를 제어하는 기초적인 방법이다.
1. 단색 LED 회로도
LED의 경우 한쪽으로만 전류가 흐르기 때문에, 반드시 긴쪽은 +
에, 짧은쪽은 GND
에 연결해야 하며, 약 200옴
이상의 저항은 연결해야 한다. (저항없이도 가능하지만, LED가 금방 고장남)
2. 단색 LED 파이썬 코드
단색 LED를 on/off
하는 것은 매우 간단하다.
import RPi.GPIO as GPIO
import time
def led(pin, t):
GPIO.setmode(GPIO.BOARD)
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, True)
time.sleep(t)
GPIO.cleanup(pin)
led(18, 5) # 18번 핀에 끼운 LED를 5초동안 점등
만약 특정한 시간으로 제어하는 것이 아닌 on
, off
등의 버튼 형태로 제어하고 싶다면 아래와 같이 작성하면 된다.
import RPi.GPIO as GPIO
import time
def led_on(pin):
GPIO.setmode(GPIO.BOARD)
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, True)
def led_off(pin):
GPIO.setmode(GPIO.BOARD)
GPIO.setup(pin, GPIO.OUT)
GPIO.cleanup(pin)
# 버튼 등을 누를때 함수를 호출하는 형태로 알맞게 변경하여 사용하면 된다.
led_on(18) # led 점등
led_off(18) # led 소등
만약 on/off
뿐만 아니라 밝기를 세세하게 조정하고 싶을 경우에는 아래와 같이 pwm
을 이용하여 작성하면 된다.
import RPi.GPIO as GPIO
import time
def led_pwm(pin):
GPIO.setmode(GPIO.BOARD)
GPIO.setup(pin, GPIO.OUT)
pwm = GPIO.PWM(pin, 100) # pwm 설정 (100Hz)
pwm.start(0)
# 밝기가 0에서 100 까지 0.1초 간격으로 바뀜
for i in range(101):
pwm.ChangeDutyCycle(i)
time.sleep(0.1)
pwm.stop()
GPIO.cleanup()
led_pwm(18)
3. RGB LED 회로도
RGB LED
을 제어하는 것은 단색 LED
3개를 제어하는것과 거의 유사하다. 각 led에 약 200옴
이상의 저항을 꽂아서 사용하면 된다.
(가장 긴 선이 GND
이며, GND
를 기준으로 1개있는 쪽이 빨강
, 나머지가 초록
, 파 랑
이다.)
4. RGB LED 파이썬 코드
단색 LED
를 3개 제어하는것처럼 코드를 작성하면 된다.
import RPi.GPIO as GPIO
import time
pins = (18, 19, 21) # 빨강은 18핀, 초록은 19핀, 파랑은 21핀 지정
def led(pins, color, t):
RGBs = (
(1,1,1), # 하양색
(1,0,0), # 빨강색
(0,1,0), # 초록색
(0,0,1), # 파랑색
(0,1,1), # 청록색
(1,0,1), # 보라색
(1,1,0), # 노랑색
)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(pins[0], GPIO.OUT)
GPIO.setup(pins[1], GPIO.OUT)
GPIO.setup(pins[2], GPIO.OUT)
GPIO.output(pins[0], RGBs[color][0])
GPIO.output(pins[1], RGBs[color][1])
GPIO.output(pins[2], RGBs[color][2])
time.sleep(t)
GPIO.cleanup(pins)
led(pins, 4, 10) # 청록색으로 10초 동안 점등
디지털 출력으로 RGB LED
를 제어하게되면 7가지 색상 밖에 제어하지 못하는데, PWM
을 이용해서 제어하게 되면 모든 색상을 표현할 수 있다.