diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/__pycache__/led_display.cpython-37.pyc b/__pycache__/led_display.cpython-37.pyc new file mode 100644 index 0000000..cde2198 Binary files /dev/null and b/__pycache__/led_display.cpython-37.pyc differ diff --git a/led_display.py b/led_display.py new file mode 100644 index 0000000..099f4f7 --- /dev/null +++ b/led_display.py @@ -0,0 +1,66 @@ +# Library containing the class to create a new LED light display. + +import board +import neopixel +from PIL import Image +from adafruit_pixel_framebuf import PixelFramebuffer +import time +import argparse + + +class LightDisplay: + def __init__(self, x=8, y=8, orientation="vertical", color="red", speed=1): + self.x = x + self.y = y + self.orientation = orientation + self.color = color + self.speed = speed + + def display(self, message="Hello World"): + # Init variables + gpio_pin = board.D18 + pixel_width = self.x + scroll_width = pixel_width + 1 + pixel_height = self.y + scroll_height = pixel_height + 1 + pixel_max = pixel_width * pixel_height - 1 + led_message = self.message + + # Process arguments + parser = argparse.ArgumentParser() + parser.add_argument('-c', '--clear', action='store_true', help='clear the display on exit') + args = parser.parse_args() + + # Create NeoPixel object with appropriate configuration. + neo_pixel = neopixel.NeoPixel(gpio_pin, pixel_width * pixel_height, brightness=0.1, auto_write=False) + + #Create PixelFramebuffer object with appropriate configuration. + pixel_framebuf = PixelFramebuffer(neo_pixel, pixel_width, pixel_height, reverse_x=True,alternating=True) + + print ('Press Ctrl-C to quit.') + if not args.clear: + print('Use "-c" argument to clear LEDs on exit') + + try: + while True: + led_message_len = len(led_message) + led_message_scroll_height = led_message_len * 16 + + for led_scroll in range(0, led_message_scroll_height , 1): + led_char_counter = 1 + pixel_framebuf.fill(0x000000) + # pixel_framebuf.display() + + for led_char in led_message: + led_char_spacing = 8 * led_char_counter + led_char_pos = pixel_height - led_scroll + led_char_spacing + pixel_framebuf.text(led_char, 0, led_char_pos , 0x00FF00) + led_char_counter += 1 + + pixel_framebuf.display() + time.sleep(25/500) + + except KeyboardInterrupt: + if args.clear: + neo_pixel.deinit() + diff --git a/testscript b/testscript new file mode 100644 index 0000000..8a7e846 --- /dev/null +++ b/testscript @@ -0,0 +1,3 @@ +import os + +print(os.stat("font5x8.bin")[6]) diff --git a/vp_test.py b/vp_test.py new file mode 100755 index 0000000..f0669be --- /dev/null +++ b/vp_test.py @@ -0,0 +1,15 @@ +#!/usr/bin/python3 + +from led_display import LightDisplay + +def main(): + led_test = LightDisplay(8, 16, "blue", 2) + print(led_test.color) + print(led_test.x) + print(led_test.y) + print(led_test.speed) + print("") + led_test.display() + +if __name__ == "__main__": + main()