seven-segment-max7219/wired_wrong.py

118 lines
2.9 KiB
Python

#!/usr/bin/env python
"""
Message to inform the project manager this was done wrong.
"""
import time
from datetime import datetime
from luma.led_matrix.device import max7219
from luma.core.interface.serial import spi, noop
from luma.core.virtual import viewport, sevensegment
def date(seg):
"""
Display current date on device.
"""
now = datetime.now()
seg.text = now.strftime("%y-%m-%d")
def clock(seg, seconds):
"""
Display current time on device.
"""
interval = 0.5
for i in range(int(seconds / interval)):
now = datetime.now()
seg.text = now.strftime("%H-%M-%S")
# calculate blinking dot
if i % 2 == 0:
seg.text = now.strftime("%H-%M-%S")
else:
seg.text = now.strftime("%H %M %S")
time.sleep(interval)
def show_message_vp(device, msg, delay=0.1):
# Implemented with virtual viewport
width = device.width
padding = " " * width
msg = padding + msg + padding
n = len(msg)
virtual = viewport(device, width=n, height=8)
sevensegment(virtual).text = msg
for i in reversed(list(range(n - width))):
virtual.set_position((i, 0))
time.sleep(delay)
def show_message_alt(seg, msg, delay=0.1):
# Does same as above but does string slicing itself
width = seg.device.width
padding = " " * width
msg = padding + msg + padding
for i in range(len(msg)):
seg.text = msg[i:i + width]
time.sleep(delay)
def main():
# create seven segment device
serial = spi(port=0, device=0, gpio=noop())
device = max7219(serial, cascaded=1)
seg = sevensegment(device)
#print('Simple text...')
#for _ in range(8):
# seg.text = "HELLO"
# time.sleep(0.6)
# seg.text = " GOODBYE"
# time.sleep(0.6)
# Digit slicing
#print("Digit slicing")
#seg.text = "_" * seg.device.width
#time.sleep(1.0)
#for i, ch in enumerate([9, 8, 7, 6, 5, 4, 3, 2]):
# seg.text[i] = str(ch)
# time.sleep(0.6)
#for i in range(len(seg.text)):
# del seg.text[0]
# time.sleep(0.6)
# Scrolling Alphabet Text
#print('Scrolling alphabet text...')
#show_message_vp(device, "HELLO EVERYONE!")
#show_message_vp(device, "PI is 3.14159 ... ")
#show_message_vp(device, "IP is 127.0.0.1 ... ")
#show_message_alt(seg, "0123456789 abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ")
# Inform the manager that this was wired wrong.
while True:
show_message_vp(device, "YOU WIRED THIS WRONG")
time.sleep(1)
# Digit futzing
#date(seg)
#time.sleep(5)
#clock(seg, seconds=10)
# Brightness
#print('Brightness...')
#for x in range(5):
# for intensity in range(16):
# seg.device.contrast(intensity * 16)
# time.sleep(0.1)
#device.contrast(0x7F)
if __name__ == '__main__':
main()