from gc import collect # All the arguments this method takes are there for one reason: reduce the amount of libraries loaded into the picos memory and thus improving performance # config: utils.Config object # btn_mapping: a dict containing the btn mapping for the menu operation (given to the lcdMenu object) # log: the utils.log function # lcdMenu: the lcdMenu class (not an object of that class!) def run(config, btn_mapping, log, lcdMenu): def lcd_driver_demo(): import demos.lcd_driver_demo as ldd ldd.run(config.LCD) del ldd collect() return True def lcd_big_hello(): import demos.lcd_big_hello as lbh lbh.run(config.LCD) del lbh collect() return True def input_tests(): import demos.input_tests as it it.run(serial_output=False) del it collect() return True demo_menu = lcdMenu(config.LCD, btn_mapping, scroll_direction=True, cycle=True, hide_menu_name=False, name="DEMOS") demo_programs = [("LCD Demo", lcd_driver_demo), ("Hello world", lcd_big_hello), ("Input tests", input_tests), ("Exit", demo_menu.stop)] demo_menu.setup(demo_programs) # give it the callback list demo_menu.run() return True if __name__ == "__main__": from utils import Config, log from lcdMenu import lcdMenu config = Config() btn_mapping = {"ok_btn": config.PIN_IN_BTN_1, "next_btn": config.PIN_IN_BTN_2} # the btn mapping for all lcdMenus run(Config(), btn_mapping, log, lcdMenu)