diff --git a/config.json b/config.json index f7cd62b..cab2367 100755 --- a/config.json +++ b/config.json @@ -2,11 +2,11 @@ "status_led_pin": 5, "battery_coeff": 2.25, "sumo_id": "xxxxxxxx", - "firmware_timestamp": "2019.05.26 14:17:00", - "firmware_version": "0.5.1", + "firmware_timestamp": "2019.05.30 00:42:00", + "firmware_version": "0.6.0", "left_servo_tuning": 33, "right_servo_tuning": 33, - "ultrasonic_distance": 40, + "ultrasonic_threshold": 40, "boot_code": "code.py", "left_line_value": 1000, "right_line_value": 1000, diff --git a/hal.py b/hal.py index 7e82eb5..74b6a5c 100755 --- a/hal.py +++ b/hal.py @@ -136,7 +136,7 @@ class Sumorobot(object): # Get the opponent distance self.opponent_distance = self.get_opponent_distance() # When the opponent is close and the ping actually returned - if self.opponent_distance < self.config["ultrasonic_distance"] and self.opponent_distance > 0: + if self.opponent_distance < self.config["ultrasonic_threshold"] and self.opponent_distance > 0: # When not maximum score if self.opponent_score < 5: # Increase the opponent score @@ -156,25 +156,35 @@ class Sumorobot(object): return opponent + # Function to update the config file + def update_config_file(self): + # Update the config file + with open("config.part", "w") as config_file: + config_file.write(ujson.dumps(self.config)) + os.rename("config.part", "config.json") + # Function to update line calibration and write it to the config file def calibrate_line_value(self): # Read the line sensor values self.config["left_line_value"] = self.adc_line_left.read() self.config["right_line_value"] = self.adc_line_right.read() # Update the config file - with open("config.part", "w") as config_file: - config_file.write(ujson.dumps(self.config)) - os.rename("config.part", "config.json") + self.update_config_file() - # Function to update line threshold calibration and write it to the config file + # Function to update line threshold and write it to the config file def set_line_threshold(self, value): # Read the line sensor values self.config["left_line_threshold"] = value self.config["right_line_threshold"] = value # Update the config file - with open("config.part", "w") as config_file: - config_file.write(ujson.dumps(self.config)) - os.rename("config.part", "config.json") + self.update_config_file() + + # Function to update ultrasonic sensor threshold and write it to the config file + def set_ultrasonic_threshold(self, value): + # Read the line sensor values + self.config["ultrasonic_threshold"] = value + # Update the config file + self.update_config_file() # Function to get light inensity from the phototransistors def get_line(self, dir): @@ -299,18 +309,25 @@ class Sumorobot(object): val = self.blockly_code ) + def get_firmware_version(self): + return dict( + type = "firmware_version", + val = self.config["firmware_version"] + ) + def get_sensor_scope(self): temp = self.sensor_scope temp['type'] = "sensor_scope" return temp - def get_line_scope(self): + def get_threshold_scope(self): return dict( - type = "line_scope", + type = "threshold_scope", left_line_value = self.config["left_line_value"], right_line_value = self.config["right_line_value"], left_line_threshold = self.config["left_line_threshold"], - right_line_threshold = self.config["right_line_threshold"] + right_line_threshold = self.config["right_line_threshold"], + ultrasonic_threshold = self.config["ultrasonic_threshold"] ) def sleep(self, delay): diff --git a/main.py b/main.py index 8a8720d..91f7741 100755 --- a/main.py +++ b/main.py @@ -82,8 +82,8 @@ def ws_handler(): sumorobot.move(STOP) # for terminating delays in code sumorobot.terminate = True - elif b'get_line_scope' in data: - conn.send(ujson.dumps(sumorobot.get_line_scope())) + elif b'get_threshold_scope' in data: + conn.send(ujson.dumps(sumorobot.get_threshold_scope())) elif b'get_sensor_scope' in data: conn.send(ujson.dumps(sumorobot.get_sensor_scope())) elif b'get_python_code' in data: @@ -92,6 +92,9 @@ def ws_handler(): elif b'get_blockly_code' in data: #print("main.py sending blockly code=", sumorobot.get_blockly_code()) conn.send(ujson.dumps(sumorobot.get_blockly_code())) + elif b'get_firmware_version' in data: + #print("main.py get_firmware_version") + conn.send(ujson.dumps(sumorobot.get_firmware_version())) elif b'toggle_sensor_feedback' in data: data = ujson.loads(data) sumorobot.sensor_feedback = not sumorobot.sensor_feedback @@ -107,11 +110,15 @@ def ws_handler(): sumorobot.compiled_python_code = compile(data['val'], "snippet", "exec") elif b'calibrate_line_value' in data: sumorobot.calibrate_line_value() - #print('main.py: calibrate_line_value') + #print("main.py: calibrate_line_value") elif b'set_line_threshold' in data: data = ujson.loads(data) sumorobot.set_line_threshold(int(data['val'])) - #print('main.py: set_line_threshold') + #print("main.py: set_line_threshold") + elif b'set_ultrasonic_threshold' in data: + data = ujson.loads(data) + sumorobot.set_ultrasonic_threshold(int(data['val'])) + #print("main.py: set_ultrasonic_threshold") elif b'Gone' in data: print("main.py: server said 410 Gone, attempting to reconnect...") #conn = uwebsockets.connect(url)