-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcar_controller.py
94 lines (73 loc) · 2.37 KB
/
car_controller.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/usr/bin/env python3
import socket
import struct
import time
class CarController:
def __init__(self, hostname, port):
self.hostname = hostname
self.port = port
self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.max_voltage_motor = 300 # 1/100 V
self.headlight = 0
self.last_headlight = 0
self.brake = 0
self.last_brake = 0
self.blinker = 0
self.last_blinker = 0
def turn_on_hazard_lights(self):
self.last_blinker = self.blinker
self.blinker = 3
self.__send_light_message()
def turn_off_hazard_lights(self):
self.blinker = self.last_blinker
self.__send_light_message()
def turn_on_left_blinker(self):
self.blinker = 1
self.__send_light_message()
def turn_on_right_blinker(self):
self.blinker = 2
self.__send_light_message()
def turn_off_blinker(self):
self.blinker = 0
self.__send_light_message()
def turn_on_headlights(self):
self.headlight = 1
self.__send_light_message()
def turn_off_headlights(self):
self.headlight = 0
self.__send_light_message()
def turn_on_full_beam(self):
self.last_headlight = self.headlight
self.headlight = 2
self.__send_light_message()
def turn_off_full_beam(self):
self.headlight = self.last_headlight
self.__send_light_message()
def turn_on_rear_lights(self):
self.brake = 1
self.__send_light_message()
def turn_off_rear_lights(self):
self.brake = 0
self.__send_light_message()
def turn_on_brake_lights(self):
self.last_brake = self.brake
self.brake = 2
self.__send_light_message()
def turn_off_brake_lights(self):
self.brake = self.last_brake
self.__send_light_message()
"""
Voltage is in 1/100 V
"""
def change_motor_speed(self, voltage):
if voltage > self.max_voltage_motor:
voltage = self.max_voltage_motor
self.__send_motor_message(voltage)
## Private methods
# Example usage
if __name__ == "__main__":
car = CarController("example.com", 44556) # Replace with the actual hostname and port
car.change_motor_speed(100)
car.turn_on_headlights()
car.turn_on_rear_lights()
car.turn_on_hazard_lights()