본문 바로가기

Raspberry Pi Pico에서 neopixel 사용하기

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

 

CirucuitPython에서 neopixel 라이브러리를 제공해 주고 있어서 쉽게 Raspberry Pi Pico를 사용하여 neopixel을 사용할 수 있습니다. 먼저 아래 CircuitPython 홈페이지에 접속하여 번들 라이브러리를 다운로드 받습니다.

 

CircuitPython - Libraries

The easiest way to program microcontrollers

circuitpython.org

현재 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 라이브러리를 사용하여 테스트해 보았습니다.

반응형

댓글