diff --git a/clock_screensaver2.py b/clock_screensaver2.py new file mode 100644 index 0000000..c94780f --- /dev/null +++ b/clock_screensaver2.py @@ -0,0 +1,80 @@ +import time +from datetime import datetime +from rgbmatrix import RGBMatrix, RGBMatrixOptions, graphics +import json +import pytz + +try: + with open('clock_screensaver.json', 'r') as f: + settings = json.load(f)['clock2'] +except: + settings1 = {"clock1": {"time_color": "White", "weekday_color": "Cyan", "date_color": "Blue", "timezone": "Asia/Tokyo", "display_seconds": True, "display_pm": True, "12hour": True}, "clock2": {"time_color": "Orange", "date_color": "White", "timezone": "Asia/Tokyo", "display_seconds": True, "display_pm": True, "12hour": True}, "world_clock": {"city_color": "White", "display_seconds": True, "display_pm": True, "12hour": True}} + with open('clock_screensaver.json', 'w') as f: + json.dump(settings1, f) + settings = settings1['clock2'] + +# Configuration for the LED matrix +options = RGBMatrixOptions() +options.rows = 32 +options.cols = 128 +options.chain_length = 1 +options.parallel = 1 +options.hardware_mapping = 'adafruit-hat' # Change this if you have a different GPIO mapping +options.gpio_slowdown = 2 +# Create the RGBMatrix object +matrix = RGBMatrix(options=options) + +# Create a canvas to draw on +canvas = matrix.CreateFrameCanvas() +timezone = pytz.timezone(settings['timezone']) +# Set the font and text color +font = graphics.Font() +font.LoadFont("fonts/clR6x12.bdf") +#font.LoadFont("fonts/6x12.bdf") # Change this to the path of your desired font file +font2 = graphics.Font() +font2.LoadFont("fonts/texgyre-27.bdf") +time_colors = { + "White": graphics.Color(255,255,255), + "Red": graphics.Color(255, 0,0), + "Green": graphics.Color(0,255,0), + "Dark Green": graphics.Color(0, 100,0), + "Blue": graphics.Color(0,0,255), + "Purple": graphics.Color(145,0,255), + "Pink": graphics.Color(255,0,255), + "Yellow": graphics.Color(255,255,0), + "Orange": graphics.Color(255,130,0), + "Gold": graphics.Color(255,190,0), + "Gray": graphics.Color(100,100,100), + "Cyan": graphics.Color(0,255,255) +} + +while True: + canvas.Clear() + + if settings['12hour']: + if settings['display_pm']: + current_time = datetime.now(timezone).strftime("%I:%M %p") + else: + current_time = datetime.now(timezone).strftime("%I:%M") + else: + if settings['display_pm']: + current_time = datetime.now(timezone).strftime("%H:%M %p") + else: + current_time = datetime.now(timezone).strftime("%H:%M") + current_date = datetime.now(timezone).strftime("%a %d %b %Y") + + date_width = graphics.DrawText(canvas, font, 0, 0, time_colors[settings['date_color']], current_date.upper()) + time_width = graphics.DrawText(canvas, font2, 0, 0, time_colors[settings['time_color']], current_time) + + canvas.Clear() + + x_coordinate_time = int((options.cols - time_width) / 2) + x_coordinate_date = int((options.cols - date_width) /2) + + graphics.DrawText(canvas, font2, x_coordinate_time, 21, time_colors[settings['time_color']], current_time) + graphics.DrawText(canvas, font, x_coordinate_date, 31, time_colors[settings['date_color']], current_date.upper()) + + canvas = matrix.SwapOnVSync(canvas) + + time.sleep(1) +