public void WriteMotorFromSocket(string data) { MotorInformation mjr = JsonUtility.FromJson <MotorInformation>(data); if (mjr.side == "front") { motor0.WriteMotor(mjr.thrust); motor3.WriteMotor(mjr.thrust); } else if (mjr.side == "back") { motor1.WriteMotor(mjr.thrust); motor2.WriteMotor(mjr.thrust); } else if (mjr.side == "left") { motor0.WriteMotor(mjr.thrust); motor1.WriteMotor(mjr.thrust); } else if (mjr.side == "right") { motor2.WriteMotor(mjr.thrust); motor3.WriteMotor(mjr.thrust); } else { throw new System.NotSupportedException(); } }
public static MockMotor Create() { var motor = new MockMotor(); var info = new MotorInformation(Axis.X, motor); motor.Information = info; return(motor); }
public static async Task <GameManager> CreateAsync() { var commandInterpreterConstructor = CommandInterpreter.CreateAsync(); ChessLogic logic = new ChessLogic(); var stepCountPinX = new GpioPinWrapper(5, Windows.Devices.Gpio.GpioPinDriveMode.InputPullUp); var stepClearPinX = new GpioPinWrapper(13, Windows.Devices.Gpio.GpioPinDriveMode.Output, Windows.Devices.Gpio.GpioPinValue.Low); var motorInformationX = new MotorInformation(Axis.X, stepCountPinX); var motorDriverX = new MotorDrv(20, 21, motorInformationX); var motorLocatorX = new MotorLocator(stepClearPinX, motorDriverX.Information); var positionSignalerX = new PositionSignaler(motorLocatorX); var motorMoverX = new MotorMover(50, positionSignalerX, motorLocatorX, motorDriverX); var stepCountPinY = new GpioPinWrapper(6, Windows.Devices.Gpio.GpioPinDriveMode.InputPullUp); var stepClearPinY = new GpioPinWrapper(19, Windows.Devices.Gpio.GpioPinDriveMode.Output, Windows.Devices.Gpio.GpioPinValue.Low); var motorInformationY = new MotorInformation(Axis.Y, stepCountPinY); var motorDriverY = new MotorDrv(24, 23, motorInformationY); var motorLocatorY = new MotorLocator(stepClearPinY, motorDriverY.Information); var positionSignalerY = new PositionSignaler(motorLocatorY); var motorMoverY = new MotorMover(50, positionSignalerY, motorLocatorY, motorDriverY); var topInterrupterX = new PhotoInterrupter(17, 1, 150); var bottomInterrupterX = new PhotoInterrupter(27, -1, -150); var motorCalibratorX = new MotorCalibrator(-23, 23, motorMoverX, motorInformationX, topInterrupterX, bottomInterrupterX); var topInterrupterY = new PhotoInterrupter(25, 1, 150); var bottomInterrupterY = new PhotoInterrupter(22, -1, -150); var motorCalibratorY = new MotorCalibrator(-17, 17, motorMoverY, motorInformationY, topInterrupterY, bottomInterrupterY); var preciseMoverX = new PreciseMotorMover(motorMoverX); var gridMoverX = new GridMotorMover(preciseMoverX, motorCalibratorX); var preciseMoverY = new PreciseMotorMover(motorMoverY); var gridMoverY = new GridMotorMover(preciseMoverY, motorCalibratorY); var magnetDriver = new MagnetDrv(26); var movePerformer = new MovePerformer(gridMoverX, gridMoverY, magnetDriver); var motorCalibrationTask = movePerformer.CalibrateAsync(); var movePlanner = new MovePlanner(logic.Board); var moveManager = new MoveManager(movePlanner, movePerformer); GameManager manager = new GameManager(await commandInterpreterConstructor, logic, moveManager); await motorCalibrationTask; #if DEBUG manager.DebugMovePerformer = movePerformer; #endif return(manager); }
public static MotorInformation GetMotorInformation(Dictionary <AxisTypes, MotorParameter> motorParaMap, MotorInfoMap <MotorInfoUnit> motorInfoMap) { var res = new MotorInformation(); foreach (var m in motorParaMap.Keys) { res.PosInfo[m] = ConvertBackDistance(motorParaMap[m], motorInfoMap[m].Counter); res.EncoderInfo[m] = ConvertBackDistance(motorParaMap[m], motorInfoMap[m].Encoder); res.SpeedInfo[m] = ConvertBackSpeed(motorParaMap[m], motorInfoMap[m].Speed); res.StatusInfo[m] = MotorStatus.FromRegContent((uint)motorInfoMap[m].Status); } return(res); }