_pixelbuf – A fast RGB(W) pixel buffer library for like NeoPixel and DotStar

The _pixelbuf module provides the PixelBuf class to accelerate RGB(W) strip/matrix manipulation, such as DotStar and Neopixel.

Byteorders are configured with strings, such as “RGB” or “RGBD”.

_pixelbuf.colorwheel(n: float) → int

C implementation of the common wheel() function found in many examples. Returns the colorwheel RGB value as an integer value for n (usable in PixelBuf, neopixel, and dotstar).

_pixelbuf.wheel(n: float) → int

Use of wheel() is deprecated. Please use colorwheel().

class _pixelbuf.PixelBuf(size: int, *, byteorder: str = 'BGR', brightness: float = 0, auto_write: bool = False, header: ReadableBuffer = b'', trailer: ReadableBuffer = b'')

A fast RGB[W] pixel buffer for LED and similar devices.

Create a PixelBuf object of the specified size, byteorder, and bits per pixel.

When brightness is less than 1.0, a second buffer will be used to store the color values before they are adjusted for brightness.

When P (PWM duration) is present as the 4th character of the byteorder string, the 4th value in the tuple/list for a pixel is the individual pixel brightness (0.0-1.0) and will enable a Dotstar compatible 1st byte for each pixel.

Parameters:
  • size (int) – Number of pixels
  • byteorder (str) – Byte order string (such as “RGB”, “RGBW” or “PBGR”)
  • brightness (float) – Brightness (0 to 1.0, default 1.0)
  • auto_write (bool) – Whether to automatically write pixels (Default False)
  • header (ReadableBuffer) – Sequence of bytes to always send before pixel values.
  • trailer (ReadableBuffer) – Sequence of bytes to always send after pixel values.
bpp :int

The number of bytes per pixel in the buffer (read-only)

brightness :float

Float value between 0 and 1. Output brightness.

When brightness is less than 1.0, a second buffer will be used to store the color values before they are adjusted for brightness.

auto_write :bool

Whether to automatically write the pixels after each update.

byteorder :str

byteorder string for the buffer (read-only)

show(self)

Transmits the color data to the pixels so that they are shown. This is done automatically when auto_write is True.

fill(self, color: Union[int, Tuple[int, int, int], Tuple[int, int, int, float]])

Fills the given pixelbuf with the given color.

__getitem__(self, index: slice)
__getitem__(self, index: int)

Returns the pixel value at the given index as a tuple of (Red, Green, Blue[, White]) values between 0 and 255. When in PWM (DotStar) mode, the 4th tuple value is a float of the pixel intensity from 0-1.0.

__setitem__(self, index: slice, value: Tuple[Union[int, Tuple[float, ...], List[float]], ...])
__setitem__(self, index: slice, value: List[Union[int, Tuple[float, ...], List[float]]])
__setitem__(self, index: int, value: Union[int, Tuple[float, ...], List[float]])

Sets the pixel value at the given index. Value can either be a tuple or integer. Tuples are The individual (Red, Green, Blue[, White]) values between 0 and 255. If given an integer, the red, green and blue values are packed into the lower three bytes (0xRRGGBB). For RGBW byteorders, if given only RGB values either as an int or as a tuple, the white value is used instead when the red, green, and blue values are the same.