Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from microbit import *
- import neopixel
- def hsv_to_rgb(h, s, v):
- if s == 0.0:
- return (v, v, v)
- i = int(h*6.)
- f = (h*6.)-i
- p, q, t = v*(1.-s), v*(1.-s*f), v*(1.-s*(1.-f))
- 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)
- # Setup the Neopixel strip on pin0 with a length of 8 pixels
- np = neopixel.NeoPixel(pin0, 145)
- # All red
- display.show("R")
- s_light = -5
- e_light = 0
- for pixel_id in range(len(np)):
- np[pixel_id] = (220, 0, 0)
- np.show()
- sleep(500)
- # All green
- display.show("G")
- for pixel_id in range(len(np)):
- np[pixel_id] = (0, 220, 0)
- np.show()
- sleep(500)
- # All blue
- display.show("B")
- for pixel_id in range(len(np)):
- np[pixel_id] = (0, 0, 220)
- np.show()
- sleep(500)
- # Viridis-like colour scale
- display.show("v")
- cm_start = [54.0/360, .94, .57**2]
- cm_end = [287.0/360, .73, .19**2]
- for pixel_id in range(len(np)):
- prog = (pixel_id * 1.0) / len(np)
- h, s, v = [ sv*prog + ev*(1-prog) for sv, ev in zip(cm_start, cm_end)]
- red, green, blue = hsv_to_rgb(h, s, v)
- red = int(red*254)
- green = int(green*254)
- blue = int(blue*254)
- np[pixel_id] = (red, green, blue)
- np.show()
- sleep(1500)
- # Alternating colour
- display.show("x")
- for pixel_id in range(len(np)):
- if pixel_id % 3 == 0:
- np[pixel_id] = (100, 0, 0)
- elif pixel_id % 3 == 1:
- np[pixel_id] = (0, 100, 0)
- else:
- np[pixel_id] = (0,0,0)
- np.show()
- sleep(1000)
- display.show("o")
- for pixel_id in range(len(np)):
- if pixel_id % 3 == 0:
- np[pixel_id] = (0, 0, 100)
- elif pixel_id % 3 == 1:
- np[pixel_id] = (0, 100, 0)
- else:
- np[pixel_id] = (0,0,0)
- np.show()
- sleep(1000)
- display.show("x")
- for pixel_id in range(len(np)):
- if pixel_id % 3 == 0:
- np[pixel_id] = (100, 0, 0)
- elif pixel_id % 3 == 1:
- np[pixel_id] = (0, 100, 0)
- else:
- np[pixel_id] = (0,0,0)
- np.show()
- sleep(1500)
- # Using modulo to grow spots (note current limits may result in red colour)
- display.show("%")
- for dist in range(22):
- for pixel_id in range(len(np)):
- np[pixel_id] = (0,0,0)
- if (pixel_id+dist/2) % 20 < dist:
- np[pixel_id] = (255, 255, 255)
- np.show()
- for dist in list(range(22))[::-1]:
- for pixel_id in range(len(np)):
- np[pixel_id] = (0,0,0)
- if (pixel_id+dist/2) % 20 < dist:
- np[pixel_id] = (255, 255, 255)
- np.show()
- # Flash- strobe lights!
- for v in range(20):
- for pixel_id in range(len(np)):
- b = (255 * (v%2)) if (pixel_id-v) % 10 == 0 else 0
- np[pixel_id] = (b, b, b)
- np.show()
- sleep(1-(v%2) * 10)
- n = 0
- h = 0
- s = 1
- v = 0.1
- offset = 0
- mult = 4
- # Marching rainbow!
- display.show("(")
- while True:
- if button_a.is_pressed():
- mult *= 2
- if button_b.is_pressed():
- mult /= 2
- offset += 0.05
- for pixel_id in range(len(np)):
- h = (offset + (pixel_id/len(np)*mult)) % 1
- red, green, blue = hsv_to_rgb(h, s, v)
- red = int(red*254)
- green = int(green*254)
- blue = int(blue*254)
- np[pixel_id] = (red, green, blue)
- n += 1
- n = n % len(np)
- np.show()
Add Comment
Please, Sign In to add comment