CirucuitPython에서 neopixel 라이브러리를 제공해 주고 있어서 쉽게 Raspberry Pi Pico를 사용하여 neopixel을 사용할 수 있습니다. 먼저 아래 CircuitPython 홈페이지에 접속하여 번들 라이브러리를 다운로드 받습니다.
현재 adafruit-circuitpython-bundle-7.x-mpy-20220326 버전이 최신 버전입니다.
압축을 풀면 파일 내에 lib폴더 밑에 neopixel.mpy 파일이 있는데 이 파일을 Raspberry Pi Pico의 lib 폴더에 복사해 넣습니다.
회로는 아래 그림과 같이 VBUS, GND, GP0 핀을 네오픽셀과 연결하였습니다.
제가 가지고 있는 네오픽셀이 8개의 LED를 가지고 있어서 num_pixels=8로, LED 출력 핀으로 GP0를 설정하였습니다.
간단히 모든 LED를 붉은색으로 보여주는 간단한 코드입니다.
import board
import neopixel
num_pixels = 8
pixels = neopixel.NeoPixel(board.GP0, num_pixels)
pixels.brightness = 0.5
while True:
pixels.fill((255, 0, 0))
아래는 위 소스를 code.py로 저장 후 실행된 결과입니다. 모든 LED가 적색으로 켜집니다.
이번에는 소스코드를 조금 수정하여 R->G->B 컬러로 번갈아 보여지도록 소스를 수정해 보았습니다.
import time
import board
import neopixel
num_pixels = 8
pixels = neopixel.NeoPixel(board.GP0, num_pixels)
pixels.brightness = 0.5
while True:
pixels.fill((255, 0, 0))
time.sleep(0.5)
pixels.fill((0, 255, 0))
time.sleep(0.5)
pixels.fill((0, 0, 255))
time.sleep(0.5)
반복적으로 R->G->B 컬러로 번갈아가면서 켜집니다.
아래 코드는 아두이노 등과 같은 네오픽셀 관련 소스를 보다 보면 예제로 많이 제공되는 rainbow라는 함수인데 이 함수를 적용하여 테스트해 보았습니다.
import time
import board
from rainbowio import colorwheel
import neopixel
num_pixels = 8
pixels = neopixel.NeoPixel(board.GP0, num_pixels, auto_write=False)
pixels.brightness = 0.5
def rainbow(speed):
for j in range(255):
for i in range(num_pixels):
pixel_index = (i * 256 // num_pixels) + j
pixels[i] = colorwheel(pixel_index & 255)
pixels.show()
time.sleep(speed)
while True:
rainbow(0)
8개의 LED가 RGB 색상이 점진적으로 변경되면서 보여집니다.
CircuitPython에서 제공되는 neopixel 라이브러리를 사용하여 테스트해 보았습니다.
'Hardware > Raspberry PI' 카테고리의 다른 글
Raspberry Pi Pico (W5100S-EVB-Pico) DHCP 사용하기 (0) | 2022.04.14 |
---|---|
Raspberry Pi Pico에서 OLED 사용하기 (I2C 사용) (0) | 2022.04.03 |
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) GPIO 사용하기 (0) | 2022.03.17 |
댓글