From c1f700b44d3c70151e4dacfe27310ffa17babafb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicholas=20St=C4=83nescu?= Date: Wed, 26 Nov 2025 14:09:58 +0100 Subject: [PATCH] Created KITT class --- .gitignore | 2 ++ student_code/control.py | 60 +++++++++++++++++++++++++++++++++++++---- 2 files changed, 57 insertions(+), 5 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7f6ed25 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea/ +Manual/KITT_Simulator/__pycache__/ \ No newline at end of file diff --git a/student_code/control.py b/student_code/control.py index 76ce17b..d68169b 100644 --- a/student_code/control.py +++ b/student_code/control.py @@ -1,19 +1,69 @@ +from serial import Serial + + class KITT: def __init__(self, port, baudrate=115200): - self.serial = Serial(port, baudrate, rtscts=True) + # Initialize the serial connection + # self.serial = Serial(port, baudrate, rtscts=True) + self.serial = Serial(port, baudrate,rtscts=True) + # Initialize beacon parameters here using send_command + # Set carrier frequency, bit frequency, repetition count, and code pattern + carrier_frequency_value = 10000 + carrier_frequency = carrier_frequency_value.to_bytes(2, byteorder='big') + self.send_command(b"F"+carrier_frequency+b"\n") + + + bit_frequency_value = 5000 + bit_frequency = bit_frequency_value.to_bytes(2, byteorder='big') + self.send_command(b"B"+bit_frequency+b"\n") + + + desired_repetition_frequency = 2 # Replace with your value + repetition_count_value = bit_frequency_value // desired_repetition_frequency + repetition_count = repetition_count_value.to_bytes(2, byteorder='big') + # Ensure repetition_count_value is at least 32 + repetition_count_value = max(repetition_count_value, 32) + repetition_count = repetition_count_value.to_bytes(2, byteorder='big') + self.send_command(b"R"+repetition_count+b"\n") + + code_value = 0x67676767 # Replace with your code + code = code_value.to_bytes(4, byteorder='big') + self.send_command(b"C"+code+b"\n") def send_command(self, command): - self.serial.write(command.encode()) + # Send the command string over the serial connection + self.serial.write(command) + print(command) def set_speed(self, speed): - self.send_command(f'M{speed}\n') + # Send the motor speed command using send_command + # Use the format 'M\n' + self.send_command(f"M{speed}\n".encode()) + def set_angle(self, angle): - self.send_command(f'D{angle}\n') + # Send the steering angle command using send_command + # Use the format 'D\n' + self.send_command(f"D{angle}\n".encode()) + def stop(self): + # Stop the car by setting speed and angle to neutral (150) + # Call set_speed and set_angle with 150 self.set_speed(150) self.set_angle(150) - def __del__(self): + def start_beacon(self): + # Send commands to start the beacon + # Use the command 'A1\n' + self.send_command(b"A1\n") + + def stop_beacon(self): + # Send commands to stop the beacon + # Use the command 'A0\n' + self.send_command(b"A0\n") + + def close(self): + # Close the serial connection + # self.serial.close() self.serial.close()