Windows 10 IoT Core用PWM控制器控制树莓派LED灯亮度

Posted ssvip

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows 10 IoT Core用PWM控制器控制树莓派LED灯亮度相关的知识,希望对你有一定的参考价值。

我接到一个需求,需要调节LED灯的亮度,且是从上位机进行控制,我了解到树莓派也有PWM,就准备通过PWM来控制灯的亮度。

PWM又叫脉宽调制,是用微处理器的数字输出来对模拟电路进行控制,对模拟信号电平进行数字编码。

微软也提供了PWM的类库

https://docs.microsoft.com/en-us/uwp/api/windows.devices.pwm?view=winrt-19041

于是我根据msdn写了一段实现PWM控制的代码

private async void InitPWM()
        {
            try
            {
                _pwmController = await PwmController.GetDefaultAsync();//获取系统上的默认PWM控制器.
                _pwmController.SetDesiredFrequency(40);//设置PWM频率

                _redLed = controller.OpenPin(__redLed);//打开22引脚
                _redLed.SetActiveDutyCyclePercentage(20);//设置占空比
                _redLed.Start();
            }
            catch(Exception ex)
            {               
            }
            
        }

  定义:

        private int __redLed = 22;
        private PwmPin _redLed;
        private PwmController _pwmController;

  但控制失败了。我查了一下,树莓派是通过GPIO编程来实现PWM,于是改成了下面这样

private async void SetupGPIO()
        {
            try
            {
                var gpioController = GpioController.GetDefault();
                var pwmManager = new PwmProviderManager();
                pwmManager.Providers.Add(new SoftPwm());
                var pwmControllers = await pwmManager.GetControllersAsync();
                _pwmController = pwmControllers[0];
                _pwmController.SetDesiredFrequency(1000);//频率只支持40-1000赫兹

                _redLed = _pwmController.OpenPin(__redLed);
                _redLed.Start();
            }
            catch (Exception ex)
            {
            }
            
        }

  就可以通过改变引脚的占空比来改变灯的亮度了

_redLed.SetActiveDutyCyclePercentage(0.5);//设置引脚的占空比百分比

  需要注意的是,这个PWM控制器只支持40-1000赫兹的频率,超过或低于这个区间都会出错。

 

以上是关于Windows 10 IoT Core用PWM控制器控制树莓派LED灯亮度的主要内容,如果未能解决你的问题,请参考以下文章

张高兴的 Windows 10 IoT 开发笔记:使用 Lightning 中的软件 PWM 驱动 RGB LED

[IOT] - Raspberry Pi 3B + Windows 10 IOT Core + .Net Core Web 部署

树莓派3 Windows 10 IoT Core

玩转树莓派——安装 Windows 10 IoT Core

在 Windows IOT Core 上提升 C++

张高兴的 Windows 10 IoT 开发笔记:使用 ULN2003A 控制步进电机