FourLetter - Can it display text upside down?

Just wondering if there’s a good way to display text on the Four Letter PHAT upside down.

1 Like

That’s a good question- I don’t believe the library exposes a method to do this, but things like decimal numbers would be impossible to rotate since the dots aren’t mirrored.

Still, it’s tricky! But not impossible.

I will try to come up with something, and I will update this thread if I come up with a good solution. Thanks Phil.

I would also like to know :-)

I managed to get the text turned around, these 14 segment displays make use of a character map which tells the display which led segments to turn on or off.

The character maps is defined in alphanum4.py, so in order for the text to be reversed one has to re do the whole map.

Here is my mapping,

Digit value to bitmask mapping:

DIGIT_VALUES = {
’ β€˜: 0b0000000000000000,
β€˜.’: 0b0000000000000000,
β€˜,’: 0b0000100000000000,
β€˜:’: 0b0001001000000000,
β€˜;’: 0b0000101000000000,
β€˜!’: 0b0000000000000110,
β€˜?’: 0b0001000010000011,
β€˜@’: 0b0000001010111011,
β€˜*’: 0b0011111111000000,
’ #’: 0b0001001011001110,
β€˜$’: 0b0001001011101101,
β€˜%’: 0b0000110000100100,
β€˜&’: 0b0010001101011101,
β€˜^’: 0b0000110000000011,
β€˜+’: 0b0001001011000000,
β€˜-’: 0b0000000011000000,
β€˜=’: 0b0000000011001000,
β€˜_’: 0b0000000000001000,
β€˜`’: 0b0000000100000000,
β€˜"’: 0b0000001000100000,
β€˜|’: 0b0001001000000000,
β€˜~’: 0b0000010100100000,

'/': 0b0000010000000000,
'\'': 0b0000110000000000,    
'\\': 0b0010000100000000,

')': 0b0010010000000000,
'(': 0b0000100100000000,

']': 0b0000000000111001,
'[': 0b0000000000001111,

'}': 0b0000100101001001,
'{': 0b0010010010001001,

'>': 0b0010010000000000,        
'<': 0b0000100100000000,

#   '0': 0b0000110000111111,    
'0': 0b0000110000111111,    
#           D L M N K J H G G F E D C B A    

#   '1': 0b0000000000000110,
'1': 0b0000000000110000,
#           D L M N K J H G G F E D C B A     

#   '2': 0b0000000011011011,
'2': 0b0000000011011011,
#           D L M N K J H G G F E D C B A   
       
#   '3': 0b0000000010001111,
'3': 0b0000000001111001,
     #      D L M N K J H G G F E D C B A    
       
#   '4': 0b0000000011100110,
'4': 0b0000000011110100,
#           D L M N K J H G G F E D C B A   

#   '5': 0b0010000001101001,
'5': 0b0000000011101101,
#           D L M N K J H G G F E D C B A   

#   '6': 0b000000001111111,
'6': 0b0000000011101111, 
#           D L M N K J H G G F E D C B A    
      
#   '7': 0b0000000000000111,
'7': 0b0000000000111000,
#           D L M N K J H G G F E D C B A   

#   '8': 0b0000000011111111,
'8': 0b0000000011111111,   
#           D L M N K J H G G F E D C B A     
  
#   '9': 0b0000000011101111,
'9': 0b0000000011111101,
#           D L M N K J H G G F E D C B A    
  
#   'A': 0b0000000011110111,   
'A': 0b0000000011111110,    
#           D L M N K J H G G F E D C B A   
   
#   'B': 0b0001001010001111,   
'B': 0b0001001001111001,    
#           D L M N K J H G G F E D C B A    
    
#   'C': 0b0000000000111001,
'C': 0b0000000000001111,    
#           D L M N K J H G G F E D C B A   

#   'D': 0b0001001000001111,
'D': 0b0001001000111001,    
#           D L M N K J H G G F E D C B A    
 
#   'E': 0b0000000011111001,
'E': 0b0000000011001111,    
#           D L M N K J H G G F E D C B A   
  
#   'F': 0b0000000001110001,
'F': 0b0000000010001110,    
#           D L M N K J H G G F E D C B A  
    
#   'G': 0b0000000010111101,
'G': 0b0000000001101111,    
#           D L M N K J H G G F E D C B A    
  
#   'H': 0b0000000011110110,
'H': 0b0000000011110110,
#           D L M N K J H G G F E D C B A   
   
#   'I': 0b0001001000001000,
'I': 0b0001001000001001,
#           D L M N K J H G G F E D C B A   
 
#   'J': 0b0000000000011110,
'J': 0b0000000000110011,    
#           D L M N K J H G G F E D C B A   
 
#   'K': 0b0010010001110000,
'K': 0b0000100110000110,    
#           D L M N K J H G G F E D C B A   
 
#   'L': 0b0000000000111000,
'L': 0b0000000000000111,    
#           D L M N K J H G G F E D C B A    
  
#   'M': 0b0000010100110110,
'M': 0b0010100000110110,    
#           D L M N K J H G G F E D C B A    

#   'N': 0b0010000100110110,
'N': 0b0010000100110110,    
#           D L M N K J H G G F E D C B A   
  
#   'O': 0b0000000000111111,
'O': 0b0000000000111111,    
#           D L M N K J H G G F E D C B A   
  
#   'P': 0b0000000011110011,
'P': 0b0000000011011110,    
#           D L M N K J H G G F E D C B A  

#   'Q': 0b0010000000111111,
'Q': 0b0000010000111111,    
#           D L M N K J H G G F E D C B A  
   
#   'R': 0b0010000011110011,
'R': 0b0000000111011110,    
#           D L M N K J H G G F E D C B A   
  
#   'S': 0b0000000011101101,
'S': 0b0000000011101101,    
#           D L M N K J H G G F E D C B A   
  
#   'T': 0b0001001000000001,
'T': 0b0001001000001000,    
#           D L M N K J H G G F E D C B A    
  
#   'U': 0b0000000000111110,
'U': 0b0000000000110111,    
#           D L M N K J H G G F E D C B A   
   
#   'V': 0b0000110000110000,
'V': 0b0000110000000110,    
#           D L M N K J H G G F E D C B A    

#   'W': 0b0010100000110110,
'W': 0b0000010100110110,    
#           D L M N K J H G G F E D C B A 
   
#   'X': 0b0010110100000000,
'X': 0b0010110100000000,    
#           D L M N K J H G G F E D C B A   
  
#   'Y': 0b0001010100000000,
'Y': 0b0010101000000000,    
#           D L M N K J H G G F E D C B A   
  
#   'Z': 0b0000110000001001,
'Z': 0b0010010100001001
#           D L M N K J H G G F E D C B A       

}

One has to also now reverse the text, here is what i did,

           variable_temp_string = datetime.datetime.now().strftime('%H%M')
                
           # Show The Time     
           fourletterphat.clear()               
           fourletterphat.print_number_str(variable_temp_string) 
           fourletterphat.print_str(variable_temp_string[3] + variable_temp_string[2] + variable_temp_string[1] + variable_temp_string[0])                   
           fourletterphat.set_decimal(1, int(time.time() % 2))
           fourletterphat.show(



           object_file = open('scroll.action', 'rt')
           variable_temp_string = '    ' + object_file.read().upper()
           object_file.close()                          

           for x in range(3, len(variable_temp_string)):
                          fourletterphat.clear()
                          fourletterphat.print_str(variable_temp_string[x - 0] + variable_temp_string[x - 1] + variable_temp_string[x - 2] + variable_temp_string[x - 3])
                          fourletterphat.show()     

                          time.sleep(0.2)