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 make_matrix(self, width, height, **kwds): driver = DriverBase(num=width * height) return Matrix(driver, width=width, height=height, maker=self.maker, **kwds)
#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()
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)
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()
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)