static void PWMFanSimpleExample() { Console.WriteLine("Starting PWM Controller - Simple Demo"); using (var controller = new PwmController()) { double dutyCycle = 100; var chip = 0; var channel = 0; var hertz = 25; controller.OpenChannel(chip, channel); controller.StartWriting(chip, channel, hertz, dutyCycle); Console.WriteLine("Duty cycle " + dutyCycle); Task.Delay(new TimeSpan(0, 0, 10)).Wait(); //10 second wait to give fan time to power up ReadTachometer(); dutyCycle = 70; controller.ChangeDutyCycle(chip, channel, dutyCycle); Console.WriteLine("Duty cycle " + dutyCycle); Task.Delay(new TimeSpan(0, 0, 2)).Wait(); //2 second wait ReadTachometer(); dutyCycle = 30; controller.ChangeDutyCycle(chip, channel, dutyCycle); Console.WriteLine("Duty cycle " + dutyCycle); Task.Delay(new TimeSpan(0, 0, 2)).Wait(); //2 second wait ReadTachometer(); controller.ChangeDutyCycle(chip, channel, 0); // controller.StopWriting(chip, channel); controller.CloseChannel(chip, channel); Console.WriteLine("Finished - Simple Demo"); } }
/// <summary> /// Initialize a ServoMotor class /// </summary> /// <param name="pinNumber">The GPIO pin number in case of a software PWM. The chip in case of a hardware PWM</param> /// <param name="pwmChannel">The channel to use in case of a hardware PWM.</param> /// <param name="definition">The definition of a ServoMotor</param> /// <remarks>Use -1 for pwmChannel to force using software PWM</remarks> public ServoMotor(int pinNumber, int pwmChannel, ServoMotorDefinition definition) { this._definition = definition; _pulseFrequency = definition.PeriodMicroseconds / 1000.0; UpdateRange(); _servoPin = pinNumber; this._pwmChannel = pwmChannel; // try hardware PWM first try { _pwmController = new PwmController(); _pwmController.OpenChannel(pinNumber, pwmChannel); IsRunningHardwarePwm = true; } catch (Exception ex) when(ex is ArgumentException || ex is IOException) { _pwmController = new PwmController(new SoftPwm(true)); _pwmController.OpenChannel(pinNumber, pwmChannel); IsRunningHardwarePwm = false; } _pwmController.StartWriting(_servoPin, pwmChannel, 1000 / _pulseFrequency, (1 - (_pulseFrequency - _currentPulseWidth) / _pulseFrequency) * 100); }
public DCMotor3Pin( PwmController pwmController, double pwmFrequency, int pwmChip, int pwmChannel, int pin0, int pin1, GpioController controller) : base(controller) { if (pwmController == null) { throw new ArgumentNullException(nameof(pwmController)); } _pwm = pwmController; _chip = pwmChip; _channel = pwmChannel; _pin0 = pin0; _pin1 = pin1; _speed = 0; _pwm.OpenChannel(_chip, _channel); _pwm.StartWriting(_chip, _channel, pwmFrequency, 0); Controller.OpenPin(_pin0, PinMode.Output); Controller.Write(_pin0, PinValue.Low); Controller.OpenPin(_pin1, PinMode.Output); Controller.Write(_pin1, PinValue.Low); }
public DCMotor2PinNoEnable( PwmController pwmController, double pwmFrequency, int pwmChip, int pwmChannel, int?pin1, GpioController controller) : base(controller) { _pwm = pwmController; _chip = pwmChip; _channel = pwmChannel; _pin1 = pin1; _speed = 0; _pwm.OpenChannel(_chip, _channel); _pwm.StartWriting(_chip, _channel, pwmFrequency, 0); if (_pin1.HasValue) { Controller.OpenPin(_pin1.Value, PinMode.Output); Controller.Write(_pin1.Value, PinValue.Low); } }
static void Main(string[] args) { Console.WriteLine("Hello PWM!"); var PwmController = new PwmController(new SoftPwm()); PwmController.OpenChannel(17, 0); PwmController.StartWriting(17, 0, 200, 0); while (true) { for (int i = 0; i < 100; i++) { PwmController.ChangeDutyCycle(17, 0, i); Thread.Sleep(100); } } }
/// <summary> /// Set new or overwrite previously set frequency and start playing the sound. /// </summary> /// <param name="frequency">Tone frequency in Hertz.</param> public void SetFrequency(double frequency) { _pwmController.StartWriting(_buzzerPin, _pwmChannel, frequency, 0.5); }