본문 바로가기

[라즈베리파이 3B+] RPi.GPIO 살펴보기(Python)

by rudals.kim 2020. 12. 24. 댓글 개
반응형
아래 테스트는 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

 

실제적인 사용은 아래 게시글을 참고하시기 바랍니다.

 

[라즈베리파이 3B+] RPi.GPIO 입/출력 사용하기(Python)

아래 테스트는 Raspbian GNU/Linux 10 (buster)에서 테스트되었습니다. ## 출력테스트 라즈베리파이 3B+에서 RPi.GPIO 모듈의 사용법을 살펴보았습니다. [라즈베리파이 3B+] RPi.GPIO 살펴보기(Python) 라즈베리파

rudalskim.tistory.com

 

반응형

댓글