본문 바로가기

Raspberry Pi Pico (W5100S-EVB-Pico) GPIO 사용하기

by rudals.kim 2022. 3. 17. 댓글 개
반응형
Adafruit CircuitPython 7.2.0 / Raspberry Pi Pico with rp2040 에서 테스트 되었습니다.

 

Raspberry Pi Pico (W5100S-EVB-Pico) 보드를 사용하여 GPIO 테스트를 해 보았습니다.

 

브레드보드와 점퍼선을 바로 연결할 수 있도록 라즈베리파이 피코의 윗면쪽에 핀헤더를 납땜하였습니다.

핀헤더를 윗쪽으로 연결 시 BOOTSEL 버튼을 누를 때 좀 불편하지만 펌웨어를 그렇게 자주 변경하지는 않으니 괜찮을 듯싶고 제가 가지고 있는 점퍼선이 수놈 형태라 연결하기 쉽도록 위쪽으로 핀헤더를 붙였습니다.

8개의 포트에 연결할 수 있도록 만들어 놨던 LED입니다. 이것을 사용하여 간단히 GPIO 출력 테스트를 해 보았습니다.

 

GPIO 출력 테스트

위 LED의 각 핀을 아래 보드 이미지의 GP2~GP9 총 8개의 포트에 연결하고 마지막 GND를 서로 연결하였습니다.

테스트는 아래 소스 코드를 참고하시기 바랍니다.

각 포트를 출력 포트로 설정 후 0.5초 간격으로 ON/OFF를 반복하는 코드입니다.

import board
import digitalio as io
import time

LEDs = []
LEDpin = [board.GP2,board.GP3,board.GP4,board.GP5,
          board.GP6,board.GP7,board.GP8,board.GP9]

for i in range(0, len(LEDpin) ):
    led = io.DigitalInOut(LEDpin[i])
    led.direction = io.Direction.OUTPUT 
    LEDs.append(led)   
    
while True:
    for l in LEDs:
        l.value = True    
    time.sleep(0.5)
    for l in LEDs:
        l.value = False
    time.sleep(0.5)

 

Thonny에서 code.py로 저장 후 실행해 보면 8개의 LED가 동시에 ON/OFF 동작을 반복합니다.

 

GPIO 입력 테스트

GPIO 출력 테스트를 해 봤으니 이번에는 GPIO 입력 테스트를 해 보겠습니다.

아래 이미지와 같이 스위치의 한쪽은 +3.3V에 다른 한쪽은 GP2 포트에 연결하였습니다.

아래 소스코드를 사용하여 테스트하였습니다.

 

소스코드를 간단히 설명하면 스위치의 기본값은 Pull.DOWN 설정으로 인해 False 값을 출력합니다.

스위치를 누를 경우 +3.3V에 연결되어 High 값인 True를 출력합니다.

빈번한 print 출력을 줄이기 위해 sleep을 사용하여 스위치의 입력이 즉각적으로 반영되지 않는 문제가 있으니 참고하시기 바랍니다.

import time
import board
import digitalio

button = digitalio.DigitalInOut(board.GP2)
button.switch_to_input(pull=digitalio.Pull.DOWN)

while True:
    print(button.value)
    time.sleep(0.5)​

 

Tonny를 사용하여 code.py로 저장 후 실행해 봅니다.

그러면 Tonny의 shell 창에 아래와 같이 스위치를 누르면 True값이 출력되며 뗀 경우에는 기본 False 값이 출력됩니다.

라즈베리파이 피코를 사용하여 기본적인 GPIO 입/출력 테스트해 보았습니다.

반응형

댓글