Skip to content
Snippets Groups Projects
Commit 18e2c15a authored by Václav Jelínek's avatar Václav Jelínek
Browse files

Add i2c master slave menu programs

parent 7b0d744c
No related branches found
No related tags found
1 merge request!12Major update of menu visuals and example programs
from machine import Pin, I2C, Timer
from time import sleep
from time import sleep, ticks_ms
from lib.cube import Buzzer, I2CGuard, SH1106_I2C, Esp
from lib import nxt, ev3, OC
......@@ -19,6 +19,7 @@ MOTOR_NUM = len(MOTOR_PORT_PINS)
# Object is initialized in the main program (main.py) after the startup of the cube and can be used in user programs
class Robot:
def __init__(self):
start_time = ticks_ms()
# Set pins 0, 1 to input to correctly initialize HW UART0
Pin(0, mode=Pin.IN)
Pin(1, mode=Pin.IN)
......
......@@ -45,7 +45,7 @@ def main():
menu_list_size = [0, Port.M_COUNT, menu_programs_functions_size, menu_cube_programs_functions_size, 1, 1, Port.S_COUNT]
SENSOR_TEST_MENU_PORT_IDX = 6
def log_error(e):
def log_error(robot, e, program_name):
# Write error to error log file
log_deleted = False
if "error_log.txt" in os.listdir(".") and os.stat("error_log.txt")[FILE_SIZE_IDX] > MAX_ERROR_LOG_SIZE:
......@@ -56,7 +56,7 @@ def main():
print("Previous log too long, file deleted")
f.write("Previous log too long, file deleted\n")
f.write("--------------------------------------------------\n")
f.write(f"ERROR program: {program_name}, time since reset: {utime.time()}\n")
f.write(f"ERROR program: {program_name}, time since reset: {int(utime.tick_diff(utime.ticks_ms(),robot.start_time)/1000)}\n")
sys.print_exception(e, f)
f.write("--------------------------------------------------\n")
......@@ -113,7 +113,7 @@ def main():
# Print exception for debugging and show error message on display
# if error occurs in user program
sys.print_exception(e)
log_error(e)
log_error(robot, e, program_name)
display_show_error(robot)
utime.sleep(1.0)
finally:
......@@ -241,12 +241,12 @@ def main():
if ok_pressed:
robot_state = 1
program_name = f"Motor M{chosen_motor_port+1}"
program_path = "./menu_programs/motor.py"
print("Running motor test: ", program_name)
try:
menu_programs.motor_run(robot, chosen_motor_port)
except Exception as e:
sys.print_exception(e)
log_error(e)
log_error(robot, e, program_name)
display_show_error(robot)
robot.deinit_all()
robot_state = 0
......@@ -262,11 +262,13 @@ def main():
if sensor_test_menu == Menu.SEN_TEST_PROGRAM:
if sensor_test_menu_stype == MENU_PROGRAM_NXT_UTZ_IDX:
robot_state = 1
program_name = menu_programs_functions[sensor_test_menu_stype][0]
print("Running sensor test: ", program_name)
try:
menu_programs_functions[sensor_test_menu_stype][1](robot)
except Exception as e:
sys.print_exception(e)
log_error(e)
log_error(robot, e, program_name)
display_show_error(robot)
robot.deinit_all()
robot_state = 0
......@@ -277,11 +279,13 @@ def main():
menu_debounce = 1
elif sensor_test_menu == Menu.SEN_TEST_PORT:
robot_state = 1
program_name = menu_programs_functions[sensor_test_menu_stype][0]
print("Running sensor test: ", program_name)
try:
menu_programs_functions[sensor_test_menu_stype][1](robot, sensor_test_menu_port)
except Exception as e:
sys.print_exception(e)
log_error(e)
log_error(robot, e, program_name)
display_show_error(robot)
robot.deinit_all()
sensor_test_menu == Menu.SEN_TEST_PROGRAM
......@@ -301,7 +305,7 @@ def main():
menu_cube_programs_functions[cube_test_menu_program][1](robot)
except Exception as e:
sys.print_exception(e)
log_error(e)
log_error(robot, e, cube_test_menu_name)
display_show_error(robot)
robot.deinit_all()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment