def brightness():
    '''All matrices show displays all LEDs lit, from min to max brightness over about 1 second.
    Should be left at max brightness.
    '''
    fb = FrameBuffer(matrix_layout=[(0, 0, 90)])
    for i in range(16):
        fb.erase(i)
        fb.show()
        time.sleep(0.1)
def sprite_time_large_bitmap_draw_and_show():
    # This is currently quite slow, as it is all done in Python via a 2D array.
    # Speed not needed right now, but may in future move to numpy or CPython
    fb = FrameBuffer(matrix_layout=[(0, 0, 0)])
    s = Sprite((('5' * 16) + '\n') * 16)

    def draw():
        fb.draw(s)
        fb.show()

    return timeit(partial(draw), loops=100) > 50
def diagonal_wave_animation():
    '''Displays a diagonal wave animation over ~3 seconds.  Movement should
    appear in the direction from the botton right to the top left.
    '''
    fb = FrameBuffer(matrix_layout=[(0, 0, 90)])
    colors = list(range(16)) + list(reversed(range(16)))
    for i in range(80):
        for x in range(16):
            fb.line((x - 8, 0), (x, fb.height), color=colors[x])
        fb.show()
        # rotate colors
        colors = colors[1:] + colors[:1]
        time.sleep(0.04)
def rect2():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0)])
    fb.rect((0, 0), (8, 8), fill=True)
    expected_fb = '''
        FFFFFFFF
        FFFFFFFF
        FFFFFFFF
        FFFFFFFF
        FFFFFFFF
        FFFFFFFF
        FFFFFFFF
        FFFFFFFF
        '''
    return arrays_equal(expected_fb, fb)
def rect3():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0)])
    fb.rect((2, 1), (3, 5), fill=True)
    expected_fb = '''
        00000000
        00000000
        00FFF000
        00FFF000
        00FFF000
        00FFF000
        00FFF000
        00000000
        '''
    return arrays_equal(expected_fb, fb)
def point4():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0)])
    fb.point(7, 7, color=10)
    expected_fb = '''
        0000000A
        00000000
        00000000
        00000000
        00000000
        00000000
        00000000
        00000000
        '''
    return arrays_equal(expected_fb, fb)
def point3():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0)])
    fb.point(1, 2, color=3)
    expected_fb = '''
        00000000
        00000000
        00000000
        00000000
        00000000
        03000000
        00000000
        00000000
        '''
    return arrays_equal(expected_fb, fb)
def point2():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0)])
    fb.point((0, 0), color=1)
    expected_fb = '''
        00000000
        00000000
        00000000
        00000000
        00000000
        00000000
        00000000
        10000000
        '''
    return arrays_equal(expected_fb, fb)
def point1():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0)])
    fb.point(0, 0)
    expected_fb = '''
        00000000
        00000000
        00000000
        00000000
        00000000
        00000000
        00000000
        F0000000
        '''
    return arrays_equal(expected_fb, fb)
def init_two():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0), (8, 0, 0)])
    fb.line((0, 0), (fb.width, fb.height), color=0xa)
    expected_fb = '''
        00000000000000aa
        000000000000aa00
        0000000000aa0000
        00000000aa000000
        000000aa00000000
        0000aa0000000000
        00aa000000000000
        aa00000000000000
        '''
    return arrays_equal(expected_fb, fb)
def line5():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0)])
    fb.line((1, 3), (6, 5))
    expected_fb = '''
        00000000
        00000000
        00000FF0
        000FF000
        0FF00000
        00000000
        00000000
        00000000
        '''
    return arrays_equal(expected_fb, fb)
def line3():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0)])
    fb.line((0, 0), (7, 7))
    expected_fb = '''
        0000000F
        000000F0
        00000F00
        0000F000
        000F0000
        00F00000
        0F000000
        F0000000
        '''
    return arrays_equal(expected_fb, fb)
def sprite_draw():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0)])
    fb.erase(0xE)
    s = copy.deepcopy(default_sprite)
    fb.draw(s, origin=(2, 3))
    expected_fb = '''
        EEEEEEEE
        EE123EEE
        EE456EEE
        EE789EEE
        EEABCEEE
        EEEEEEEE
        EEEEEEEE
        EEEEEEEE
        '''
    return arrays_equal(expected_fb, fb)
def line4():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0)])
    fb.line((0, 0), (7, 7))
    fb.line((7, 0), (0, 7), color=1)
    fb.line((2, 0), (2, 7), color=2)
    fb.line((0, 2), (7, 2), color=3)
    expected_fb = '''
        1020000F
        012000F0
        00200F00
        0021F000
        002F1000
        33333333
        0F200010
        F0200001
        '''
    return arrays_equal(expected_fb, fb)
def rect4():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0)])
    fb.rect((0, 0), (4, 5), color=1)
    fb.rect((2, 2), (6, 6), color=2)
    fb.rect((5, 1), (3, 3), color=3)
    fb.rect((1, 5), (4, 2), color=4)
    expected_fb = '''
        00222222
        04444002
        04444002
        11210002
        10210333
        10222323
        10010333
        11110000
        '''
    return arrays_equal(expected_fb, fb)
def verify_cpu():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0)])
    return testing.verify_cpu()
def init_two_bad_angle():
    try:
        fb = FrameBuffer(matrix_layout=[(0, 0, 0), (8, 0, 123)])
    except ValueError:
        return True
    return False
def erase1():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0)])
    fb.erase(0xf)
    fb.erase()
    return fb._framebuffer() == makefb('00000000\n' * 8)
def erase2():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0)])
    fb.erase(3)
    return fb._framebuffer() == makefb('33333333\n' * 8)
def default_erased():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0)])
    return fb._framebuffer() == erased_fb()
def erase3():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0)])
    fb.erase(7)
    return fb._framebuffer() == makefb('77777777\n' * 8)
def out_of_bounds_point3():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0)])
    fb.point(fb.width, 0)
    return fb._framebuffer() == erased_fb()
def time_show():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0)])
    return timeit(partial(fb.show), loops=200) > 300
def out_of_bounds_point4():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0)])
    fb.point(0, fb.height)
    return fb._framebuffer() == erased_fb()
def time_point():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0)])
    return timeit(partial(fb.point, 0, 0)) > 40000
Esempio n. 26
0
from rstem.led_matrix import FrameBuffer, Sprite
from rstem.gpio import Output
import time
from random import random

fb = FrameBuffer([(0, 0, 90)])

outs = [
    Output(17),
    Output(27),
    Output(22),
    Output(23),
    Output(4),
    Output(14),
    Output(15),
    Output(18),
]

with open('scroller1.spr') as f:
    s1 = Sprite(f.read())
s1_width = s1.width
s1 += s1

with open('scroller2.spr') as f:
    s2 = Sprite(f.read())
s2_width = s2.width
s2 += s2

i = 0
i1 = 0
i2 = 0
def init_three_diagonal():
    fb = FrameBuffer(matrix_layout=[(0, 0, 0), (8, 8, 0), (16, 16, 0)])
    expected_fb = (('0' * 24) + '\n') * 24
    return arrays_equal(expected_fb, fb)
Esempio n. 28
0
from rstem.led_matrix import FrameBuffer
from rstem.mcpi import minecraft, control
import time

control.show()

mc = minecraft.Minecraft.create()

SCALE = 25
fb = FrameBuffer()

count = 0
FLASH_COUNT = 3
flash_lit = True
while True:
    pos = mc.player.getTilePos()

    x = round(pos.x / SCALE + (fb.width - 1) / 2)
    x_out_of_bounds = not 0 <= x < fb.width
    x = min(fb.width - 1, max(0, x))

    z = round(pos.z / SCALE + (fb.height - 1) / 2)
    z_out_of_bounds = not 0 <= z < fb.height
    z = min(fb.height - 1, max(0, z))

    fb.erase()
    count += 1
    if count > FLASH_COUNT:
        flash_lit = not flash_lit
        count = 0
    if not x_out_of_bounds and not z_out_of_bounds or flash_lit:
# Initialize framebuffer
fb = FrameBuffer(matrix_layout=[
    (0, 0, 0),
    (8, 0, 0),
    (16, 0, 0),
    (24, 0, 0),
    (32, 0, 0),
    (32, 8, 180),
    (24, 8, 180),
    (16, 8, 180),
    (8, 8, 180),
    (0, 8, 180),
    (0, 16, 0),
    (8, 16, 0),
    (16, 16, 0),
    (24, 16, 0),
    (32, 16, 0),
    (32, 24, 180),
    (24, 24, 180),
    (16, 24, 180),
    (8, 24, 180),
    (0, 24, 180),
    (0, 32, 0),
    (8, 32, 0),
    (16, 32, 0),
    (24, 32, 0),
    (32, 32, 0),
])

# Initialize accelerometer