kopia lustrzana https://github.com/blaz-r/pico_python_ws2812b
42 wiersze
2.2 KiB
Markdown
42 wiersze
2.2 KiB
Markdown
# pico_ws2812b
|
|
a library for using WS2812b leds (aka neopixels) with Raspberry Pi Pico
|
|
|
|
![neopixels in action](
|
|
https://github.com/benevpi/pico_python_ws2812b/blob/main/pico_ws2812b.jpg)
|
|
|
|
For updated version, which also supports RGBW, check out my other library: https://github.com/blaz-r/pi_pico_neopixel.
|
|
|
|
You'll first need to save the ws2812b.py file to your device (for example, open it in Thonny and go file > save as and select MicroPython device. Give it the same name). Once it's there, you can import it into your code.
|
|
|
|
Mind that library works with GRB order of bits. If you have RGBW or want other color/bit orders (RGB, BRG, GRBW.. ) check out my upgraded version https://github.com/blaz-r/pi_pico_neopixel .
|
|
|
|
You create an object with the parameters number of LEDs, state machine ID and GPIO number in that order. so, to create a strip of 10 leds on state machine 0 and GPIO 0, you use:
|
|
|
|
```
|
|
pixels = ws2812b.ws2812b(10,0,0)
|
|
```
|
|
|
|
This class has many methods, two main ones being show() which sends the data to the strip, and set_pixel which sets the colour values for a particular LED. The parameters are LED number, red, green, blue or a tuple of form (red, green blue) with the colours taking values between 0 and 255.
|
|
|
|
At the moment, this isn't working with the interpreter, so you have to run it from a file. Looks like it's running just too slow to keep up with the PIO buffer from the interpreter. The key methods are set_pixel(r,g,b), set_pixel_line(p1, p2, r, g, b) which sets a row of pixels from pixel p1 to pixel p2 (inclusive), and fill(r,g,b) which fills all the pixels with the colour r,g,b.
|
|
Every method also works with tuple containing rgb values: set_pixel(num, (r,g,b)) and set_pixel_line_gradient(p1, p2, rgb1, rgb2) where rgb1 and rgb2 are of form (r,g,b). This enables writing simpler code for certain usecases, one of such is in examples folder: "colorwave.py"
|
|
|
|
```
|
|
pixels.set_pixel(5,10,0,0)
|
|
pixels.set_pixel_line(5,7,0,10,0)
|
|
pixels.fill(20,5,0)
|
|
|
|
rgb1 = (0, 0, 50)
|
|
rgb2 = (50, 0, 0)
|
|
pixels.set_pixel(42, (0, 50, 0))
|
|
pixels.set_pixel_line(5, 7, rgb1)
|
|
pixels.set_pixel_line_gradient(0, 13, rgb1, rgb2)
|
|
```
|
|
|
|
For new settings to take effect you write:
|
|
```
|
|
pixels.show()
|
|
```
|
|
|
|
Library is forked from https://github.com/benevpi/pico_python_ws2812b
|