public HBridgeMotor (IPwm pwm = null) { CalibrationInput = AddInput ("CalibrationInput", Units.Ratio, 1); SpeedInput = AddInput ("SpeedInput", Units.Ratio, 0); IsNeutralInput = AddInput ("IsNeutralInput", Units.Boolean, 0); A1Output = AddOutput ("A1Output", Units.Digital, 0); A2Output = AddOutput ("A2Output", Units.Digital, 0); PwmFrequencyOutput = AddOutput ("PwmFrequencyOutput", Units.Frequency, DefaultFrequency); PwmDutyCycleOutput = AddOutput ("PwmDutyCycleOutput", Units.Ratio, SpeedInput.Value); // This is a direct connection. SpeedInput.ValueChanged += (s, e) => Update (); IsNeutralInput.ValueChanged += (s, e) => Update (); if (pwm != null) { PwmFrequencyOutput.ConnectTo (pwm.FrequencyInput); PwmDutyCycleOutput.ConnectTo (pwm.DutyCycleInput); } }
public HBridgeMotor(IPwm pwm = null) { CalibrationInput = AddInput("CalibrationInput", Units.Ratio, 1); SpeedInput = AddInput("SpeedInput", Units.Ratio, 0); IsNeutralInput = AddInput("IsNeutralInput", Units.Boolean, 0); A1Output = AddOutput("A1Output", Units.Digital, 0); A2Output = AddOutput("A2Output", Units.Digital, 0); PwmFrequencyOutput = AddOutput("PwmFrequencyOutput", Units.Frequency, DefaultFrequency); PwmDutyCycleOutput = AddOutput("PwmDutyCycleOutput", Units.Ratio, SpeedInput.Value); // This is a direct connection. SpeedInput.ValueChanged += (s, e) => Update(); IsNeutralInput.ValueChanged += (s, e) => Update(); if (pwm != null) { PwmFrequencyOutput.ConnectTo(pwm.FrequencyInput); PwmDutyCycleOutput.ConnectTo(pwm.DutyCycleInput); } }