def effect(): # trigger effect for i in range(steps_per * 8): for y in range(8): for x in range(8): r, g, b = background(x, y, i) r = int(max(0, min(255, r))) g = int(max(0, min(255, g))) b = int(max(0, min(255, b))) rainbow.set_pixel(x, y, r, g, b) rainbow.show() time.sleep(0.01) for i in range(200): v = (math.sin(i / 6.0) + 1.0) / 2.0 for y in range(8): for x in range(8): r = 0 b = 0 g = 100 g *= tick_mask[y][x] g *= v r = int(max(0, min(255, r))) g = int(max(0, min(255, g))) b = int(max(0, min(255, b))) rainbow.set_pixel(x, y, r, g, b) rainbow.show() time.sleep(0.02)
def step(): global i i = 0 if i>=100*len(ASCIIPIC) else i+1 # avoid overflow for h in range(height): for w in range(width): hPos = (i+h) % len(ASCIIPIC) chr = ASCIIPIC[hPos][w] if chr == ' ': rainbow.set_pixel(w, h, 0, 0, 0) else: rainbow.set_pixel(w, h, 255, 0, 0) rainbow.show()
def update_display(): # keep track of the row we are updating c = row_pointer for h in range(height): for w in range(width): # val is between 50 and 255 val = rows[c][w] # invert coordinates rainbow.set_pixel((width - 1) - w, (height - 1) - h, val, val, val) c += 1 if c > height - 1: c = 0 rainbow.show()
def toggle(tog): #toggle has been called determine state if tog: #randomise red, green and blue r = randint(30, 255) g = randint(30, 255) b = randint(30, 255) msg = "On!" else: #clear red, green and blue r = 0 g = 0 b = 0 msg = "Off!" #print the relevant message print(msg, r, g, b) #set the LEDs to the relevant lighting (all on/off) for y in range(height): for x in range(width): rainbow.set_pixel(x, y, r, g, b) rainbow.show() #return the inverse boolean variable that was passed in return not tog
def setup(): global heights heights = [] for b in range(0, 6): heights.append(0) uh.off() for b in range(0, 8): uh.set_pixel(0, b, 255, 255, 255) for b in range(0, 8): uh.set_pixel(7, b, 255, 255, 255) for b in range(1, 7): uh.set_pixel(b, 0, 255, 255, 255) uh.show()
def drop_ball(): ball_colour = [randint(100, 255), randint(100, 255), randint(100, 255)] ball_column = randint(0, 5) while heights[ball_column] == 7: ball_column = randint(0, 5) height = heights[ball_column] ball_y = 7 uh.set_pixel(ball_column + 1, ball_y, ball_colour[0], ball_colour[1], ball_colour[2]) uh.show() dropcount = 6 - height for y in range(0, dropcount): uh.set_pixel(ball_column + 1, ball_y, 0, 0, 0) ball_y -= 1 uh.set_pixel(ball_column + 1, ball_y, ball_colour[0], ball_colour[1], ball_colour[2]) uh.show() time.sleep(0.02) heights[ball_column] += 1
def clear(): for y in range(8): for x in range(8): rainbow.set_pixel(x, y, 0, 0, 0) rainbow.show()
import time, colorsys import numpy as np rainbow.brightness(0.5) def make_gaussian(fwhm): x = np.arange(0, 8, 1, float) y = x[:, np.newaxis] x0, y0 = 3.5, 3.5 fwhm = fwhm gauss = np.exp(-4 * np.log(2) * ((x - x0)**2 + (y - y0)**2) / fwhm**2) return gauss while True: fwhm = 5 gauss = make_gaussian(fwhm) for y in range(8): for x in range(8): h = 0.1 s = 1.0 v = gauss[x, y] rgb = colorsys.hsv_to_rgb(h, s, v) r = int(rgb[0] * 255.0) g = int(rgb[1] * 255.0) b = int(rgb[2] * 255.0) rainbow.set_pixel(x, y, r, g, b) rainbow.show() time.sleep(0.005)
rainbow.set_layout(rainbow.PHAT) rainbow.rotation(0) rainbow.brightness(0.5) print("Reticulating splines") time.sleep(.5) print("Enabled rainbow poop module!") time.sleep(.5) print("Pooping rainbows...") i = 0.0 offset = 30 while True: i = i + 0.3 for y in range(4): for x in range(8): r = 0#x * 32 g = 0#y * 32 xy = x + y / 4 r = (math.cos((x+i)/2.0) + math.cos((y+i)/2.0)) * 64.0 + 128.0 g = (math.sin((x+i)/1.5) + math.sin((y+i)/2.0)) * 64.0 + 128.0 b = (math.sin((x+i)/2.0) + math.cos((y+i)/1.5)) * 64.0 + 128.0 r = max(0, min(255, r + offset)) g = max(0, min(255, g + offset)) b = max(0, min(255, b + offset)) rainbow.set_pixel(x,y,int(r),int(g),int(b)) rainbow.show() time.sleep(0.01)
#!/usr/bin/env python import time import rainbowhat as rainbow print("""Simple Turns each pixel on in turn and updates the display. If you're using a Rainbow HAT and only half the screen lights up, edit this example and change 'rainbow.AUTO' to 'rainbow.HAT' below. """) rainbow.set_layout(rainbow.HAT) #rainbow.set_layout(rainbow.AUTO) rainbow.rotation(0) rainbow.brightness(0.3) width, height = rainbow.get_shape() for y in range(height): for x in range(width): rainbow.set_pixel(x, y, 0, 0, 254) rainbow.show() time.sleep(0.05) time.sleep(1)
rainbow.rotation(90) rainbow.brightness(0.5) wrd_rgb = [[154, 173, 154], [0, 255, 0], [0, 200, 0], [0, 162, 0], [0, 145, 0], [0, 96, 0], [0, 74, 0], [ 0, 0, 0, ]] clock = 0 blue_pilled_population = [[randint(0, 7), 7]] while True: for person in blue_pilled_population: y = person[1] for rgb in wrd_rgb: if (y <= 7) and (y >= 0): rainbow.set_pixel(person[0], y, rgb[0], rgb[1], rgb[2]) y += 1 person[1] -= 1 rainbow.show() time.sleep(0.1) clock += 1 if clock % 5 == 0: blue_pilled_population.append([randint(0, 7), 7]) if clock % 7 == 0: blue_pilled_population.append([randint(0, 7), 7]) while len(blue_pilled_population) > 100: blue_pilled_population.pop(0)
rainbow.brightness(0.5) m = [[0 for i in range(8)] for i in range(8)] while True: if 1 in m[-1]: top = [0.5 * i for i in m[-1]] elif 0.5 in m[-1]: top = [0] * 8 else: top = [random.randint(0,1) for i in range(2)] + [0,0,0,0,0,0] random.shuffle(top) for i in range(len(top)): if top[i] == 1 and top[i-1] == 1: top[i] = 0 m.append(top) del m[0] for x in range(8): for y in range(8): h = 0.6 s = 0.6 v = m[x][y] * 0.8 rgb = colorsys.hsv_to_rgb(h, s, v) r = int(rgb[0]*255.0) g = int(rgb[1]*255.0) b = int(rgb[2]*255.0) rainbow.set_pixel(y, x, r, g, b) rainbow.show() time.sleep(0.075)
def set_pixel(self, width, height, r, g, b): height, width = self.convert(height, width) rainbow.set_pixel(width, height, r, g, b)
def pixel(self, x, y, col): if x < 0 or x > 7 or y < 0 or y > 7: return False self.buffer[(x, y)] = col rainbow.set_pixel(x, y, col.r, col.g, col.b)