diff --git a/clock_screensaver.py b/clock_screensaver.py new file mode 100644 index 0000000..d1ee849 --- /dev/null +++ b/clock_screensaver.py @@ -0,0 +1,105 @@ +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)['clock1'] +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['clock1'] + +# 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 +options.brightness = 100 +# Create the RGBMatrix object +matrix = RGBMatrix(options=options) + +# Create a canvas to draw on +canvas = matrix.CreateFrameCanvas() + +# Set the font and text color +font = graphics.Font() +font.LoadFont("fonts/6x12.bdf") # Change this to the path of your desired font file +font2 = graphics.Font() +font2.LoadFont("fonts/8x13B.bdf") +color = graphics.Color(255, 255, 255) # White color + +timezone = pytz.timezone(settings['timezone']) + +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: + # Clear the canvas + canvas.Clear() + + # Get the current time, weekday, and date + if settings['12hour']: + if settings['display_pm'] and settings['display_seconds']: + current_time = datetime.now(timezone).strftime("%I:%M:%S %p") + elif settings['display_pm'] and not settings['display_seconds']: + current_time = datetime.now(timezone).strftime("%I:%M %p") + elif not settings['display_pm'] and settings['display_seconds']: + current_time = datetime.now(timezone).strftime("%I:%M:%S") + else: + current_time = datetime.now(timezone).strftime("%I:%M") + else: + if settings['display_pm'] and settings['display_seconds']: + current_time = datetime.now(timezone).strftime("%H:%M:%S %p") + elif settings['display_pm'] and not settings['display_seconds']: + current_time = datetime.now(timezone).strftime("%H:%M %p") + elif not settings['display_pm'] and settings['display_seconds']: + current_time = datetime.now(timezone).strftime("%H:%M:%S") + else: + current_time = datetime.now(timezone).strftime("%H:%M") + + current_weekday = datetime.now(timezone).strftime("%A") + current_date = datetime.now(timezone).strftime("%d %b %Y") + + weekday_width = graphics.DrawText(canvas, font, 0, 0, color, current_weekday.upper()) + time_width = graphics.DrawText(canvas, font2, 0, 0, time_colors[settings['time_color']], current_time) + date_width = graphics.DrawText(canvas, font, 0, 0, time_colors[settings['date_color']], current_date.upper()) + + canvas.Clear() + + x_coordinate_weekday = int((options.cols - weekday_width) / 2) + x_coordinate_time = int((options.cols - time_width) / 2) + x_coordinate_date = int((options.cols - date_width) /2) + + # Draw the time, weekday, and date on the canvas + graphics.DrawText(canvas, font2, x_coordinate_time, 12, time_colors[settings['time_color']], current_time) + graphics.DrawText(canvas, font, x_coordinate_weekday, 22, time_colors[settings['weekday_color']], current_weekday.upper()) + graphics.DrawText(canvas, font, x_coordinate_date, 31, time_colors[settings['date_color']], current_date.upper()) + + # Swap the canvas onto the matrix + canvas = matrix.SwapOnVSync(canvas) + + # Wait for 1 second before updating the clock + time.sleep(1) + + + + diff --git a/world_clock2.py b/world_clock2.py index 5acd2a8..532f7f1 100644 --- a/world_clock2.py +++ b/world_clock2.py @@ -26,7 +26,23 @@ canvas = matrix.CreateFrameCanvas() font = graphics.Font() #font.LoadFont("fonts/clR6x12.bdf") #font.LoadFont("fonts/6x12.bdf") # Change this to the path of your desired font file -color = graphics.Color(255, 255, 255) # White color + +city_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) +} + +color = city_colors[settings['city_color']] line_c = graphics.Color(50,50,50) font.LoadFont("fonts/5x7.bdf") @@ -35,6 +51,7 @@ time_colors = { "night": graphics.Color(0, 71,171), # Dark blue / purple color } + # settings = {'display_seconds': True, 'display_pm': True, '12hour': False} def getTimes(timezone):