Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
 public static async Task ListPWMDevicesAsync()
 {
     var info = await FindAsync(PwmController.GetDeviceSelector());
 }