Beispiel #1
0
    def matrix_test(self, width=16, height=16):
        d = DriverBase(num=width * height)
        self.matrix = Matrix(d, width=width, height=height, maker=self.maker)

        yield  # Perform your operation here.

        self.dump()
        expected = getattr(matrix_results, self.name_of_test())
        actual = self.to_strings()
        if expected != actual:
            log.printer('Expected:', *(repr(s) for s in expected), sep='\n')
            log.printer('Actual:', *(repr(s) for s in actual), sep='\n')
            self.assertTrue(False)
Beispiel #2
0
 def make_matrix(self, width, height, **kwds):
     driver = DriverBase(num=width * height)
     return Matrix(driver,
                   width=width,
                   height=height,
                   maker=self.maker,
                   **kwds)
Beispiel #3
0
    def matrix_test(self, width=16, height=16):
        d = DriverBase(num=width * height)
        self.matrix = Matrix(d, width=width, height=height, maker=self.maker)

        yield  # Perform your operation here.

        self.dump()
        expected = getattr(matrix_results, self.name_of_test())
        actual = self.to_strings()
        if expected != actual:
            log.printer('Expected:', *(repr(s) for s in expected), sep='\n')
            log.printer('Actual:', *(repr(s) for s in actual), sep='\n')
            self.assertTrue(False)
#get message from command line
if (len(sys.argv) != 2):
    print("Only insert 1 command line argument that is the message to display")
    exit(1)
message = sys.argv[1]

#create biblio pixel driver and led
vert_flip = False  # flip across x-axis
y_flip = False  # flip across y-axis
serpentine = True  # serpentine pattern
thread = False  # display updates to run in background thread
width = 58  # width of board
height = 5  # height of board
brightness = 100  # brightness 0-255
driver = PiWS281X(height * width)
led = Matrix(driver, width, height, Rotation.ROTATE_0, vert_flip, y_flip,
             serpentine, thread, brightness)

# get word
characterSet = MessageCharacters5x3()
messageParser = StandardMessageParser(message, characterSet)
word = messageParser.getMessageMatrix()

# get algorithms
colorAlgorithm = RainbowColorAlgorithm()
messageAlgorithm = ScrollLeftMessageAlgorithm(colorAlgorithm)

#run animation
delay = .15
anim = MessageBoardAnimation(led, word, messageAlgorithm, delay)
anim.run()
Beispiel #5
0
class BaseMatrixTest(unittest.TestCase):
    def text_at(self, x, y):
        """Return text for a given pixel"""
        return '*' if any(self.matrix.get(x, y)) else ' '

    def line_at(self, y):
        return ''.join(self.text_at(x, y) for x in range(self.matrix.width))

    def to_strings(self):
        return tuple(self.line_at(y) for y in range(self.matrix.height))

    def name_of_test(self):
        name = self.id().split('.')[-1]
        if name.startswith('test_'):
            name = name[len('test_'):]
        return name.upper()

    def dump(self):
        # Dump the result to a file, if enabled.
        pass

    @contextlib.contextmanager
    def matrix_test(self, width=16, height=16):
        d = DriverBase(num=width * height)
        self.matrix = Matrix(d, width=width, height=height, maker=self.maker)

        yield  # Perform your operation here.

        self.dump()
        expected = getattr(matrix_results, self.name_of_test())
        actual = self.to_strings()
        if expected != actual:
            log.printer('Expected:', *(repr(s) for s in expected), sep='\n')
            log.printer('Actual:', *(repr(s) for s in actual), sep='\n')
            self.assertTrue(False)

    def test_empty(self):
        with self.matrix_test(4, 4):
            pass

    def test_horizontal_line(self):
        with self.matrix_test():
            self.matrix.drawLine(0, 0, 15, 0, WHITE)

    def test_vertical_line(self):
        with self.matrix_test():
            self.matrix.drawLine(0, 0, 0, 15, WHITE)

    def test_vertical_line2(self):
        with self.matrix_test():
            self.matrix.drawLine(1, 0, 1, 15, WHITE)

    def test_draw_circle1(self):
        with self.matrix_test():
            self.matrix.drawCircle(8, 8, 6, WHITE)

    def test_draw_circle2(self):
        with self.matrix_test(8, 8):
            self.matrix.drawCircle(4, 4, 15, WHITE)

    def test_draw_circle3(self):
        with self.matrix_test(4, 12):
            self.matrix.drawCircle(4, 6, 20, WHITE)

    def test_fill_circle1(self):
        with self.matrix_test():
            self.matrix.fillCircle(8, 8, 6, WHITE)

    def test_fill_circle2(self):
        with self.matrix_test(8, 8):
            self.matrix.fillCircle(4, 4, 15, WHITE)

    def test_fill_circle3(self):
        with self.matrix_test(4, 12):
            self.matrix.fillCircle(4, 6, 20, WHITE)

    def test_bresenham0(self):
        with self.matrix_test(8, 8):
            self.matrix.bresenham_line(0, 0, 8, 8, WHITE)

    def test_bresenham1(self):
        with self.matrix_test(8, 8):
            self.matrix.bresenham_line(8, 8, 0, 0, WHITE)

    def test_bresenham2(self):
        with self.matrix_test():
            self.matrix.bresenham_line(3, 5, 15, 18, WHITE)

    def test_bresenham3(self):
        with self.matrix_test():
            self.matrix.bresenham_line(15, 18, 3, 5, WHITE)

    def test_wu0(self):
        with self.matrix_test(8, 8):
            self.matrix.wu_line(0, 0, 8, 8, WHITE)

    def test_wu1(self):
        with self.matrix_test(8, 8):
            self.matrix.wu_line(8, 8, 0, 0, WHITE)

    def test_wu2(self):
        with self.matrix_test():
            self.matrix.wu_line(3, 5, 15, 18, WHITE)

    def test_wu3(self):
        with self.matrix_test():
            self.matrix.wu_line(15, 18, 3, 5, WHITE)

    def test_draw_rect(self):
        with self.matrix_test():
            self.matrix.drawRect(3, 5, 3, 2, WHITE)

    def test_fill_rect(self):
        with self.matrix_test():
            self.matrix.fillRect(3, 5, 6, 4, WHITE)

    def test_fill_screen(self):
        with self.matrix_test():
            self.matrix.fillScreen(WHITE)

    def DISABLED_test_draw_round_rect(self):
        with self.matrix_test():
            self.matrix.drawRoundRect(3, 5, 6, 7, 7, WHITE)

    def DISABLED_test_fill_round_rect(self):
        with self.matrix_test():
            self.matrix.fillRoundRect(3, 5, 6, 7, 7, WHITE)

    def test_draw_triangle(self):
        with self.matrix_test():
            self.matrix.drawTriangle(0, 0, 11, 4, 5, 12, WHITE)

    def DISABLED_test_fill_triangle(self):
        with self.matrix_test():
            self.matrix.fillTriangle(0, 0, 11, 4, 5, 12, WHITE)

    def test_draw_text(self):
        with self.matrix_test(32, 10):
            self.matrix.drawText('abc', color=WHITE)
Beispiel #6
0
from BiblioPixelAnimations.matrix.bloom import Bloom
from BiblioPixelAnimations.matrix.Text import ScrollText
from bibliopixel.drivers.serial.driver import TeensySmartMatrix
import bibliopixel.colors as colors
from bibliopixel.layout import Matrix
import bibliopixel.log as log
import time

log.setLogLevel(log.DEBUG)

w = 64
h = 32
driver = TeensySmartMatrix(w, h)

led = Matrix(driver, width=w, height=h, serpentine=False, threadedUpdate=False)

# load channel test animation
# from bibliopixel.animation import MatrixCalibrationTest
# anim = MatrixCalibrationTest(led)
# anim.run(fps=30)

try:
    anim = Bloom(led)
    anim.run(amt=6, fps=10)
except:
    led.all_off()
    led.update()
    time.sleep(1)
    led.all_off()
    led.update()
Beispiel #7
0
class BaseMatrixTest(unittest.TestCase):

    def text_at(self, x, y):
        """Return text for a given pixel"""
        return '*' if any(self.matrix.get(x, y)) else ' '

    def line_at(self, y):
        return ''.join(self.text_at(x, y) for x in range(self.matrix.width))

    def to_strings(self):
        return tuple(self.line_at(y) for y in range(self.matrix.height))

    def name_of_test(self):
        name = self.id().split('.')[-1]
        if name.startswith('test_'):
            name = name[len('test_'):]
        return name.upper()

    def dump(self):
        # Dump the result to a file, if enabled.
        pass

    @contextlib.contextmanager
    def matrix_test(self, width=16, height=16):
        d = DriverBase(num=width * height)
        self.matrix = Matrix(d, width=width, height=height, maker=self.maker)

        yield  # Perform your operation here.

        self.dump()
        expected = getattr(matrix_results, self.name_of_test())
        actual = self.to_strings()
        if expected != actual:
            log.printer('Expected:', *(repr(s) for s in expected), sep='\n')
            log.printer('Actual:', *(repr(s) for s in actual), sep='\n')
            self.assertTrue(False)

    def test_empty(self):
        with self.matrix_test(4, 4):
            pass

    def test_horizontal_line(self):
        with self.matrix_test():
            self.matrix.drawLine(0, 0, 15, 0, WHITE)

    def test_vertical_line(self):
        with self.matrix_test():
            self.matrix.drawLine(0, 0, 0, 15, WHITE)

    def test_vertical_line2(self):
        with self.matrix_test():
            self.matrix.drawLine(1, 0, 1, 15, WHITE)

    def test_draw_circle1(self):
        with self.matrix_test():
            self.matrix.drawCircle(8, 8, 6, WHITE)

    def test_draw_circle2(self):
        with self.matrix_test(8, 8):
            self.matrix.drawCircle(4, 4, 15, WHITE)

    def test_draw_circle3(self):
        with self.matrix_test(4, 12):
            self.matrix.drawCircle(4, 6, 20, WHITE)

    def test_fill_circle1(self):
        with self.matrix_test():
            self.matrix.fillCircle(8, 8, 6, WHITE)

    def test_fill_circle2(self):
        with self.matrix_test(8, 8):
            self.matrix.fillCircle(4, 4, 15, WHITE)

    def test_fill_circle3(self):
        with self.matrix_test(4, 12):
            self.matrix.fillCircle(4, 6, 20, WHITE)

    def test_bresenham0(self):
        with self.matrix_test(8, 8):
            self.matrix.bresenham_line(0, 0, 8, 8, WHITE)

    def test_bresenham1(self):
        with self.matrix_test(8, 8):
            self.matrix.bresenham_line(8, 8, 0, 0, WHITE)

    def test_bresenham2(self):
        with self.matrix_test():
            self.matrix.bresenham_line(3, 5, 15, 18, WHITE)

    def test_bresenham3(self):
        with self.matrix_test():
            self.matrix.bresenham_line(15, 18, 3, 5, WHITE)

    def test_wu0(self):
        with self.matrix_test(8, 8):
            self.matrix.wu_line(0, 0, 8, 8, WHITE)

    def test_wu1(self):
        with self.matrix_test(8, 8):
            self.matrix.wu_line(8, 8, 0, 0, WHITE)

    def test_wu2(self):
        with self.matrix_test():
            self.matrix.wu_line(3, 5, 15, 18, WHITE)

    def test_wu3(self):
        with self.matrix_test():
            self.matrix.wu_line(15, 18, 3, 5, WHITE)

    def test_draw_rect(self):
        with self.matrix_test():
            self.matrix.drawRect(3, 5, 3, 2, WHITE)

    def test_fill_rect(self):
        with self.matrix_test():
            self.matrix.fillRect(3, 5, 6, 4, WHITE)

    def test_fill_screen(self):
        with self.matrix_test():
            self.matrix.fillScreen(WHITE)

    def DISABLED_test_draw_round_rect(self):
        with self.matrix_test():
            self.matrix.drawRoundRect(3, 5, 6, 7, 7, WHITE)

    def DISABLED_test_fill_round_rect(self):
        with self.matrix_test():
            self.matrix.fillRoundRect(3, 5, 6, 7, 7, WHITE)

    def test_draw_triangle(self):
        with self.matrix_test():
            self.matrix.drawTriangle(0, 0, 11, 4, 5, 12, WHITE)

    def DISABLED_test_fill_triangle(self):
        with self.matrix_test():
            self.matrix.fillTriangle(0, 0, 11, 4, 5, 12, WHITE)

    def test_draw_text(self):
        with self.matrix_test(32, 10):
            self.matrix.drawText('abc', color=WHITE)
Beispiel #8
0
        beam_state.animation = args.animation
    if args.brightness:
        beam_state.brightness = math.floor(args.brightness *
                                           (config.max_brightness / 255.))
    if args.delay:
        beam_state.delay = args.delay

    num_pixels = config.pixels_per_strip * config.num_strips
    if config.driver == 'sim':
        # simulator on osx
        log.info('using sim driver')
        driver = SimPixel.SimPixel(num=num_pixels)
    else:
        # hardware on pi
        c_order = getattr(ChannelOrder, config.channel_order)
        log.info(
            'using neopixel driver with channel order: {}'.format(c_order))
        driver = Serial(num=num_pixels,
                        ledtype=LEDTYPE.WS2811,
                        c_order=c_order)

    led = Matrix(
        driver,
        width=config.pixels_per_strip,
        height=config.num_strips,
        brightness=beam_state.brightness,
        serpentine=True,
    )

    main_loop(led)