Skip to content

a library for using WS2812b leds (aka neopixels) with Raspberry Pi Pico

License

Notifications You must be signed in to change notification settings

blaz-r/pico_python_ws2812b

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pico_ws2812b

a library for using WS2812b leds (aka neopixels) with Raspberry Pi Pico

neopixels in action

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

About

a library for using WS2812b leds (aka neopixels) with Raspberry Pi Pico

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%