Guest User

Untitled

a guest
Nov 22nd, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. from microbit import *
  2. import neopixel
  3.  
  4.  
  5. def hsv_to_rgb(h, s, v):
  6. if s == 0.0:
  7. return (v, v, v)
  8. i = int(h*6.)
  9. f = (h*6.)-i
  10. p, q, t = v*(1.-s), v*(1.-s*f), v*(1.-s*(1.-f))
  11. i %= 6
  12. if i == 0:
  13. return (v, t, p)
  14. if i == 1:
  15. return (q, v, p)
  16. if i == 2:
  17. return (p, v, t)
  18. if i == 3:
  19. return (p, q, v)
  20. if i == 4:
  21. return (t, p, v)
  22. if i == 5:
  23. return (v, p, q)
  24.  
  25.  
  26. # Setup the Neopixel strip on pin0 with a length of 8 pixels
  27. np = neopixel.NeoPixel(pin0, 145)
  28.  
  29. # All red
  30. display.show("R")
  31.  
  32. s_light = -5
  33. e_light = 0
  34.  
  35. for pixel_id in range(len(np)):
  36. np[pixel_id] = (220, 0, 0)
  37. np.show()
  38. sleep(500)
  39.  
  40. # All green
  41. display.show("G")
  42.  
  43. for pixel_id in range(len(np)):
  44. np[pixel_id] = (0, 220, 0)
  45. np.show()
  46. sleep(500)
  47.  
  48. # All blue
  49. display.show("B")
  50.  
  51. for pixel_id in range(len(np)):
  52. np[pixel_id] = (0, 0, 220)
  53. np.show()
  54. sleep(500)
  55.  
  56. # Viridis-like colour scale
  57. display.show("v")
  58.  
  59. cm_start = [54.0/360, .94, .57**2]
  60. cm_end = [287.0/360, .73, .19**2]
  61.  
  62. for pixel_id in range(len(np)):
  63. prog = (pixel_id * 1.0) / len(np)
  64. h, s, v = [ sv*prog + ev*(1-prog) for sv, ev in zip(cm_start, cm_end)]
  65. red, green, blue = hsv_to_rgb(h, s, v)
  66. red = int(red*254)
  67. green = int(green*254)
  68. blue = int(blue*254)
  69. np[pixel_id] = (red, green, blue)
  70. np.show()
  71. sleep(1500)
  72.  
  73. # Alternating colour
  74. display.show("x")
  75.  
  76. for pixel_id in range(len(np)):
  77. if pixel_id % 3 == 0:
  78. np[pixel_id] = (100, 0, 0)
  79. elif pixel_id % 3 == 1:
  80. np[pixel_id] = (0, 100, 0)
  81. else:
  82. np[pixel_id] = (0,0,0)
  83. np.show()
  84. sleep(1000)
  85.  
  86. display.show("o")
  87.  
  88. for pixel_id in range(len(np)):
  89. if pixel_id % 3 == 0:
  90. np[pixel_id] = (0, 0, 100)
  91. elif pixel_id % 3 == 1:
  92. np[pixel_id] = (0, 100, 0)
  93. else:
  94. np[pixel_id] = (0,0,0)
  95. np.show()
  96. sleep(1000)
  97.  
  98. display.show("x")
  99.  
  100. for pixel_id in range(len(np)):
  101. if pixel_id % 3 == 0:
  102. np[pixel_id] = (100, 0, 0)
  103. elif pixel_id % 3 == 1:
  104. np[pixel_id] = (0, 100, 0)
  105. else:
  106. np[pixel_id] = (0,0,0)
  107. np.show()
  108. sleep(1500)
  109.  
  110. # Using modulo to grow spots (note current limits may result in red colour)
  111. display.show("%")
  112.  
  113. for dist in range(22):
  114. for pixel_id in range(len(np)):
  115. np[pixel_id] = (0,0,0)
  116. if (pixel_id+dist/2) % 20 < dist:
  117. np[pixel_id] = (255, 255, 255)
  118. np.show()
  119.  
  120. for dist in list(range(22))[::-1]:
  121. for pixel_id in range(len(np)):
  122. np[pixel_id] = (0,0,0)
  123. if (pixel_id+dist/2) % 20 < dist:
  124. np[pixel_id] = (255, 255, 255)
  125. np.show()
  126.  
  127. # Flash- strobe lights!
  128.  
  129. for v in range(20):
  130. for pixel_id in range(len(np)):
  131. b = (255 * (v%2)) if (pixel_id-v) % 10 == 0 else 0
  132. np[pixel_id] = (b, b, b)
  133. np.show()
  134. sleep(1-(v%2) * 10)
  135.  
  136. n = 0
  137.  
  138. h = 0
  139. s = 1
  140. v = 0.1
  141. offset = 0
  142. mult = 4
  143.  
  144. # Marching rainbow!
  145. display.show("(")
  146.  
  147. while True:
  148. if button_a.is_pressed():
  149. mult *= 2
  150. if button_b.is_pressed():
  151. mult /= 2
  152.  
  153. offset += 0.05
  154.  
  155. for pixel_id in range(len(np)):
  156. h = (offset + (pixel_id/len(np)*mult)) % 1
  157. red, green, blue = hsv_to_rgb(h, s, v)
  158. red = int(red*254)
  159. green = int(green*254)
  160. blue = int(blue*254)
  161. np[pixel_id] = (red, green, blue)
  162.  
  163. n += 1
  164. n = n % len(np)
  165. np.show()
Add Comment
Please, Sign In to add comment