| 네오픽셀(NoePixel)이란?
네오픽셀이란 Adafruit사에서 RGB를 표현할 수 있는 LED 부품인 WS2812를 일반 사용자들이 사용하기 쉽게 라이브러리를 제공하여 '네오픽셀'이란 이름으로 브랜드화한 제품입니다.
만약 일반 사용자들이 라이브러리가 없이 WS2812를 사용했다면 사용하기 어려워 이렇게 까지 대중화는 되지 않았을 것이라고 생각합니다. 따라서 Adafruit에서 쉽게 사용할 수 있는 라이브러리를 제공한 것이 대중화를 이끈 일등공신이라고 생각이 듭니다.
네오픽셀의 특징이라면 2개의 전원(VCC, GND)과 한개의 Data pin을 가지고 여러개의 LED(네오픽셀 스트립, 네오픽셀 매트릭스)를 각각 제어할 수 있는 것입니다.
| 사용 시 주의점
마이크로비트(micro:bit)에서는 output pin에서 90mA까지 전원 공급이 가능합니다. 따라서 많은 수의 네오픽셀을 사용한다면 마이크로비트(micro:bit)가 공급 가능한 90mA를 초과할 수 있기 때문에 네오픽셀을 위한 별도의 전원을 사용해야 합니다.
별도 전원 없이 마이크로비트(micro:bit) 전원을 사용한다면 최대 8개의 NeoPixel 사용을 할 수 있습니다. 만약 그 이상을 사용하려면 네오픽셀 전원 핀에 별도의 전원을 공급해야 합니다. 또한 네오픽셀은 마이크로 비트의 제어선을 통해 제어가 돼야 하기 때문에 전원은 3V를 사용해야 합니다
| 기본 사용법
마이크로비트(micro:bit)에 네오픽셀을 사용하기 위해서는 내장되어 있는 라이브러리를 불러와야 합니다. 라이브러리를 불러오기 위해서 아래와 같이 import 하시면 됩니다.
from neopixel import NeoPixel
네오픽셀 class를 사용하기 위해서는 다음과 같은 초기화가 필요합니다.
neopixel.neopixel(pin, n)
- pin: 마이크로비트(micro:bit)가 네오픽셀을 제어하기 위한 제어 pin 번호입니다. 네오픽셀의 DIN과 연결됩니다.
- n: 사용하는 네오픽셀의 총수입니다.
네오픽셀의 색은 RGB(red, green, blue)로 되어 있습니다. 그림판과 같은 프로그램에서 색상 파렛트에서 RGB값을 확인할 수 있습니다. 예를 들어 아래의 그림에서 화살표가 가지는 색은 R은 225, G는 39, B는 39 값을 가집니다.
참고로, RGB의 각각 가질 수 있는 값의 범위는 0에서 255 사이의 값입니다.
NeoPixel의 Class의 clear( ) 메써드는 네오픽셀의 모든 값을 초기화합니다.
show( )는 neopixe에 설정된 RGB 값을 출력합니다. show() 메서드를 실행하지 않는다면, RGB값을 설정하더라도 표기가 되지 않습니다.
| 회로 구성
마이크로비트(micro:bit)와 NeoPixel은 아래와 같이 구성하면 됩니다.
다만, NeoPixel을 제어하는 DIN pin의 경우 1번 외에 자신이 사용하는 pin으로 연결하면 됩니다.
주의할 점은 NeoPixel에 전원이 5V라고 표기가 되어 있지만, 마이크로비트의 3V에 꼭 연결해야 합니다.
그림에서 [0], [1], [2]라고 표기된 것은 네오픽셀의 위치로, 마이크로 비트와 가까운 쪽에서 먼 쪽으로 숫자가 지정되며 첫 번째 네오픽셀이 0부터 시작되는 것을 기억해 주시길 바랍니다.
| 파이썬 코드
아래 코드는 하나의 네오픽셀이 빨간색, 초록색, 파란색으로 반복되어 출력되는 파이썬(microPython) 코드입니다.
from microbit import *
import neopixel
# 네오픽셀 초기화
np = neopixel.NeoPixel(pin1, 1)
while True:
# 빨간색 출력
np[0] = (255, 0, 0)
no.show()
sleep(500)
# 초록색 출력
np[0] = (0, 255, 0)
no.show()
sleep(500)
# 파란색 출력
np[0] = (0, 255, 0)
no.show()
sleep(500)
아래 코드는 6개의 네오픽셀이 여러 색으로 변하며 흐르는 예제입니다. 이전에도 말씀드렸듯이 마이크로비트(micro:bit)에서 전원을 공급한다면 최대 8개만 사용해야 합니다. 그 이상 사용했을 경우 마이크로 비트가 고장 날 수도 있습니다.
'''
마이크로비트 네오픽셀, rainbow cycle
'''
from microbit import *
import neopixel
from random import randint
# neopixel의 숫자
num_pixels = 6
# neopixel과 연결된 마이크로 bit의 pin
data_pin = pin1
np = neopixel.NeoPixel(data_pin, num_pixels)
def wheel(pos):
if pos < 0 or pos > 255:
r = g = b = 0
elif pos < 85:
r = int(pos*3)
g = int(255 - pos * 3)
b = 0
elif pos < 170:
pos -= 85
r = int(255 - pos * 3)
g = 0
b = int(pos * 3)
else:
pos -= 170
r = 0
g = int(pos * 3)
b = int(255 - pos * 3)
return (r,g,b)
def rainbow_cycle(wait):
for j in range(255):
for i in range(num_pixels):
pixel_index = (i * 256 // num_pixels) + j
np[i] = wheel(pixel_index & 255)
np.show()
#time.sleep(wait)
sleep(wait)
while True:
rainbow_cycle(10)
긴 글 읽어 주셔서 감사합니다.
'오픈소스하드웨어 > 마이크로:비트' 카테고리의 다른 글
[마이크로비트 with Python] 내장 온도센서 사용법 (0) | 2021.04.29 |
---|---|
[마이크로비트 v2.0 with Python] 터치버튼 (0) | 2021.04.15 |
[마이크로비트 with 파이썬] 플로터 사용법 (2) | 2020.06.25 |
[마이크로비트 with 파이썬] music 모듈 (0) | 2020.06.15 |
[마이크로비트 with 파이썬] 부저 사용법 (0) | 2020.06.03 |
댓글