You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
RPi_WS2812b_LED/Scroll_Pi_Text.py

72 lines
2.0 KiB

#Created By: Justin Healy and Vin Presciutti || 2021
#Based off of work done by 2020 Melissa LeBlanc-Williams, written for Adafruit Industries, MIT
#!/usr/bin/python3
import board
import neopixel
from PIL import Image
from adafruit_pixel_framebuf import PixelFramebuffer
import time
import argparse
gpio_pin = board.D18
pixel_width = 8
scroll_width = pixel_width + 1
pixel_height = 16
scroll_height = pixel_height + 1
pixel_max = pixel_width * pixel_height - 1
led_message = "Jaki is the love of my life"
# Main program logic follows:
if __name__ == '__main__':
# 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()