Raspberry Pi Pico (W5100S-EVB-Pico) 보드를 사용하여 GPIO 테스트를 해 보았습니다.
브레드보드와 점퍼선을 바로 연결할 수 있도록 라즈베리파이 피코의 윗면쪽에 핀헤더를 납땜하였습니다.
핀헤더를 윗쪽으로 연결 시 BOOTSEL 버튼을 누를 때 좀 불편하지만 펌웨어를 그렇게 자주 변경하지는 않으니 괜찮을 듯싶고 제가 가지고 있는 점퍼선이 수놈 형태라 연결하기 쉽도록 위쪽으로 핀헤더를 붙였습니다.
8개의 포트에 연결할 수 있도록 만들어 놨던 LED입니다. 이것을 사용하여 간단히 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 입력 테스트를 해 보겠습니다.
아래 이미지와 같이 스위치의 한쪽은 +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 입/출력 테스트해 보았습니다.
'Hardware > Raspberry PI' 카테고리의 다른 글
Raspberry Pi Pico (W5100S-EVB-Pico) PWM 사용하기 (0) | 2022.03.26 |
---|---|
Raspberry Pi Pico (W5100S-EVB-Pico) ADC 사용하기 (0) | 2022.03.18 |
Raspberry Pi Pico (W5100S-EVB-Pico)보드 사용하기 (0) | 2022.03.11 |
W5100S-EVB-Pico 살펴보기 (2) | 2022.02.23 |
[라즈베리파이 3B+] Application Launch Bar에 단축아이콘 등록 (0) | 2021.05.22 |
댓글