import struct import board import displayio import terminalio import wifi import socketpool import time import rtc from adafruit_bitmap_font import bitmap_font from adafruit_display_text import label # Get wifi details and more from a secrets.py file try: from secrets import secrets except ImportError: print("WiFi secrets are kept in secrets.py, please add them there!") raise print("My MAC addr:", [hex(i) for i in wifi.radio.mac_address]) print("Connecting to %s"%secrets["ssid"]) wifi.radio.connect(secrets["ssid"], secrets["password"]) print("Connected to %s!"%secrets["ssid"]) print("My IP address is", wifi.radio.ipv4_address) # NTP Code from https://gist.github.com/netroy/d1bff654fa58b884d63894ca2c890fc6 TZ_OFFSET = 3600 NTP_SERVER = "pool.ntp.org" NTP_PORT = 123 def get_ntp_time(pool): packet = bytearray(48) packet[0] = 0b00100011 for i in range(1, len(packet)): packet[i] = 0 with pool.socket(pool.AF_INET, pool.SOCK_DGRAM) as sock: sock.sendto(packet, (NTP_SERVER, NTP_PORT)) sock.recvfrom_into(packet) destination = time.monotonic_ns() seconds = struct.unpack_from("!I", packet, offset=len(packet) - 8)[0] monotonic_start = seconds - 2_208_988_800 - (destination // 1_000_000_000) return time.localtime(time.monotonic_ns() // 1_000_000_000 + monotonic_start + TZ_OFFSET) pool = socketpool.SocketPool(wifi.radio) now = get_ntp_time(pool) rtc.RTC().datetime = now print("Synced with NTP") display=board.DISPLAY text="__:__:__" font=bitmap_font.load_font("/font/Helvetica-Bold-36.bdf") color=0xFF00FF text_area=label.Label(font,text=text,color=color) text_area.x=20 text_area.y=20 display.show(text_area) last_time=time.localtime() def update_time(text_label): global last_time now = time.localtime() if now.tm_sec>last_time.tm_sec or now.tm_sec==0: text_label.text = "%02d:%02d:%02d" % (now.tm_hour, now.tm_min, now.tm_sec) last_time=now while True: update_time(text_area) time.sleep(0.1)