2.2 GPIO핀 제어

c{mpy0202}

 MicroPython 에서는 핀번호를 ESP8266모듈의 GPIO 번호를 사용한다. 아래 그림에서 보면 0, 1, 2, 3, 4, 5, 12, 13, 14, 15, 16 번이다.



이들을 제어하기 위해서는 machine 모듈의 Pin 객체를 이용해야 한다.


from machine import Pin

p0 = Pin(0, Pin.OUT)    # GPIO0 출력핀 객체 생성
p0.high()               # set pin to high
p0.low()                # set pin to low
p0.value(1)             # set pin to high

p2 = Pin(2, Pin.IN)     # GPIO2 입력핀 생성
print(p2.value())       # get value, 0 or 1

p4 = Pin(4, Pin.IN, Pin.PULL_UP) # enable internal pull-up resistor
p5 = Pin(5, Pin.OUT, value=1) # set pin high on creation

위와 같이 Pin 객체의 생성자에 입력/출력 그리고 초기값 등등을 지정해 줄 수 있으며 멤버함수 high(), low() 로 출력값을 지정하거나 value()함수로 핀의 입력값을 받을 수 있다.


출력

입력

p = Pin(n, Pin.OUT)
p = Pin(n, Pin.IN)
p = Pin(n, Pin.IN, Pin.PULL_UP)
p.high() 혹은 p.value(1)
p.low() 혹은 p.value(0)
p.value()

여기서 n은 0,1,2,3,4,5,12,13,14,15,16 중 하나이다.


이와 같이 value() 멤버함수는 출력값을 지정해 줄 때도 쓰이고 입력인수가 없을 경우에는 핀의 입력값을 읽을 때도 사용된다.


단, 1번과 3번 핀은 시리얼 통신에 사용되며 16번 핀은 wakeup 기능(deepsleep 모드에서)에 사용되므로 가급적 사용하지 말아야 한다.



Posted by 살레시오

댓글을 달아 주세요