반응형
아래 테스트는 Raspbian GNU/Linux 10 (buster)에서 테스트되었습니다. |
라즈베리파이 OS(구. 라즈비안)에서 기본적으로 제공되는 파이썬 모듈인 RPi.GPIO를 사용하여 GPIO를 컨트롤 할 수 있습니다. 모듈을 사용하기 위해서 먼저 불러와야 하는데 아래와 같은 import문으로 불러 올 수 있습니다.
import RPi.GPIO as GPIO |
모듈을 불러왔으니 사용할 핀 번호를 정의 해야 하는데 아래 둘 중 한가지 방식을 사용하면 됩니다.
GPIO.setmode(GPIO.BOARD) #라즈베리파이의 핀 번호를 사용(컨넥터 번호를 의미) 또는 GPIO.setmode(GPIO.BCM) #메인칩 제조사인 Broadcom의 핀 번호를 사용 |
예를 들어 아래 이미지를 살펴보면 라즈베리파이 3B+에서는 총 28개의 GPIO를 사용 할 수 있습니다.
이 중 GPIO.BOARD 모드에서의 11번 핀은 GPIO.BCM 모드의 17번 핀과 매핑됩니다.(붉은색 사각형 참고)
GPIO를 할당했으니 해당 GPIO의 채널설정을 합니다.
채널 설정은 설정된 핀을 입력으로 사용할지? 출력으로 사용할지? 를 결정하는것입니다.
channel = 11 # 11번핀을 입력으로 설정 GPIO.setup(channel, GPIO.IN) # 11번핀을 입력으로 설정하고, 해당핀을 PULL-UP/DOWN 시킴 GPIO.setup(channel, GPIO.IN, pull_up_down=GPO.PUD_UP) 또는 GPIO.setup(channel, GPIO.IN, pull_up_down=GPO.PUD_DOWN) # 11번핀을 출력으로 설정 GPIO.setup(channel, GPIO.OUT) # 11번핀을 출력으로 설정하고 초기값 설정 GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH) # 여러 핀을 한번에 출력으로 설정 chan_list = [11,13] GPIO.setup(chan_list, GPIO.OUT) |
GPIO 입력으로 할당된 핀을 읽어 오면 HIGH/LOW의 상태를 알 수 있습니다.
GPIO.input(channel) |
GPIO 출력으로 할당된 핀에 HIGH/LOW를 출력 할 수 있습니다.
# 11 채널 출력 channel = 11 GPIO.output(channel, GPIO.HIGH) # 여러채널 출력 chan_list = [11,12] GPIO.output(chan_list, GPIO.LOW) GPIO.output(chan_list, (GPIO.HIGH, GPIO.LOW)) |
GPIO를 다 사용 후에(프로그램 종료시) RPi.GPIO 모듈을 종료 해 줘야 합니다.
# 일반적인 해제 GPIO.cleanup() # 특정 채널 해제 GPIO.cleanup(channel) # 여러 채널 해제 GPIO.cleanup( (channel1, channel2) ) GPIO.cleanup( [channel1, channel2] ) |
아래 코드로 라즈베리파이의 정보나 모듈 버전을 얻을 수 있습니다.
# 라즈베리파이 정보 GPIO.RPI_INFO # RPi.GPIO 버전 정보 GPIO.VERSION |
실제적인 사용은 아래 게시글을 참고하시기 바랍니다.
반응형
'Hardware > Raspberry PI' 카테고리의 다른 글
[라즈베리파이 3B+] I2C 사용하기(SSD1306 OLED 사용) (2) | 2020.12.27 |
---|---|
[라즈베리파이 3B+] RPi.GPIO 입/출력 사용하기(Python) (0) | 2020.12.26 |
[라즈베리파이 3B+] 스크린 캡쳐 사용하기(scrot 사용하기) (0) | 2020.12.16 |
[라즈베리파이 3B+] MicroSD 카드 백업/복원 (0) | 2020.12.16 |
[라즈베리파이 3B+] vim을 사용한 c/c++/py 소스 컴파일 및 실행 (0) | 2020.12.15 |
댓글