Beispiel #1
0
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)
Beispiel #2
0
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()
Beispiel #3
0
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()
Beispiel #4
0
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
Beispiel #5
0
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()
Beispiel #6
0
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
Beispiel #7
0
def clear():
    for y in range(8):
        for x in range(8):
            rainbow.set_pixel(x, y, 0, 0, 0)

    rainbow.show()
Beispiel #8
0
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)
Beispiel #9
0

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)
Beispiel #10
0
#!/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)
Beispiel #11
0
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)
Beispiel #12
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)
Beispiel #14
0
 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)