Created
May 19, 2016 21:13
-
-
Save dries007/26a2f36770c28500b912b0ecf1276129 to your computer and use it in GitHub Desktop.
Micropython esp2866 (ESP12-E) Neopixel demo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
f = open('boot.py', 'w') | |
f.write(''' | |
CODE HERE | |
''') | |
f.close() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.