라즈베리파이:GPIO: 두 판 사이의 차이
둘러보기로 이동
검색으로 이동
편집 요약 없음 |
편집 요약 없음 |
||
(같은 사용자의 중간 판 4개는 보이지 않습니다) | |||
5번째 줄: | 5번째 줄: | ||
===유의=== | ===유의=== | ||
GPIO 핀으로 3.3V 이상이 들어오지 않게 각별히 주의하자. | |||
*GPIO 핀으로 3.3V 이상이 들어오지 않게 각별히 주의하자. | |||
*코드가 종료되는 등 상황에서 GPIO.cleanup() 을 실행해주어 자원을 돌려주고 점유한 핀을 초기화 해야 한다. | |||
다양하게 제어하는 방식이 있지만, 파이썬이 적절한 대안일 듯하다. | 다양하게 제어하는 방식이 있지만, 파이썬이 적절한 대안일 듯하다. | ||
11번째 줄: | 13번째 줄: | ||
파이썬의 RPi.GPIO, WiringPi로 제어가 가능하다. | 파이썬의 RPi.GPIO, WiringPi로 제어가 가능하다. | ||
= 입출력 = | =입출력= | ||
=== 입력 === | ===입력=== | ||
3.3V까지 받아들이며, 디지털신호만 받는다. 아날로그를 받기 위해선 ADC기능을 가진 IC를 사용해야 한다. | 3.3V까지 받아들이며, 디지털신호만 받는다. 아날로그를 받기 위해선 ADC기능을 가진 IC를 사용해야 한다. | ||
{| class="wikitable" | {| class="wikitable" | ||
! | !의도 | ||
!설명 | !설명 | ||
!방법 | !방법 | ||
|- | |- | ||
| | |호출 | ||
| | | | ||
| | |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() | |||
|}<br /> | |||
</ | |||
# | # |
2022년 11월 3일 (목) 08:27 기준 최신판
개요[편집 | 원본 편집]
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() |