pico_python_ws2812b/README.md

42 wiersze
2.2 KiB
Markdown

2021-01-19 16:42:47 +00:00
# pico_ws2812b
a library for using WS2812b leds (aka neopixels) with Raspberry Pi Pico
2021-01-19 16:47:44 +00:00
2021-01-19 16:56:21 +00:00
![neopixels in action](
https://github.com/benevpi/pico_python_ws2812b/blob/main/pico_ws2812b.jpg)
2021-04-27 21:19:29 +00:00
For updated version, which also supports RGBW, check out my other library: https://github.com/blaz-r/pi_pico_neopixel.
2021-01-19 16:56:21 +00:00
2021-01-19 16:47:44 +00:00
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.
2021-04-15 14:56:23 +00:00
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 .
2021-01-19 16:47:44 +00:00
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.
2021-01-19 16:47:44 +00:00
2021-01-27 15:51:32 +00:00
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"
2021-01-19 16:47:44 +00:00
```
2021-01-27 15:51:32 +00:00
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)
2021-01-19 16:47:44 +00:00
```
2021-04-15 14:56:23 +00:00
For new settings to take effect you write:
```
pixels.show()
```
Library is forked from https://github.com/benevpi/pico_python_ws2812b