Skip to content

Instantly share code, notes, and snippets.

@dries007
Created May 19, 2016 21:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dries007/26a2f36770c28500b912b0ecf1276129 to your computer and use it in GitHub Desktop.
Save dries007/26a2f36770c28500b912b0ecf1276129 to your computer and use it in GitHub Desktop.
Micropython esp2866 (ESP12-E) Neopixel demo
import time
from machine import Pin
from esp import neopixel_write
# From colorsys.py
def hsv_to_rgb(h, s, v):
if s == 0.0:
return v, v, v
i = int(h*6.0)
f = (h*6.0) - i
p = v*(1.0 - s)
q = v*(1.0 - s*f)
t = v*(1.0 - s*(1.0-f))
i = i%6
if i == 0:
return v, t, p
if i == 1:
return q, v, p
if i == 2:
return p, v, t
if i == 3:
return p, q, v
if i == 4:
return t, p, v
if i == 5:
return v, p, q
# Fixed version from MicroPython
class NeoPixel:
def __init__(self, pin, n):
self.pin = pin
self.n = n
self.buf = bytearray(n * 3)
self.pin.init(pin.OUT)
def __setitem__(self, index, val):
r, g, b = val
self.buf[index * 3] = g
self.buf[index * 3 + 1] = r
self.buf[index * 3 + 2] = b
def __getitem__(self, index):
i = index * 3
return self.buf[i + 1], self.buf[i], self.buf[i + 2]
def fill(self, color):
r, g, b = color
for i in range(len(self.buf) / 3):
self.buf[i * 3] = g
self.buf[i * 3 + 1] = r
self.buf[i * 3 + 2] = b
def write(self):
neopixel_write(self.pin, self.buf, True)
pin0 = Pin(0, Pin.IN)
min_delay = 0
max_delay = 150
N = 64
def set_rainbow(np, N):
for x in range(N):
r, g, b = hsv_to_rgb(x*1.0/N, 1, 1)
np[x] = (int(r*255), int(g*255), int(b*255))
def shift(N=N, min_delay=min_delay, max_delay=max_delay):
np = NeoPixel(Pin(5, Pin.OUT), N)
set_rainbow(np, N)
delay = 150
delta = 1
while pin0.value():
for i in range(N):
np[i] = np[(i+1) % N]
np.write()
time.sleep_ms(delay)
delay += delta
if delay >= max_delay:
delta = -1
elif delay <= min_delay:
delta = 1
print(delay, delta)
shift()
f = open('boot.py', 'w')
f.write('''
CODE HERE
''')
f.close()
@dglaude
Copy link

dglaude commented Aug 10, 2016

Ping! I have used you code from paste.py and hsv_to_rgb function in https://github.com/dglaude/blinkt-on-espiot-phat
Thank you very much.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment