import gc import time from machine import reset import inky_helper as ih # Uncomment the line for your Inky Frame display size from picographics import PicoGraphics, DISPLAY_INKY_FRAME_4 as DISPLAY # 4.0" # from picographics import PicoGraphics, DISPLAY_INKY_FRAME as DISPLAY # 5.7" # Create a secrets.py with your Wifi details to be able to get the time # # secrets.py should contain: # WIFI_SSID = "Your WiFi SSID" # WIFI_PASSWORD = "Your WiFi password" # A short delay to give USB chance to initialise time.sleep(0.5) # Setup for the display. graphics = PicoGraphics(DISPLAY) WIDTH, HEIGHT = graphics.get_bounds() graphics.set_font("bitmap8") def launcher(): # Apply an offset for the Inky Frame 5.7". if HEIGHT == 448: y_offset = 20 else: y_offset = 0 # Draws the menu graphics.set_pen(1) graphics.clear() graphics.set_pen(0) graphics.set_pen(5) graphics.rectangle(0, 0, WIDTH, 50) graphics.set_pen(0) len = graphics.measure_text("Launcher", 4) // 2 graphics.text("Launcher", (WIDTH // 2 - len), 10, WIDTH, 4) graphics.set_pen(4) graphics.rectangle(30, HEIGHT - (340 + y_offset), WIDTH - 100, 50) graphics.set_pen(1) graphics.text("A. NASA Picture of the Day", 35, HEIGHT - (325 + y_offset), 600, 3) graphics.set_pen(6) graphics.rectangle(30, HEIGHT - (280 + y_offset), WIDTH - 150, 50) graphics.set_pen(1) graphics.text("B. Word Clock", 35, HEIGHT - (265 + y_offset), 600, 3) graphics.set_pen(2) graphics.rectangle(30, HEIGHT - (220 + y_offset), WIDTH - 200, 50) graphics.set_pen(1) graphics.text("C. Daily Activity", 35, HEIGHT - (205 + y_offset), 600, 3) graphics.set_pen(3) graphics.rectangle(30, HEIGHT - (160 + y_offset), WIDTH - 250, 50) graphics.set_pen(1) graphics.text("D. Headlines", 35, HEIGHT - (145 + y_offset), 600, 3) graphics.set_pen(0) graphics.rectangle(30, HEIGHT - (100 + y_offset), WIDTH - 300, 50) graphics.set_pen(1) graphics.text("E. Random Joke", 35, HEIGHT - (85 + y_offset), 600, 3) graphics.set_pen(7) graphics.rectangle(WIDTH - 100, HEIGHT - (340 + y_offset), 70, 50) graphics.rectangle(WIDTH - 150, HEIGHT - (280 + y_offset), 120, 50) graphics.rectangle(WIDTH - 200, HEIGHT - (220 + y_offset), 170, 50) graphics.rectangle(WIDTH - 250, HEIGHT - (160 + y_offset), 220, 50) graphics.rectangle(WIDTH - 300, HEIGHT - (100 + y_offset), 270, 50) graphics.set_pen(0) graphics.text("Hold A + E, then press Reset, to return to the Launcher", 65, HEIGHT - 30, 600, 2) ih.led_warn.on() graphics.update() ih.led_warn.off() # Now we've drawn the menu to the screen, we wait here for the user to select an app. # Then once an app is selected, we set that as the current app and reset the device and load into it. # You can replace any of the included examples with one of your own, # just replace the name of the app in the line "ih.update_last_app("nasa_apod")" while True: if ih.inky_frame.button_a.read(): ih.inky_frame.button_a.led_on() ih.update_state("nasa_apod") time.sleep(0.5) reset() if ih.inky_frame.button_b.read(): ih.inky_frame.button_b.led_on() ih.update_state("word_clock") time.sleep(0.5) reset() if ih.inky_frame.button_c.read(): ih.inky_frame.button_c.led_on() ih.update_state("daily_activity") time.sleep(0.5) reset() if ih.inky_frame.button_d.read(): ih.inky_frame.button_d.led_on() ih.update_state("news_headlines") time.sleep(0.5) reset() if ih.inky_frame.button_e.read(): ih.inky_frame.button_e.led_on() ih.update_state("random_joke") time.sleep(0.5) reset() # Turn any LEDs off that may still be on from last run. ih.clear_button_leds() ih.led_warn.off() if ih.inky_frame.button_a.read() and ih.inky_frame.button_e.read(): launcher() ih.clear_button_leds() if ih.file_exists("state.json"): # Loads the JSON and launches the app ih.load_state() ih.launch_app(ih.state['run']) # Passes the the graphics object from the launcher to the app ih.app.graphics = graphics ih.app.WIDTH = WIDTH ih.app.HEIGHT = HEIGHT else: launcher() try: from secrets import WIFI_SSID, WIFI_PASSWORD ih.network_connect(WIFI_SSID, WIFI_PASSWORD) except ImportError: print("Create secrets.py with your WiFi credentials") # Get some memory back, we really need it! gc.collect() # The main loop executes the update and draw function from the imported app, # and then goes to sleep ZzzzZZz file = ih.file_exists("state.json") print(file) while True: ih.app.update() ih.led_warn.on() ih.app.draw() ih.led_warn.off() ih.sleep(ih.app.UPDATE_INTERVAL)