본문 바로가기

라즈베리파이

3. 라즈베리파이 GPIO LED 제어하기

라즈베리파이 GPIO LED 제어하기

라즈베리파이 초기에 설치하였던 라즈비안에 기본으로 탑재되어 있는 GPIO zero 라이브러리를 이용하여 LED를 제어하는 방법에 대해서 알아보자


만약 파이썬에서 실행시 에러가 발생하였다면 다음과 같이 GPIO zero 라이브러리를 설치하면 된다.

 - 터미널을 열어서 레파지토리(Repository)를 업데이트

pi@raspberrypi:~$ sudo apt update

 - 다음과 같이 패키지를 설치

pi@raspberrypi:~$ sudo apt install python3-gpiozero


우선 시작하기에 앞서 하드웨어를 구성해보자

LED의 짧은 다리를 GND에 연결하고 긴다리를 저항과 연결하여 라즈베리파이의 GPIO 핀에 연결합니다.

※ 참고로 라즈베리파이 GPIO 핀은 3.3 volt 출력 입니다.


◆ 여기서 잠깐 ! !  ☞ LED 극 구분하는 방법


 - 긴 다리 : +극, 애노드(Anode), 내부의 판이 작은 쪽

 - 짧은 다리 : -극, 캐소드(Cathode), 내부의 판이 큰 쪽

 LED 극 구분


라즈베리파이의 GPIO 17번에 LED (+)극을 연결하였습니다.

GPIO LED



◆ 여기서 잠깐 ! !  ☞ LED 연결 저항값 계산하기 


간단히 설명하면

 저항값 = (입력전압 - LED 구동 최소전압) / LED 정격전류

           = (3.3[V] - 1.8[V]) / 20[mA]

           = 1.5[V] / 0.02[A]

           = 75[Ω]

따라서, 75Ω 이상의 저항을 사용

※ 주위에서 흔히 볼 수 있는 붉은색 LED는 최소 전압이 1.8volt이고 전격 전류는 20mA 입니다.


하드웨어 구성이 끝났으면 파이썬으로 실행 코드를 작성해보자.

from gpiozero import LED from time import sleep red_led = LED(17)

count = 0 while True: red_led.on() sleep(1) red_led.off() sleep(1)

count = count + 1

if count >= 10:

break

LED가 1초 주기로 On / Off됨을 확인할 수 있다.


여기서, 코드의 led = LED(17)은 GPIO17 핀(보드상의 물리적 위치는 17번)을 의미합니다. 

led = LED(17) 대신에 다음과 같이 핀이름을 명확화하여 사용해도 상관 없습니다.

 ▶ led = LED("GPIO17") # GPIO17

 ▶ led = LED("BCM11") # Broadcom의 핀 번호 11

 ▶ led = LED("BOARD11") # Broad의 핀 번호 11, BCM핀번호와 동일


위의 실습이 완료되었으면 빨강, 노랑, 초록 LED 3개를 이용하여 신호등을 만들어 보자

동일한 방법으로 3개의 LED의 긴다리에 저항을 연결하고 각각을 GPIO2, GPIO3, GPIO4번에 연결 후 짧은 다리는 전부 GND(Ground)에 연결하자.

GPIO 신호등 LED

 

다음은 파인썬 코드를 작성해보자.

from gpiozero import LED from time import sleep red_led = LED(2)

yellow_led = LED(3)

green_led = LED(4)

count = 0 while True: red_led.on()

yellow_led.off()

green_led.off() sleep(1)

red_led.off()

yellow_led.on()

green_led.off()

sleep(1)

red_led.off()

yellow_led.on()

green_led.off()

sleep(1)

count = count + 1

if count >= 10:

break


3개의 LED가 차례대로 1초씩 켜지는 것을 확인할 수 있습니다.


해보시고 잘 안되는 부분 있으면 댓글 주세요~