2024-11-16 15:38:09 +00:00
"""
uv - belichter - software - the DEMOS submenu
Copyright ( C ) 2024 Benjamin Burkhardt
This program is free software : you can redistribute it and / or modify it under the terms of the GNU General Public License as published by the Free Software Foundation , either version 3 of the License , or ( at your option ) any later version .
This program is distributed in the hope that it will be useful , but WITHOUT ANY WARRANTY ; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU General Public License for more details .
You should have received a copy of the GNU General Public License along with this program . If not , see < https : / / www . gnu . org / licenses / > .
"""
2024-11-16 15:31:33 +00:00
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 )