def start(self): """ Initialize and start threads. """ # Sensors self.acc = MCP3008AnalogSensor([0, 1, 2], range=(100, 800)) self.pot = MCP3008AnalogSensor([3]) self.switch = MCP3008AnalogSensor([4]) self.ping = PingSensor(25, 24) # Actuators self.motor = PWMActuator(23) self.led = PWMActuator(18) self.servo = ServoActuator(0) self.actuators = { 'motor': self.motor, 'led': self.led, 'servo': self.servo, } self._server_thread = threading.Thread(target=self._server_worker) self._server_thread.start() self._sensor_thread = threading.Thread(target=self._read_worker) self._sensor_thread.start() self._link_thread = threading.Thread(target=self._link_worker) self._link_thread.start()
class MotorActuator(object): """ A Motor uses two PWM pins to drive a motor connected to an H-Bridge. Parameters ---------- pin1 : int The forward pin connected to the H-Bridge motor control chip. pin2 : int The backward pin connected to the H-Bridge motor control chip. """ def __init__(self, pin1, pin2): self.forward_pin = PWMActuator(pin1) self.backward_pin = PWMActuator(pin2) def drive_forward(self): self.forward_pin.set(1) self.backward_pin.set(0) def drive_back(self): self.forward_pin.set(0) self.backward_pin.set(1) def stop(self): self.forward_pin.set(0) self.backward_pin.set(0) def drive(self, speed=0.0): if speed == 0.0: self.stop() elif speed >= 0.0: self.forward_pin.set(speed) self.backward_pin.set(0) else: self.forward_pin.set(0) self.backward_pin.set(abs(speed)) def set_normalized(self, val): speed = val * 2 - 1 self.drive(speed=speed)
def __init__(self, pin1, pin2): self.forward_pin = PWMActuator(pin1) self.backward_pin = PWMActuator(pin2)