Windows 10 IoT Core用PWM控制器控制树莓派LED灯亮度
2021-03-05 19:29
标签:数字 pgp add 超过 oftp https desire new control 我接到一个需求,需要调节LED灯的亮度,且是从上位机进行控制,我了解到树莓派也有PWM,就准备通过PWM来控制灯的亮度。 PWM又叫脉宽调制,是用微处理器的数字输出来对模拟电路进行控制,对模拟信号电平进行数字编码。 微软也提供了PWM的类库 https://docs.microsoft.com/en-us/uwp/api/windows.devices.pwm?view=winrt-19041 于是我根据msdn写了一段实现PWM控制的代码 定义: 但控制失败了。我查了一下,树莓派是通过GPIO编程来实现PWM,于是改成了下面这样 就可以通过改变引脚的占空比来改变灯的亮度了 需要注意的是,这个PWM控制器只支持40-1000赫兹的频率,超过或低于这个区间都会出错。 Windows 10 IoT Core用PWM控制器控制树莓派LED灯亮度 标签:数字 pgp add 超过 oftp https desire new control 原文地址:https://www.cnblogs.com/ssvip/p/12888523.htmlprivate 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;
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);//设置引脚的占空比百分比
文章标题:Windows 10 IoT Core用PWM控制器控制树莓派LED灯亮度
文章链接:http://soscw.com/index.php/essay/60590.html