summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJim Mussared <jim.mussared@gmail.com>2021-08-11 15:22:29 +1000
committerDamien George <damien@micropython.org>2021-08-19 22:50:32 +1000
commit62fd450e621c8c46a93082f8e5f5417a32ef3fb8 (patch)
tree9e46482375b29145dd5bc4958c69c5697ed749e7
parent39e9c0788fd533d8712d2b19ae93ab8efa56c599 (diff)
downloadmicropython-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.py5
-rw-r--r--drivers/neopixel/neopixel.py (renamed from ports/esp32/modules/neopixel.py)0
-rw-r--r--ports/esp32/boards/manifest.py1
-rw-r--r--ports/esp8266/boards/GENERIC_512K/manifest.py3
-rw-r--r--ports/esp8266/boards/manifest.py1
-rw-r--r--ports/esp8266/modules/neopixel.py44
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)