internal LeftRightMotors(L298nMotorDriver motorDriver) : base(motorDriver.Motor1, motorDriver.Motor2) { }
public MainPage() { this.InitializeComponent(); Unloaded += MainPage_Unloaded; movements = new Dictionary <RoverMovementType, Action> { [RoverMovementType.Forward] = () => motors.MoveForward(), [RoverMovementType.ForwardLeft] = () => motors.MoveForwardLeft(), [RoverMovementType.ForwardRight] = () => motors.MoveForwardRight(), [RoverMovementType.Backward] = () => motors.MoveBackward(), [RoverMovementType.BackwardLeft] = () => motors.MoveBackwardLeft(), [RoverMovementType.BackwardRight] = () => motors.MoveBackwardRight(), [RoverMovementType.RotateLeft] = () => motors.RotateLeft(), [RoverMovementType.RotateRight] = () => motors.RotateRight(), [RoverMovementType.Stop] = () => motors.Stop(), }; streamingService = new StreamingService(); httpCameraServer = new HttpCameraServer(); httpCameraServer.OnRequestDataAsync(RequestDataAsync); connection = new RemoteConnection(); connection.OnRoverMovementEvent(RoverMovementEvent); socket = new LocalConnection(); socket.OnRoverMovementEvent(RoverMovementEvent); int motor1Pin1Number, motor1Pin2Number, motor2Pin1Number, motor2Pin2Number; int redPinNumber, greenPinNumber, bluePinNumber; int triggerPinNumber, echoPinNumber; switch (DeviceInformation.Type) { case DeviceType.MinnowBoardMax: motor1Pin1Number = 0; motor1Pin2Number = 1; motor2Pin1Number = 2; motor2Pin2Number = 3; redPinNumber = 4; greenPinNumber = 5; bluePinNumber = 6; triggerPinNumber = 7; echoPinNumber = 8; break; case DeviceType.Colibri: motor1Pin1Number = 98; motor1Pin2Number = 103; motor2Pin1Number = 97; motor2Pin2Number = 79; // On Colibri there's not enough Pin on to be used only via GPIO: don't use Multicolor LED. redPinNumber = greenPinNumber = bluePinNumber = -1; triggerPinNumber = 133; echoPinNumber = 101; break; case DeviceType.RaspberryPi2: case DeviceType.RaspberryPi3: default: motor1Pin1Number = 27; motor1Pin2Number = 22; motor2Pin1Number = 5; motor2Pin2Number = 6; redPinNumber = 18; greenPinNumber = 23; bluePinNumber = 24; triggerPinNumber = 12; echoPinNumber = 16; break; } var motorDriver = new L298nMotorDriver(motor1Pin1Number, motor1Pin2Number, motor2Pin1Number, motor2Pin2Number); motors = motorDriver.AsLeftRightMotors(); distanceSensor = new Sr04UltrasonicDistanceSensor(triggerPinNumber, echoPinNumber, mode: ReadingMode.Continuous); // Checks whether the Pin number for Multicolor LED has been specified. if (redPinNumber > 0) { led = new MulticolorLed(redPinNumber, greenPinNumber, bluePinNumber); } random = new Random(unchecked ((int)(DateTime.Now.Ticks))); }
public static LeftRightMotors AsLeftRightMotors(this L298nMotorDriver motorDriver) => new LeftRightMotors(motorDriver);