Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cosmetic fixes, updated rainbow_cycle #33

Merged
merged 3 commits into from
Oct 17, 2018
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 48 additions & 35 deletions examples/neopixel_simpletest.py
Original file line number Diff line number Diff line change
@@ -1,61 +1,74 @@
# CircuitPython demo - NeoPixel

import time
import board
import neopixel


# On CircuitPlayground Express -> Board.NEOPIXEL
# Otherwise choose an open pin connected to the Data In of the NeoPixel strip,
# such as board.D1
# pylint: disable=no-member
pixpin = board.NEOPIXEL
# On CircuitPlayground Express, and boards with built in status NeoPixel -> board.NEOPIXEL
# Otherwise choose an open pin connected to the Data In of the NeoPixel strip, i.e. board.D1
pixel_pin = board.NEOPIXEL

# The number of pixels in the strip
numpix = 10
# The number of NeoPixels
num_pixels = 10

# number of colors in each pixel, =3 for RGB, =4 for RGB plus white
BPP = 3
# The order of the pixel colors - RGB or GRB. Some NeoPixels have red and green reversed!
# For RGBW NeoPixels, simply change the ORDER to RGBW or GRBW.
ORDER = neopixel.GRB

strip = neopixel.NeoPixel(pixpin, numpix, bpp=BPP, brightness=0.3, auto_write=False)
pixels = neopixel.NeoPixel(pixel_pin, num_pixels, brightness=0.2, auto_write=False,
pixel_order=ORDER)

def format_tuple(r, g, b):
if BPP == 3:
return (r, g, b)
return (r, g, b, 0)

def wheel(pos):
# Input a value 0 to 255 to get a color value.
# The colours are a transition r - g - b - back to r.
if (pos < 0) or (pos > 255):
return format_tuple(0, 0, 0)
if pos < 85:
return format_tuple(int(pos * 3), int(255 - (pos*3)), 0)
if pos < 170:
if pos < 0 or pos > 255:
r = g = b = 0
elif pos < 85:
r = int(pos * 3)
g = int(255 - pos*3)
b = 0
elif pos < 170:
pos -= 85
return format_tuple(int(255 - pos*3), 0, int(pos*3))
pos -= 170
return format_tuple(0, int(pos*3), int(255 - pos*3))
r = int(255 - pos*3)
g = 0
b = int(pos*3)
else:
pos -= 170
r = 0
g = int(pos*3)
b = int(255 - pos*3)
return (r, g, b) if ORDER == neopixel.RGB or ORDER == neopixel.GRB else (r, g, b, 0)


def rainbow_cycle(wait):
for j in range(255):
for i in range(strip.n):
idx = int((i * 256 / len(strip)) + j)
strip[i] = wheel(idx & 255)
strip.show()
for i in range(num_pixels):
pixel_index = (i * 256 // num_pixels) + j
pixels[i] = wheel(pixel_index & 255)
pixels.show()
time.sleep(wait)


while True:
strip.fill(format_tuple(255, 0, 0))
strip.show()
# Comment this line out if you have RGBW/GRBW NeoPixels
pixels.fill((255, 0, 0))
# Uncomment this line if you have RGBW/GRBW NeoPixels
# pixels.fill((255, 0, 0, 0))
pixels.show()
time.sleep(1)

strip.fill(format_tuple(0, 255, 0))
strip.show()
# Comment this line out if you have RGBW/GRBW NeoPixels
pixels.fill((0, 255, 0))
# Uncomment this line if you have RGBW/GRBW NeoPixels
# pixels.fill((0, 255, 0, 0))
pixels.show()
time.sleep(1)

strip.fill(format_tuple(0, 0, 255))
strip.show()
# Comment this line out if you have RGBW/GRBW NeoPixels
pixels.fill((0, 0, 255))
# Uncomment this line if you have RGBW/GRBW NeoPixels
# pixels.fill((0, 0, 255, 0))
pixels.show()
time.sleep(1)

rainbow_cycle(0.001) # rainbowcycle with 1ms delay per step
rainbow_cycle(0.001) # rainbow cycle with 1ms delay per step