-
Notifications
You must be signed in to change notification settings - Fork 102
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #33 from kattni/example-update
Cosmetic fixes, updated rainbow_cycle
- Loading branch information
Showing
1 changed file
with
48 additions
and
35 deletions.
There are no files selected for viewing
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
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 |