코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
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Ω 저항 | 점퍼케이블 | 브레드보드 |
파트 |
제가 사용한 라즈베리파이는 B+ 모델이며 GPIO핀은 밑의 그림과 같이 배치되어 있습니다.(총 40핀)
위에 사용된 핀은 1번(3.3V), 6번(GND), 12번(GPIO18), 16번(GPIO23) 번 핀이 사용되었습니다.
핀번호를 잘 확인하시고 연결하시기 바랍니다. 잘못 연결 시 라즈베리 파이가 고장 날 수도 있습니다.
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
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!