summaryrefslogtreecommitdiffstatshomepage
path: root/docs/esp8266/tutorial/neopixel.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/esp8266/tutorial/neopixel.rst')
-rw-r--r--docs/esp8266/tutorial/neopixel.rst70
1 files changed, 70 insertions, 0 deletions
diff --git a/docs/esp8266/tutorial/neopixel.rst b/docs/esp8266/tutorial/neopixel.rst
new file mode 100644
index 0000000000..245aed6d46
--- /dev/null
+++ b/docs/esp8266/tutorial/neopixel.rst
@@ -0,0 +1,70 @@
+Controlling NeoPixels
+=====================
+
+NeoPixels, also known as WS2812 LEDs, are full-colour LEDs that are connected in
+serial, are individually addressable, and can have their red, green and blue
+components set between 0 and 255. They require precise timing to control them
+and there is a special neopixel module to do just this.
+
+To create a NeoPixel object do the following::
+
+ >>> import machine, neopixel
+ >>> np = neopixel.NeoPixel(machine.Pin(4), 8)
+
+This configures a NeoPixel strip on GPIO4 with 8 pixels. You can adjust the
+"4" (pin number) and the "8" (number of pixel) to suit your set up.
+
+To set the colour of pixels use::
+
+ >>> np[0] = (255, 0, 0) # set to red, full brightness
+ >>> np[1] = (0, 128, 0) # set to green, half brightness
+ >>> np[2] = (0, 0, 64) # set to blue, quarter brightness
+
+Then use the ``write()`` method to output the colours to the LEDs::
+
+ >>> np.write()
+
+The following demo function makes a fancy show on the LEDs::
+
+ import time
+
+ def demo(np):
+ n = np.n
+
+ # cycle
+ for i in range(4 * n):
+ for j in range(n):
+ np[j] = (0, 0, 0)
+ np[i % n] = (255, 255, 255)
+ np.write()
+ time.sleep_ms(25)
+
+ # bounce
+ for i in range(4 * n):
+ for j in range(n):
+ np[j] = (0, 0, 128)
+ if (i // n) % 2 == 0:
+ np[i % n] = (0, 0, 0)
+ else:
+ np[n - 1 - (i % n)] = (0, 0, 0)
+ np.write()
+ time.sleep_ms(60)
+
+ # fade in/out
+ for i in range(0, 4 * 256, 8):
+ for j in range(n):
+ if (i // 256) % 2 == 0:
+ val = i & 0xff
+ else:
+ val = 255 - (i & 0xff)
+ np[j] = (val, 0, 0)
+ np.write()
+
+ # clear
+ for i in range(n):
+ np[i] = (0, 0, 0)
+ np.write()
+
+Execute it using::
+
+ >>> demo(np)