[RaspberryPI] LED 제어

GPIO

PIN : 회로가 보호되어있는 검은색 플라스틱이 외부와 연결할 수 있는 부분으로 로 구성되어있다.
GPIO 핀 : 칩 제작사가 용도를 정하지 않고, 자유롭게 사용하라고 제작된 핀

라즈베리파이 GPIO 핀 확인 사이트

Library를 통해 Wrapping된 함수를 사용하여 GPIO를 제어할 예정
라즈베리파이 공식 LIB

1. gpiozero(쉬움) - RPi.GPIO를 Wrapping한 LIB
2. RPI.GPIO(보통) - 세부적인 설정

GPIO핀은 출력전압이 3.3V이다.

GPIO 제어 : H/W와 연결된 장치들에게 신호를 보내고, 신호를 전달 받는 가장 간단한 방법

LED 연결

라즈베리파이는 출력전압이 5V3.3V가 있습니다.
LED 동작 전압 : 2.1V이고, 동작 전류 : 20mA이다. 옴의 법칙과 키로히호프의 법칙에 의해 저항을 계산하면,

1. 5V : (5 - 2.1)/0.02 = 145옴 => `220옴` 저항을 사용
2. 3.3V : (3.3 - 2.1) / 0.02 = 60옴 => `220옴` 저항 사용

회로

다음과 같이 회로를 연결 하면 불이 켜집니다

GPIO핀으로 LED 제어

Thonny(쏘니)

라즈베리파이의 파이썬 IDE로, Regular 모드를 사용할 것입니다.

LED 깜빡이기

from gpiozero import LED
from time import sleep

red = LED(17) # 17번핀에 연결
    
while True:
    red.on()
    sleep(1)
    red.off()
    sleep(1)

LED 깜빡임 빨라지기

from gpiozero import LED
from time import sleep

red = LED(17)
   
for i in range(1,100,1): # 1s ~ 10ms까지 빠르게 깜빡이기
   red.on()
   sleep(1/i)
   red.off()
   sleep(1/i)

LED 3개 켜기

from gpiozero import LED
from time import sleep

ledset = [LED(17),LED(27),LED(22)]
    
while True:
    for led in ledset: # 17번핀 LED -> 27번핀 LED -> 22번핀 LED
        led.on()
        sleep(0.5)
        led.off()
        sleep(0.5)

입력된 숫자에 맞는 LED만 켜기

from gpiozero import LED
from time import sleep

ledset = [LED(17),LED(27),LED(22)]]
mode = [0,0,0]

def LEDToggle(n):
    if mode[n] == 0:
        ledset[n].on()
    else :
        ledset[n].off()
        
    mode[n] = not mode[n] # on/off 확인용도

while True:
    print("LED >> ")
    n = int(input()) # 문자로 입력받기 때문에 정수로 바꿔주기
    LEDToggle(n-1) # 0번 index부터 시작하니 -1 해주기

좋은 웹페이지 즐겨찾기