diff options
author | Jim Mussared <jim.mussared@gmail.com> | 2021-08-11 15:22:29 +1000 |
---|---|---|
committer | Damien George <damien@micropython.org> | 2021-08-19 22:50:32 +1000 |
commit | 62fd450e621c8c46a93082f8e5f5417a32ef3fb8 (patch) | |
tree | 9e46482375b29145dd5bc4958c69c5697ed749e7 | |
parent | 39e9c0788fd533d8712d2b19ae93ab8efa56c599 (diff) | |
download | micropython-62fd450e621c8c46a93082f8e5f5417a32ef3fb8.tar.gz micropython-62fd450e621c8c46a93082f8e5f5417a32ef3fb8.zip |
drivers/neopixel: Add common machine.bitstream-based neopixel module.
Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
-rw-r--r-- | drivers/neopixel/manifest.py | 5 | ||||
-rw-r--r-- | drivers/neopixel/neopixel.py (renamed from ports/esp32/modules/neopixel.py) | 0 | ||||
-rw-r--r-- | ports/esp32/boards/manifest.py | 1 | ||||
-rw-r--r-- | ports/esp8266/boards/GENERIC_512K/manifest.py | 3 | ||||
-rw-r--r-- | ports/esp8266/boards/manifest.py | 1 | ||||
-rw-r--r-- | ports/esp8266/modules/neopixel.py | 44 |
6 files changed, 9 insertions, 45 deletions
diff --git a/drivers/neopixel/manifest.py b/drivers/neopixel/manifest.py new file mode 100644 index 0000000000..27f610adc0 --- /dev/null +++ b/drivers/neopixel/manifest.py @@ -0,0 +1,5 @@ +freeze( + ".", + "neopixel.py", + opt=3, +) diff --git a/ports/esp32/modules/neopixel.py b/drivers/neopixel/neopixel.py index 9ed5155c72..9ed5155c72 100644 --- a/ports/esp32/modules/neopixel.py +++ b/drivers/neopixel/neopixel.py diff --git a/ports/esp32/boards/manifest.py b/ports/esp32/boards/manifest.py index b463c131fa..1dc1481a42 100644 --- a/ports/esp32/boards/manifest.py +++ b/ports/esp32/boards/manifest.py @@ -5,3 +5,4 @@ freeze("$(MPY_DIR)/drivers/dht", "dht.py") freeze("$(MPY_DIR)/drivers/onewire") include("$(MPY_DIR)/extmod/uasyncio/manifest.py") include("$(MPY_DIR)/extmod/webrepl/manifest.py") +include("$(MPY_DIR)/drivers/neopixel/manifest.py") diff --git a/ports/esp8266/boards/GENERIC_512K/manifest.py b/ports/esp8266/boards/GENERIC_512K/manifest.py index 5674f280b5..ee148c8089 100644 --- a/ports/esp8266/boards/GENERIC_512K/manifest.py +++ b/ports/esp8266/boards/GENERIC_512K/manifest.py @@ -1,5 +1,6 @@ freeze("$(BOARD_DIR)", "_boot.py", opt=3) -freeze("$(PORT_DIR)/modules", ("apa102.py", "neopixel.py", "ntptime.py", "port_diag.py")) +freeze("$(PORT_DIR)/modules", ("apa102.py", "ntptime.py", "port_diag.py")) freeze("$(MPY_DIR)/drivers/dht", "dht.py") freeze("$(MPY_DIR)/drivers/onewire") include("$(MPY_DIR)/extmod/webrepl/manifest.py") +include("$(MPY_DIR)/drivers/neopixel/manifest.py") diff --git a/ports/esp8266/boards/manifest.py b/ports/esp8266/boards/manifest.py index de719f8f1e..598572d62a 100644 --- a/ports/esp8266/boards/manifest.py +++ b/ports/esp8266/boards/manifest.py @@ -3,3 +3,4 @@ freeze("$(MPY_DIR)/tools", ("upip.py", "upip_utarfile.py")) freeze("$(MPY_DIR)/drivers/dht", "dht.py") freeze("$(MPY_DIR)/drivers/onewire") include("$(MPY_DIR)/extmod/webrepl/manifest.py") +include("$(MPY_DIR)/drivers/neopixel/manifest.py") diff --git a/ports/esp8266/modules/neopixel.py b/ports/esp8266/modules/neopixel.py deleted file mode 100644 index 9ed5155c72..0000000000 --- a/ports/esp8266/modules/neopixel.py +++ /dev/null @@ -1,44 +0,0 @@ -# NeoPixel driver for MicroPython -# MIT license; Copyright (c) 2016 Damien P. George, 2021 Jim Mussared - -from micropython import const -from machine import bitstream - -_BITSTREAM_TYPE_HIGH_LOW = const(0) -_TIMING_WS2818_800 = (400, 850, 800, 450) -_TIMING_WS2818_400 = (800, 1700, 1600, 900) - - -class NeoPixel: - ORDER = (1, 0, 2, 3) - - def __init__(self, pin, n, bpp=3, timing=1): - self.pin = pin - self.n = n - self.bpp = bpp - self.buf = bytearray(n * bpp) - self.pin.init(pin.OUT) - self.timing = ( - (_TIMING_WS2818_800 if timing else _TIMING_WS2818_400) - if isinstance(timing, int) - else timing - ) - - def __len__(self): - return self.n - - def __setitem__(self, index, val): - offset = index * self.bpp - for i in range(self.bpp): - self.buf[offset + self.ORDER[i]] = val[i] - - def __getitem__(self, index): - offset = index * self.bpp - return tuple(self.buf[offset + self.ORDER[i]] for i in range(self.bpp)) - - def fill(self, color): - for i in range(self.n): - self[i] = color - - def write(self): - bitstream(self.pin, _BITSTREAM_TYPE_HIGH_LOW, self.timing, self.buf) |