This is the vv1.21.0 version of the MicroPython documentation. The latest development version of this page may be more current.

neopixel — control of WS2812 / NeoPixel LEDs

This module provides a driver for WS2818 / NeoPixel LEDs.


This module is only included by default on the ESP8266, ESP32 and RP2 ports. On STM32 / Pyboard and others, you can either install the neopixel package using mip, or you can download the module directly from micropython-lib and copy it to the filesystem.

class NeoPixel

This class stores pixel data for a WS2812 LED strip connected to a pin. The application should set pixel data and then call NeoPixel.write() when it is ready to update the strip.

For example:

import neopixel

# 32 LED strip connected to X8.
p = machine.Pin.board.X8
n = neopixel.NeoPixel(p, 32)

# Draw a red gradient.
for i in range(32):
    n[i] = (i * 8, 0, 0)

# Update the strip.


class neopixel.NeoPixel(pin, n, *, bpp=3, timing=1)

Construct an NeoPixel object. The parameters are:

  • pin is a machine.Pin instance.

  • n is the number of LEDs in the strip.

  • bpp is 3 for RGB LEDs, and 4 for RGBW LEDs.

  • timing is 0 for 400KHz, and 1 for 800kHz LEDs (most are 800kHz).

Pixel access methods


Sets the value of all pixels to the specified pixel value (i.e. an RGB/RGBW tuple).


Returns the number of LEDs in the strip.

NeoPixel.__setitem__(index, val)

Set the pixel at index to the value, which is an RGB/RGBW tuple.


Returns the pixel at index as an RGB/RGBW tuple.

Output methods


Writes the current pixel data to the strip.