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 similarity index 100% rename from ports/esp32/modules/neopixel.py rename to 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)