public static void Main() { Debug.WriteLine("devMobile.Longboard.PwmTest starting"); Debug.WriteLine(PwmController.GetDeviceSelector()); try { PwmController pwm = PwmController.FromId("TIM5"); AdcController adc = AdcController.GetDefault(); AdcChannel adcChannel = adc.OpenChannel(0); PwmPin pwmPin = pwm.OpenPin(PinNumber('A', 0)); pwmPin.Controller.SetDesiredFrequency(1000); pwmPin.Start(); while (true) { double value = adcChannel.ReadRatio(); Debug.WriteLine(value.ToString("F2")); pwmPin.SetActiveDutyCyclePercentage(value); Thread.Sleep(100); } } catch (Exception ex) { Debug.WriteLine(ex.Message); } }
public static async Task <PWMDevice> CreatePWMDeviceAsync(string deviceName, int pinNumber) { Log.WriteLine("finding device {0}", deviceName != null ? deviceName : "(default)"); Windows.Devices.Enumeration.DeviceInformation info = null; if (deviceName != null) { info = await FindAsync(PwmController.GetDeviceSelector(deviceName)); } else { info = await FindAsync(PwmController.GetDeviceSelector()); } Log.WriteLine("PWM device info {0} null", info == null ? "is" : "is not"); var d = new PWMDevice(); d.Device = await AsAsync(PwmController.FromIdAsync(info.Id)); if (d.Device != null) { Log.WriteLine("Pin Count {0}", d.Device.PinCount); } d.Pin = d.Device.OpenPin(pinNumber); return(d); }
public static void Main() { Debug.WriteLine("devMobile.Longboard starting"); Debug.WriteLine($"I2C:{I2cDevice.GetDeviceSelector()}"); Debug.WriteLine($"PWM:{PwmController.GetDeviceSelector()}"); try { Debug.WriteLine("LED Starting"); GpioPin led = GpioController.GetDefault().OpenPin(PinNumber('A', 10)); led.SetDriveMode(GpioPinDriveMode.Output); led.Write(GpioPinValue.Low); Debug.WriteLine("LED Starting"); WiiNunchuk nunchuk = new WiiNunchuk("I2C1"); Debug.WriteLine("ESC Starting"); PwmController pwm = PwmController.FromId("TIM5"); PwmPin pwmPin = pwm.OpenPin(PinNumber('A', 1)); pwmPin.Controller.SetDesiredFrequency(PulseFrequency); pwmPin.Start(); Debug.WriteLine("Thread.Sleep Starting"); Thread.Sleep(2000); Debug.WriteLine("Mainloop Starting"); while (true) { nunchuk.Read(); double duration = Map(nunchuk.AnalogStickY, WiiNunchukYMinimum, WiiNunchukYMaximum, PulseDurationMinimum, PulseDurationMaximum); Debug.WriteLine($"Value:{nunchuk.AnalogStickY} Duration:{duration:F3}"); pwmPin.SetActiveDutyCyclePercentage(duration); led.Toggle(); Thread.Sleep(ThrottleUpdatePeriod); } } catch (Exception ex) { Debug.WriteLine(ex.Message); } }
public static async Task ListPWMDevicesAsync() { var info = await FindAsync(PwmController.GetDeviceSelector()); }