라즈베리파이에서 GPIO 파이썬을 이용해서 PUSH버튼으로 LED점등 #1

안녕하세요.

이번에 소개할 내용은 라즈베리파이에서 GPIO, 파이썬을 이용해서 PUSH버튼으로 LED점등하기 #1 입니다.

우리가 일상적으로 집에 들어왔을경우 버튼을 누르고 거실의 등을 키는것과 같은 역활로

버튼을 누르게 되면 LED가 점등이 되는것을 만들어 보도록 하겠습니다.

준비물
  • 라즈베리파이 OS, 파이썬 설치가 완료된 상태
  • 점퍼케이블 암/수 4줄, 수컷 2줄
  • 플레이트 보드
  • 저항 330Ω, 10KΩ 각 1개씩
  • LED전구
  • 푸쉬버튼

image

저항과 점퍼케이블 연결 회로도와 같이 연결을 해주시면 되겠습니다.

image

색깔별 점퍼케이블의 연결순서는 아래의 표를 참고해 주세요.

Color Pi GPIO Pin Notes
Red 1 3.3V
Yellow 31 6(GPCLK2)
Black 39 GND
Blue 40 21(SP1_SCLK)

GPIO핀에 대한 자세한 내용을 원하시는 분은 아래의 링크를 들어가셔서 참고해 주세요.

라즈베리파이에서 GPIO를 사용하기전 알아두어야 할 사항

위와같이 라즈베리파이와 플레이트 보드의 구성을 모두 마치셨으면

이제 본격적인 코딩을 해야만 합니다.

Visual Studio Code(비주얼 스튜디오 코드)를 실행해 주시기 바랍니다.

image

실행을 하셨으면 파일명을 gpio_push_led.py로 추가를 해주시기 바랍니다.

image

간단한 예제로 버튼을 누르면 LED가 켜지고 버튼을 떼면 LED가 꺼지는 소스를 작성 하겠습니다.

아래의 코드를 입력해 주세요.

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
import time
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
# 31Pin GPCLK2
GPIO.setup(6, GPIO.OUT)
# 40Pin SP1_SCLK
GPIO.setup(21, GPIO.IN)

try:
while True:
# 40Pin의 버튼에 대한 입력값
inputIO = GPIO.input(21)

# 버튼이 눌렸는지 체크
if inputIO == False:
# LED를 켜기
GPIO.output(6, GPIO.HIGH)

else:
# LED를 끄기
GPIO.output(6, GPIO.LOW)

# Ctrl + C키를 누르면 종료 됩니다.
except KeyboardInterrupt:
# 종료시 LED를 무조건 끄기
GPIO.output(6, GPIO.LOW)

# GPIO 클린업
finally:
GPIO.cleanup()

작성하신 소스를 라즈베리파이에 넣고 실행을 하기위해

소스파일을 라즈베리파이의 임의의 폴더에 올려주시기 바랍니다.

그리고 라즈베리파이를 VNC를 이용해 접속후 터미널을 실행해 주세요.

image

라즈베리파이의 리스트 목록을 보시면 gpio_push_led.py 파일명으로 파일이 올라가 있는걸 확인할수 있습니다.

이제 명령어로 버튼을 눌렀을경우 LED가 켜지고 꺼지는지 확인 해보도록 하겠습니다.

아래의 명령어를 입력해 주세요.

1
2
# 파이썬 2.x버전대를 이용하실경우
$ sudo python ./gpio_push_led.py
1
2
# 파이썬 3.x버전대를 이용하실경우
$ sudo python3 ./gpio_push_led.py

저의 경우는 3.x버전대를 이용하기에 3.x버전대의 명령어로 실행을 하겠습니다.

image

위와같이 실행이 된 상태에서 버튼을 눌러보시면 LED가 켜지는것을 확인하실수 있습니다.

만일 LED가 켜키지 않을경우 배선이 맞게 되어있는지 LED를 (+,-)가 맞게 꼽혀있는지 확인해 주세요.

프로그램을 종료를 하실경우에는 Ctrl + C키를 눌러주시면 프로그램이 종료 됩니다.

이렇게해서 푸쉬버튼을 이용한 LED 켜고 끄기가 끝났습니다.

이것을 이용을 하시면 좀더 다양한 방식으로 버튼을 이용한 여러가지 개발을 하실수가 있겠습니다.

AkibaTV