class DepthSensor: def __init__(self): self.sensor = ms5837.MS5837_30BA( ) # Default I2C bus is 1 (Raspberry Pi 3) self.client = Client(ports.DEPTH_DRIVER_PORT) self.logger = Logger(filename='depth') def run(self): # We must initialize the sensor before reading it if not self.sensor.init(): print("Sensor could not be initialized") exit(1) # We have to read values from sensor to update pressure and temperature if not self.sensor.read(): print("Sensor read failed!") exit(1) loop_condition = True while loop_condition: if self.sensor.read(): self.client.send_data(self.sensor.pressure() * SCALETOCM) #print(self.sensor.pressure()) msg = str(self.sensor.depth()) self.logger.log(msg) else: loop_condition = False def __del__(self): pass
class Torpedoes: is_ready = True def __init__(self): self.client_fire = Client(TORPEDO_FIRE_DRIVER_PORT) self.client_ready = Client(TORPEDO_READY_CLIENT_PORT) self.torpedo_handling = TorpedoHandling() def fire(self): command = self.client_fire.get_data() #print(command) if command == "FIRE" and self.is_ready: self.torpedo_handling.sequence() self.client_ready.send_data('WAIT') self.is_ready = False self.reload_torpedo() def reload_torpedo(self): reload_time = 2 # czas przeładowywania, do ustawienia """ TUTAJ PRZEŁADOWANIE """ time.sleep( reload_time) # jak umiecie jakieś lepsze czekanie, to zmieńcie self.client_ready.send_data('READY') self.is_ready = True
class DepthSensor: def __init__(self): self.sensor = ms5837.MS5837_02BA( ) # Default I2C bus is 1 (Raspberry Pi 3) self.client = Client(DEPTH_DRIVER_PORT) self.logger = DEFLOG.DEPTH_LOCAL_LOG if self.logger: self.logger = Logger(filename='depth_sensor', directory=DEFLOG.LOG_DIRECTORY) def run(self): # We must initialize the sensor before reading it if not self.sensor.init(): error = "Sensor could not be initialized" self.log(error, 'error') print(error) exit(1) # We have to read values from sensor to update pressure and temperature if not self.sensor.read(): error = "Sensor read failed!" self.log(error, 'error') print(error) exit(1) loop_condition = True while loop_condition: if self.sensor.read(): self.client.send_data(self.sensor.depth()) msg = str(self.sensor.depth()) if self.logger: self.logger.log(msg) else: loop_condition = False def __del__(self): self.logger.exit() def log(self, msg, logtype='info'): if self.logger: self.logger.log(msg, logtype=logtype)
class Sonar: def __init__(self, USB_device_adress=USB.SONAR): self.logger = DEFLOG.DISTANCE_LOCAL_LOG if DEFLOG.DISTANCE_LOCAL_LOG: self.logger = Logger(filename='front_distance', directory=DEFLOG.LOG_DIRECTORY) self.sensor = Ping1D(USB_device_adress, 115200) self.log("connected to the device") self.client = Client(DISTANCE_DRIVER_PORT) self.log("connected to the server") def run(self): # We must initialize the sensor before reading it if not self.sensor.initialize(): error = "Sensor could not be initialized" print(error) self.log(error, 'error') exit(1) loop_condition = True while loop_condition: data = self.sensor.get_distance() if data: self.client.send_data(data["distance"] / 10) msg = str(data["distance"]) self.log(msg) else: loop_condition = False time.sleep(0.035) def log(self, msg, logtype='info'): if self.logger: self.logger.log(msg, logtype=logtype) def __del__(self): pass if self.logger: self.logger.exit()