def __init__(self, bus): m1 = MotorDriver(Motors.MOTOR1, bus, 0.1) m11 = MotorDriver(Motors.MOTOR2, bus, 0.1) m2 = MotorDriver(Motors.MOTOR3, bus, 0.1) m22 = MotorDriver(Motors.MOTOR4, bus, 0.1) self.left = m1, m11 self.right = m2, m22
def test_brake_state_property(self): bus = Mock() drv = MotorDriver(0, bus, 0) self.assertFalse(drv.brake_state) drv.set(0.5) self.assertFalse(drv.brake_state) drv.brake() self.assertTrue(drv.brake_state) drv.set(0) self.assertFalse(drv.brake_state)
def min_speed(self): bus = Mock() drv = MotorDriver(0, bus, 0.5) drv.set(0.3) self.assertEqual(drv.speed, 0.5) drv.set(-0.3) self.assertEqual(drv.speed, 0.5)
def test_voltage_property(self): bus = Mock() drv = MotorDriver(0, bus, 0) drv.set(0.5) self.assertAlmostEqual(drv.voltage, 2.73, places=2) drv.set(1) self.assertAlmostEqual(drv.voltage, 5.06, places=2)
def test_set_backward(self): bus = Mock() drv = MotorDriver(0, bus, 0) drv.set(-1) bus.write_byte_data.assert_called_with(0, 0, 0b11111110) drv.set(-0.5) bus.write_byte_data.assert_called_with(0, 0, 0b10001010)
def test_direction_property(self): bus = Mock() drv = MotorDriver(0, bus, 0) self.assertEqual(drv.direction, 0) drv.set(-0.5) self.assertEqual(drv.direction, -1) drv.set(0.5) self.assertEqual(drv.direction, 1)
def test_speed_property(self): bus = Mock() drv = MotorDriver(0, bus, 0) self.assertEqual(drv.speed, 0) drv.set(0.5) self.assertEqual(drv.speed, 0.5) drv.set(-0.5) self.assertEqual(drv.speed, 0.5)
def test_creation(self): MotorDriver(0, Mock(), 0)
def test_brake(self): bus = Mock() drv = MotorDriver(0, bus, 0) drv.brake() bus.write_byte_data.assert_called_with(0, 0, 0b00000011)
def test_set_zero(self): bus = Mock() drv = MotorDriver(0, bus, 0) drv.set(0) bus.write_byte_data.assert_called_with(0, 0, 0b00011000)
import time from smbus2 import SMBus from pi_wars import drive_from_vector from yrk_oo.motors import Motors, MotorDriver if __name__ == "__main__": with SMBus(13) as bus: m1 = MotorDriver(Motors.MOTOR1, bus, 0.1) m2 = MotorDriver(Motors.MOTOR4, bus, 0.1) m11 = MotorDriver(Motors.MOTOR2, bus, 0.1) m22 = MotorDriver(Motors.MOTOR3, bus, 0.1) print("Drive forward") m1_v, m2_v = drive_from_vector(0, 1) m1.set(m1_v) m11.set(m1_v) m22.set(m2_v) m2.set(m2_v) time.sleep(3) print("Turn") m1_v, m2_v = drive_from_vector(1, 0) m1.set(m1_v) m11.set(m1_v) m22.set(m2_v) m2.set(m2_v) time.sleep(1) print("Drive backward") m1_v, m2_v = drive_from_vector(0, -1)