[ 1 ] 모듈을 임포트한다
____________________________
import RPi.GPIO as GPIO
____________________________
◆ 라즈베리파이(Raspberry Pi)의 GPIO(General Purpose Input/Output) 핀을
제어하기 위해 해당 라이브러리를 불러온다.
◆ RPi.GPIO: 라즈베리파이 재단에서 제공하는 공식 파이썬 라이브러리로,
라즈베리파이 OS에 기본적으로 내장되어 있다.
◆ as GPIO: 라이브러리 이름을 그대로 쓰면 코드가 길어지기 때문에, 타이핑을 줄이고
가독성을 높이기 위해 'GPIO'라는 짧은 별칭(Alias) 으로 지정하는 파이썬 문법이다.
[ 2 ] 핀 넘버를 부르는 방식을 선택한다
___________________
GPIO.setmode()
----------------------------
: 핀 번호를 참조하는 방식에 대한 함수이다
◆ GPIO.setmode(GPIO.BOARD) 와 GPIO.setmode(GPIO.BCM)
두가지 모드가 있다.
▶ GPIO.BOARD 는 보드의 물리적 핀번호를 기준하여 라즈베리파이 제어시 사용되며,
이러한 유형의 번호부여 장점은 SBC보드가 변경이 되어도 소스코드의 변경 되지 않는
장점이 있다.
▶ GPIO.BCM는 Broadcom SOC 채널에 의한 핀을 참조하는 GPIO모듈 번호이다.
Broadcom SOC 채널 지정을 나타내며 버전 번호가 변경되면 BCM 채널이 변경 된다.
ex) BOARD 모드의 11번 핀 = BCM 모드의 17번 핀
** 여러 버전의 라즈베리파이를 사용할 계획이 있다면 GPIO.BCM보다 GPIO.BOARD가 더 안전 할 수 있다.**
[ 3 ] 핀 모드를 설정한다
______________________________________
출력 : GPIO.setup(18, GPIO.OUT)
입력 : GPIO.setup(18, GPIO.IN)
---------------------------------------------------------
list를 사용해 한번에 여러 핀을 설정 할 수도 있고, output 모드로 설정하는 경우 초기값을 줄 수도 있다.
____________________________________________________
GPIO.setup([18, 19, 20], GPIO.OUT, initial=GPIO.HIGH)
-------------------------------------------------------------------------------
[ 4 ] 핀에서 값을 입력(input) 한다.
___________________________
변수 = GPIO.input(channel)
-----------------------------------------
참 : True, 1, GPIO.HIGH
거짓 : False, 0, GPIO.LOW
[ 5 ] 핀에서 값을 입력(input) 한다.
___________________________
GPIO.output(channel, state)
----------------------------------------
state ==>
참 : True, 1, GPIO.HIGH
거짓 : False, 0, GPIO.LOW
[ 6 ] 리소스 비우기
______________________
GPIO.cleanup()
--------------------------------
◆ GPIO 18번 핀을 사용하여 불을 0.5초 간격으로 껏다 켰다 하는 프로그램
--->>> GPIO_led.py <<<-------------------------------
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
LED = 18
GPIO.setup(LED, GPIO.OUT, initial=GPIO.LOW)
try:
while 1:
GPIO.output(LED, GPIO.HIGH) # 불 켜기
time.sleep(0.5)
GPIO.output(LED, GPIO.LOW) # 불 끄기
time.sleep(0.5)
except KeyboardInterrupt:
pass
GPIO.cleanup()