Python Forum

Full Version: scrolling a text using loop
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi,

I'm trying to scroll a text on a 7 segment display. The display library doesn't have a scroll option so I made one up via a repetitive code. Because said code looks too awkward, I'd like to shorten it using a loop, but I just cannot get it right.
I appreciate some hints.
TIA

import time
from Adafruit_LED_Backpack import SevenSegment

brightness = 10

# init display. Must be called once before using the display.
seg = SevenSegment.SevenSegment(address=0x70)
seg.begin()
seg.set_brightness(brightness)

btext = {' ': 0x00, '-': 0x40, 'h': 0x76, 'a': 0x77, 'p': 0x73, 'y': 0x6E, 'b': 0x7c,  
        'i': 0x10, 'r': 0x50, 't': 0x78, 'd': 0x5E, 'n': 0x54}

#content: space h a p p y space b i r t h d a y space d a n i	   
arry = [0x00, 0x76, 0x77, 0x73, 0x73, 0x6E, 0x00,
        0x7c, 0x10, 0x50, 0x78, 0x76, 0x5E, 0x77, 0x6E,
       	0x00, 0x5E, 0x77, 0x54, 0x10
       ]

#this works
def scroll_msg_():
    ''' displays happy birthday dani
    from btext'''
    seg.clear()
    seg.set_digit_raw(0, btext[' '])
    seg.set_digit_raw(1, btext[' '])
    seg.set_digit_raw(2, btext[' ']) 
    seg.set_digit_raw(3, btext[' '])
    seg.write_display()
    time.sleep(.3)
    seg.clear()
    seg.set_digit_raw(0, btext[' '])
    seg.set_digit_raw(1, btext[' '])
    seg.set_digit_raw(2, btext[' '])
    seg.set_digit_raw(3, btext['h'])
    seg.write_display()
    time.sleep(.3)
    seg.clear()
    seg.set_digit_raw(0, btext[' '])
    seg.set_digit_raw(1, btext[' '])
    seg.set_digit_raw(2, btext['h']) 
    seg.set_digit_raw(3, btext['a'])
    seg.write_display()
    time.sleep(.3)
    seg.clear()
    seg.set_digit_raw(0, btext[' '])
    seg.set_digit_raw(1, btext['h'])
    seg.set_digit_raw(2, btext['a'])
    seg.set_digit_raw(3, btext['p'])
    seg.write_display()
    time.sleep(.3) 
    seg.clear()
    seg.set_digit_raw(0, btext['h'])
    seg.set_digit_raw(1, btext['a'])
    seg.set_digit_raw(2, btext['p'])
    seg.set_digit_raw(3, btext['p'])
    seg.write_display()
    time.sleep(.3)
    seg.clear()
    seg.set_digit_raw(0, btext['a'])
    seg.set_digit_raw(1, btext['p'])
    seg.set_digit_raw(2, btext['p'])
    seg.set_digit_raw(3, btext['y'])
    seg.write_display()
    time.sleep(.3)  
    seg.clear()
    seg.set_digit_raw(0, btext['p'])
    seg.set_digit_raw(1, btext['p'])
    seg.set_digit_raw(2, btext['y'])
    seg.set_digit_raw(3, btext[' '])
    seg.write_display()
    time.sleep(.3)
    seg.clear()
    seg.set_digit_raw(0, btext['p'])
    seg.set_digit_raw(1, btext['y'])
    seg.set_digit_raw(2, btext[' '])
    seg.set_digit_raw(3, btext['b'])
    seg.write_display()
    time.sleep(.3)  
    seg.clear()
    seg.set_digit_raw(0, btext['y'])
    seg.set_digit_raw(1, btext[' '])
    seg.set_digit_raw(2, btext['b'])
    seg.set_digit_raw(3, btext['i'])
    seg.write_display()
    time.sleep(.3)
    seg.clear()
    seg.set_digit_raw(0, btext[' '])
    seg.set_digit_raw(1, btext['b'])
    seg.set_digit_raw(2, btext['i'])
    seg.set_digit_raw(3, btext['r'])
    seg.write_display()
    time.sleep(.3)  
    seg.clear()
    seg.set_digit_raw(0, btext['b'])
    seg.set_digit_raw(1, btext['i'])
    seg.set_digit_raw(2, btext['r']) 
    seg.set_digit_raw(3, btext['t'])
    seg.write_display()
    time.sleep(.3)
    seg.clear()
    seg.set_digit_raw(0, btext['i'])
    seg.set_digit_raw(1, btext['r'])
    seg.set_digit_raw(2, btext['t'])
    seg.set_digit_raw(3, btext['h'])
    seg.write_display()
    time.sleep(.3) 
    seg.clear()
    seg.set_digit_raw(0, btext['r'])
    seg.set_digit_raw(1, btext['t'])
    seg.set_digit_raw(2, btext['h']) 
    seg.set_digit_raw(3, btext['d'])
    seg.write_display()
    time.sleep(.3)
    seg.clear()
    seg.set_digit_raw(0, btext['t'])
    seg.set_digit_raw(1, btext['h'])
    seg.set_digit_raw(2, btext['d'])
    seg.set_digit_raw(3, btext['a'])
    seg.write_display()
    time.sleep(.3)
    seg.clear()
    seg.set_digit_raw(0, btext['h'])
    seg.set_digit_raw(1, btext['d'])
    seg.set_digit_raw(2, btext['a'])
    seg.set_digit_raw(3, btext['y'])
    seg.write_display()
    time.sleep(.3)
    seg.clear()
    seg.set_digit_raw(0, btext['d'])
    seg.set_digit_raw(1, btext['a'])
    seg.set_digit_raw(2, btext['y'])
    seg.set_digit_raw(3, btext[' '])
    seg.write_display()
    time.sleep(.3) 
    seg.clear()
    seg.set_digit_raw(0, btext['a'])
    seg.set_digit_raw(1, btext['y'])
    seg.set_digit_raw(2, btext[' ']) 
    seg.set_digit_raw(3, btext['d'])
    seg.write_display()
    time.sleep(.3)
    seg.clear()
    seg.set_digit_raw(0, btext['y'])
    seg.set_digit_raw(1, btext[' '])
    seg.set_digit_raw(2, btext['d'])
    seg.set_digit_raw(3, btext['a'])
    seg.write_display()
    time.sleep(.3)
    seg.clear()
    seg.set_digit_raw(0, btext[' '])
    seg.set_digit_raw(1, btext['d'])
    seg.set_digit_raw(2, btext['a'])
    seg.set_digit_raw(3, btext['n'])
    seg.write_display()
    time.sleep(.3)
    seg.clear()
    seg.set_digit_raw(0, btext['d'])
    seg.set_digit_raw(1, btext['a'])
    seg.set_digit_raw(2, btext['n'])
    seg.set_digit_raw(3, btext['i'])
    seg.write_display()
    time.sleep(.5)  
    seg.clear()

def scroll_msg():
    ''' displays happy birthday dani
    from array'''

    seg.clear()
    for i in range(4):
      for t in range(len(arry)):
        seg.set_digit_raw(1, arry[t])
        seg.write_display()
        time.sleep(.5)
        seg.clear()




def main():
    scroll_msg()
    time.sleep(2)

if __name__ == '__main__':
    while(True):
        main()
Solved with the following code:

def scroll_msg():
    ''' displays happy birthday dani
    from array'''

    seg.clear()
    for i in range(len(arry)):
      for t in range(len(arry)):
        seg.set_digit_raw(3, arry[t])
        seg.set_digit_raw(2, arry[t-1])
        seg.set_digit_raw(1, arry[t-2])
        seg.set_digit_raw(0, arry[t-3])  
        seg.write_display()
        time.sleep(.3)
        seg.clear()