docs: Add docs for machine.bitstream and neopixel module.
Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
This commit is contained in:
parent
62fd450e62
commit
53145c4c5f
@ -92,6 +92,7 @@ the following libraries.
|
|||||||
framebuf.rst
|
framebuf.rst
|
||||||
machine.rst
|
machine.rst
|
||||||
micropython.rst
|
micropython.rst
|
||||||
|
neopixel.rst
|
||||||
network.rst
|
network.rst
|
||||||
uctypes.rst
|
uctypes.rst
|
||||||
|
|
||||||
|
|||||||
@ -137,6 +137,28 @@ Miscellaneous functions
|
|||||||
above. The timeout is the same for both cases and given by *timeout_us* (which
|
above. The timeout is the same for both cases and given by *timeout_us* (which
|
||||||
is in microseconds).
|
is in microseconds).
|
||||||
|
|
||||||
|
.. function:: bitstream(pin, encoding, timing, data, /)
|
||||||
|
|
||||||
|
Transmits *data* by bit-banging the specified *pin*. The *encoding* argument
|
||||||
|
specifies how the bits are encoded, and *timing* is an encoding-specific timing
|
||||||
|
specification.
|
||||||
|
|
||||||
|
The supported encodings are:
|
||||||
|
|
||||||
|
- ``0`` for "high low" pulse duration modulation. This will transmit 0 and
|
||||||
|
1 bits as timed pulses, starting with the most significant bit.
|
||||||
|
The *timing* must be a four-tuple of nanoseconds in the format
|
||||||
|
``(high_time_0, low_time_0, high_time_1, low_time_1)``. For example,
|
||||||
|
``(400, 850, 800, 450)`` is the timing specification for WS2812 RGB LEDs
|
||||||
|
at 800kHz.
|
||||||
|
|
||||||
|
The accuracy of the timing varies between ports. On Cortex M0 at 48MHz, it is
|
||||||
|
at best +/- 120ns, however on faster MCUs (ESP8266, ESP32, STM32, Pyboard), it
|
||||||
|
will be closer to +/-30ns.
|
||||||
|
|
||||||
|
.. note:: For controlling WS2812 / NeoPixel strips, see the :mod:`neopixel`
|
||||||
|
module for a higher-level API.
|
||||||
|
|
||||||
.. function:: rng()
|
.. function:: rng()
|
||||||
|
|
||||||
Return a 24-bit software generated random number.
|
Return a 24-bit software generated random number.
|
||||||
|
|||||||
73
docs/library/neopixel.rst
Normal file
73
docs/library/neopixel.rst
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
:mod:`neopixel` --- control of WS2812 / NeoPixel LEDs
|
||||||
|
=====================================================
|
||||||
|
|
||||||
|
.. module:: neopixel
|
||||||
|
:synopsis: control of WS2812 / NeoPixel LEDs
|
||||||
|
|
||||||
|
This module provides a driver for WS2818 / NeoPixel LEDs.
|
||||||
|
|
||||||
|
.. note:: This module is only included by default on the ESP8266 and ESP32
|
||||||
|
ports. On STM32 / Pyboard, you can `download the module
|
||||||
|
<https://github.com/micropython/micropython/blob/master/drivers/neopixel/neopixel.py>`_
|
||||||
|
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 :meth:`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.
|
||||||
|
n.write()
|
||||||
|
|
||||||
|
Constructors
|
||||||
|
------------
|
||||||
|
|
||||||
|
.. class:: 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
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
.. method:: NeoPixel.fill(pixel)
|
||||||
|
|
||||||
|
Sets the value of all pixels to the specified *pixel* value (i.e. an
|
||||||
|
RGB/RGBW tuple).
|
||||||
|
|
||||||
|
.. method:: NeoPixel.__len__()
|
||||||
|
|
||||||
|
Returns the number of LEDs in the strip.
|
||||||
|
|
||||||
|
.. method:: NeoPixel.__setitem__(index, val)
|
||||||
|
|
||||||
|
Set the pixel at *index* to the value, which is an RGB/RGBW tuple.
|
||||||
|
|
||||||
|
.. method:: NeoPixel.__getitem__(index)
|
||||||
|
|
||||||
|
Returns the pixel at *index* as an RGB/RGBW tuple.
|
||||||
|
|
||||||
|
Output methods
|
||||||
|
--------------
|
||||||
|
|
||||||
|
.. method:: NeoPixel.write()
|
||||||
|
|
||||||
|
Writes the current pixel data to the strip.
|
||||||
Loading…
x
Reference in New Issue
Block a user