고급 예제

다양한 도구들을 가지고 마음껏 응용해보세요.

라즈베리 파이-GPIO핀으로 LED제어

2014-12-04 17:00:20

개요 및 부품 목록


라즈베리 파이를 처음 사용하시는 분은 라즈베리 파이 시작하기 - OS설치라즈베리 파이 시작하기 - 아두이노와 연결을 먼저 보시고, 이번 컨텐츠를 하시는 것을 권장합니다.

앞 컨텐츠에서는 라즈베리 파이에 아두이노를 연결하여 아두이노에 업로드를 하고, 아두이노와 연결된 LED를 제어해 보았습니다.

이번엔 GPIO핀을 이용하여 라즈베리 파이에서 아두이노를 거치지 않고 직접 LED를 제어해 보겠습니다.

 

부품 목록

 

no 부품명 수량 상세설명
1 Raspberry Pi Model B+ 1 라즈베리 파이
2 LED 1 LED
3 Button 1 버튼
4 10KΩ 저항 1 저항
5 330Ω 저항 1 저항
6 점퍼케이블 6 점퍼케이블
7 브레드보드 1 브레드보드

 

 

부품명 Raspberry Pi b+ LED Button
파트

 

 

 

부품명 10KΩ 저항 330Ω 저항 점퍼케이블 브레드보드
파트

 

 

 

하드웨어 Making

 

 

회로도

 

브레드보드 레이아웃

 

 

GPIO핀 배치

제가 사용한 라즈베리파이는 B+ 모델이며 GPIO핀은 밑의 그림과 같이 배치되어 있습니다.(총 40핀)

위에 사용된 핀은 1번(3.3V), 6번(GND), 12번(GPIO18), 16번(GPIO23) 번 핀이 사용되었습니다.
핀번호를 잘 확인하시고 연결하시기 바랍니다. 잘못 연결 시 라즈베리 파이가 고장 날 수도 있습니다.

 

 

소프트웨어 Coding

파이선 코드

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN)
GPIO.setup(23, GPIO.OUT)

try:
    while True:
        input_value = GPIO.input(18)
        
        if input_value == False:
            GPIO.output(23, True)
            time.sleep(1)

        else:
            GPIO.output(23, False)
            time.sleep(1)

except KeyboardInterrupt:
    GPIO.cleanup()

파이선에서는 괄호를 쓰는대신 들여쓰기(TAB)로 구분합니다.  앞에 빈칸을 구별해서 써주셔야 제대로 동작합니다.?
sudo python 파일명.py 로 실행 하면 밑의 화면과 같이 커서만 깜빡입니다. 이 때 연결한 버튼을 누르면 LED에 불이 켜집니다. 프로그램 종료는 동작 중에 ctrl + c 를 누르면 됩니다. 



위 코드는 IDLE에서 New Window를 띄워 위의 코드를 작성 하셔도 되고, 터미널에서 nano 에디터를 사용하여 작성 하셔도 됩니다. 작성 후 터미널에서 sudo python 파일명.py 로 실행하면 됩니다.



나노를 쓰시는 경우엔 글 작성 후 ctrl + o 를 누르시면 밑의 화면처럼 File Name to Write 부분이 나오는데(밑의 흰색 부분) 거기에 파일명.py를 쓰신 후 엔터를 누르면 원래 화면으로 돌아갑니다. ctrl+c를 누르면 다시 터미널 화면으로 돌아갑니다.


 

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN)
GPIO.setup(23, GPIO.OUT)

GPIO를 사용하기 위해서는 GPIO.setmode를 설정해야 합니다. mode는 BOARD, BCM 2가지가 있는데, BOARD는 첫번째 사진, BCM은 2번째 사진과 같이 되어있습니다.

직접 핀 위치에 따라서 하실거면 setmode 괄호 안에 GPIO.BOARD를 넣으시면 되고 밑의 사진과 같이 정해진 내부 핀번호를 이용하여 코딩을 할 경우 GPIO.BCM을 사용하면 됩니다. 

이 컨텐츠에서는 BCM을 사용하기 때문에, 핀번호가 18번, 23번으로 선언하고 사용합니다. (BOARD모드일 경우에는 12, 16번 핀을 제어해야합니다.)
* 밑의 BCM사진에서 원안에 있는 번호가 실제 핀 위치, 옆에 써 있는 번호가 GPIO핀 번호 입니다.


* BOARD사진은 구버전 라즈베리파이(26핀)입니다. B+모델을 사용하시면 밑의 BCM 사진과 같이 총 40핀입니다.



 

except KeyboardInterrupt:
    GPIO.cleanup()

GPIO핀 설정을 했으면 종료될 때 설정을 해제하셔야 합니다. 해제를 안하실경우 다시 실행 할 때 경고 메세지가 나옵니다.

KeyboardInterrupt: 를 선언하면 ctrl+c로 프로그램을 종료할 때 밑의 동작을 수행 합니다. 여기에 GPIO.cleanup()을 넣어 주어, 프로그램 종료시 GPIO핀 설정을 다 초기화 해줍니다.
 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

라즈베리 파이, 기타