diff --git a/config.json b/config.json index 7d07440..eec8912 100755 --- a/config.json +++ b/config.json @@ -2,10 +2,12 @@ "status_led_pin": 22, "battery_coeff": 2.25, "sumo_id": "xxxxxxxx", - "firmware_version": 0.3, + "firmware_version": "0.3.1", "left_servo_tuning": 33, "right_servo_tuning": 33, "ultrasonic_distance": 40, + "left_line_value": 1000, + "right_line_value": 1000, "left_line_threshold": 1000, "right_line_threshold": 1000, "sumo_server": "165.227.140.64:80", diff --git a/hal.py b/hal.py index 5b3ed3c..6210bb6 100755 --- a/hal.py +++ b/hal.py @@ -143,10 +143,20 @@ class Sumorobot(object): return opponent # Function to update line calibration and write it to the config file - def calibrate_line(self): + def calibrate_line_value(self): # Read the line sensor values - self.config["left_line_threshold"] = self.adc_line_left.read() - self.config["right_line_threshold"] = self.adc_line_right.read() + 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") + + # Function to update line threshold calibration and write it to the config file + def calibrate_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)) @@ -169,12 +179,12 @@ class Sumorobot(object): # Return the given line sensor value if dir == LEFT: - line = abs(self.get_line(LEFT) - self.config["left_line_threshold"]) > 1000 + line = abs(self.get_line(LEFT) - self.config["left_line_value"]) > self.config["left_line_threshold"] self.set_led(LEFT_LINE, line) last_line = LEFT return line elif dir == RIGHT: - line = abs(self.get_line(RIGHT) - self.config["right_line_threshold"]) > 1000 + line = abs(self.get_line(RIGHT) - self.config["right_line_value"]) > self.config["right_line_threshold"] self.set_led(RIGHT_LINE, line) last_line = RIGHT return line diff --git a/main.py b/main.py index af07566..fa4440f 100755 --- a/main.py +++ b/main.py @@ -88,9 +88,13 @@ def ws_handler(): sumorobot.move(STOP) # for terminating delays in code sumorobot.terminate = True - elif b'calibrate_line' in data: - sumorobot.calibrate_line() - #print('main.py: calibrate_line') + elif b'calibrate_line_value' in data: + sumorobot.calibrate_line_value() + #print('main.py: calibrate_line_value') + elif b'calibrate_line_threshold' in data: + data = ujson.loads(data) + sumorobot.calibrate_line_threshold(int(data['val'])) + #print('main.py: calibrate_line_threshold') elif b'Gone' in data: print("main.py: server said 410 Gone, attempting to reconnect...") #conn = uwebsockets.connect(url)