라즈베리파이:GPIO
개요[편집 | 원본 편집]
general-purpose input/output. 다용도 입출력. 라즈베리파이 보드에서 센서들을 추가하기 위해 기본적으로 사용되는 인터페이스. 기본적으로 아두이노와 유사한 구조로, 핀을 통해 신호를 읽거나 내뱉는 방식이다.
유의[편집 | 원본 편집]
- GPIO 핀으로 3.3V 이상이 들어오지 않게 각별히 주의하자.
- 코드가 종료되는 등 상황에서 GPIO.cleanup() 을 실행해주어 자원을 돌려주고 점유한 핀을 초기화 해야 한다.
다양하게 제어하는 방식이 있지만, 파이썬이 적절한 대안일 듯하다.
파이썬의 RPi.GPIO, WiringPi로 제어가 가능하다.
입출력[편집 | 원본 편집]
입력[편집 | 원본 편집]
3.3V까지 받아들이며, 디지털신호만 받는다. 아날로그를 받기 위해선 ADC기능을 가진 IC를 사용해야 한다.
의도 | 설명 | 방법 |
---|---|---|
호출 | import RPi.GPIO as GPIO | |
핀 설정 | GPIO.setmode(GPIO.BOARD) # 핀 번호로 사용하겠다는 설정.
GPIO.setmode(GPIO.BCM) # GPIO번호로 사용하겠다는 설정. | |
핀 설정2 | 스위치를 누르지 않은 상태에선 0이 되야 할 것 같지만..
라즈베리파이에선 아무 값도 들어오지 않는 floating 상태가 된다. 이를 위해 풀다운 저항을 달아주어 이를 통해 GND에 연결되게 하는데, 소프트웨어로도 조작이 가능하다. |
GPIO.setup(채널, GPIO.OUT) # 출력으로 사용.
GPIO.setup(채널, GPIO.IN) # 입력으로 사용. GPIO.setup(채널, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # 신호가 들어오지 않을 땐 0을 주겠다는 의미. |
핀 출력 | GPIO.output(채널, 1) # 3.3v 출력. GPIO.HIGH, True로 대체 가능.
GPIO.output(채널, 0) # GPIO.LOW, False로 대체 가능. | |
초기화 | 세팅을 초기화하고 리소스 반환.
GPIO 핀 쇼트 등의 하드웨어 문제를 방지한다. 코드의 시작이나 끝에 넣어주면 좋다. |
GPIO.cleanup() |