支付笔记

  以为又帮 Windows 10 IoT
开拓了,所以啊,正儿8经的写篇博客吧。其实大致3个月前就想写的,那时候想做个基于
Windows 十 IoT 的汽车,但悬钩子派原生不辅助 PWM 啊。百度也搜不到,上
GitHub 转了1圈,在 @ms-iot 那开采了 Lightning
,再看最终的更新时间,依旧201陆中旬……Windows 十 IoT
在境内真惨,这么长日子都没人写个学科……不说废话了……

张心花怒放的 Windows 十 IoT 开垦笔记:使用 Lightning 中的软件 PWM 驱动 奥迪Q7GB LED,iotpwm

  感觉又帮 Windows 拾 IoT
开发了,所以啊,正儿八经的写篇博客吧。其实大约5个月前就想写的,那时候想做个依靠Windows 十 IoT 的轿车,但木莓派原生不补助 PWM 啊。百度也搜不到,上
GitHub 转了一圈,在 @ms-iot 那发掘了 Lightning
,再看最终的换代时间,还是201陆中旬……Windows 10 IoT
在境内真惨,这么长日子都没人写个科目……不说废话了……

  本文示例地址:https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/RgbLed

  Lightning 项目地址:https://github.com/ms-iot/lightning

  效果图:

 

  一、 更换暗中同意调节器驱动

  张开悬钩子派的 Windows Device Portal ,在
Devices 菜单中的 Default Controller Driver 选项,将默许的 Inbox Driver
更动为 Direct Memory Mapped Driver ,重启。

 

 

  二、更改 Package.appxmanifest 配置

  新建一个 UWP 项目,本文这里叫“CR-VgbLed德姆o”。以“查看代码”的花样展开Package.appxmanifest 。

  在 Package 标签下加多一个命名空间,并改造 IgnorableNamespaces 属性。

xmlns:iot="http://schemas.microsoft.com/appx/manifest/iot/windows10"
IgnorableNamespaces="uap mp iot"

  在 Capabilities 增添如下内容

<iot:Capability Name="lowLevelDevices" />
<DeviceCapability Name="109b86ad-f53d-4b76-aa5f-821e2ddf2141"/>

 

  三、引用 Microsoft.Iot.Lightning

  在 NuGet 包管理器下寻找 Lightning 就能够。

  还有 Windows IoT Extensions for the UWP

 

  四、使用 Lightning

  注意引用

using Windows.Devices.Pwm;
using Microsoft.IoT.Lightning.Providers;

  1. 判断 Lightning 的启用

  这一步是必需的,因为使用 Lightning
必须关闭系统暗许的调整器驱动,没启用的话抛出个十二分就好了。

if (!LightningProvider.IsLightningEnabled)
{
    throw new NullReferenceException("Lightning isn't enabled !");
}

  2. 拿走软件 PWM 调整器

  一切平常的情况下就该获得 Lightning 中的软件 PWM 控制器了。Lightning
中也合并了其它硬件 PWM 的调整器,因而在调用
PwmController.GetControllersAsync() 时再次回到的是三个聚众,当中第3项是咱们要求的软件
PWM 调控器。获得调控器后还索要安装 PWM 的频率,那些软件 PWM
调控器的效用范围在 40 – 一千 Hz
之间(低的老大……),不在这几个限制内的数字会抛出非常。

PwmController controller = (await PwmController.GetControllersAsync(LightningPwmProvider.GetPwmProvider()))[1];
controller.SetDesiredFrequency(1000);

  3. 设置 PWM 引脚

  以 Red 引脚为例。首先通过调节器来开垦引脚,这里为 GPIO 一7人置的引脚。然后须求设置 Duty Cycle Percentage ,通俗点正是电压的占比,0

  • 一 里面包车型客车小数。

    PwmPin redPin = controller.OpenPin(17);
    redPin.SetActiveDutyCyclePercentage(0);
    redPin.Start();

  之后要转移 LED 的亮度依然要转移 SetActiveDutyCyclePercentage(value)
的 value 值。

  释放的话要先关闭 PWM。

redPin.Stop();
redPin.Dispose();

 

  五、注意

  使用 Lightning
后,以前基于私下认可调整器驱动编写的I2C,SPI代码会报错。但 Lightning
中融为一体了 I2C、SPI、GPIO 等的调整器,将其替换一下就可以。

 

  本文的连串剖判部分就长逝了。上边给八个呼吸灯的测试代码,作者用的是共阴极
汉兰达GB LED 。代码在 GitHub 的类型中有。

/// <summary>
/// Breathing LED
/// </summary>
/// <param name="delay">Delay Time</param>
public async Task BreathingAsync(int delay)
{
    double red = 255;
    double green = 0;
    double blue = 0;

    while (red != 0 && green != 255)
    {
        redPin.SetActiveDutyCyclePercentage(red / 255.0);
        greenPin.SetActiveDutyCyclePercentage(green / 255.0);

        red--;
        green++;
        await Task.Delay(delay);
    }

    while (green != 0 && blue != 255)
    {
        greenPin.SetActiveDutyCyclePercentage(green / 255.0);
        bluePin.SetActiveDutyCyclePercentage(blue / 255.0);

        green--;
        blue++;
        await Task.Delay(delay);
    }

    while (blue != 0 && red != 255)
    {
        bluePin.SetActiveDutyCyclePercentage(blue / 255.0);
        redPin.SetActiveDutyCyclePercentage(red / 255.0);

        blue--;
        red++;
        await Task.Delay(delay);
    }
}

 

http://www.bkjia.com/C\_jc/1228710.htmlwww.bkjia.comtruehttp://www.bkjia.com/C\_jc/1228710.htmlTechArticle张高兴的 Windows 拾 IoT 开采笔记:使用 Lightning
中的软件 PWM 驱动 中华VGB LED,iotpwm 认为又帮 Windows 拾 IoT
开垦了,所以啊,正儿8经的写篇博客吧…

  本文示例地址:https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/RgbLed

  Lightning 项目地址:https://github.com/ms-iot/lightning

  效果图:

图片 1

 

  壹、 更换私下认可调整器驱动

  张开欧洲糙莓派的 Windows Device Portal ,在
Devices 菜单中的 Default Controller Driver 选项,将默许的 Inbox Driver
改造为 Direct Memory Mapped Driver ,重启。

图片 2

 

 

  二、更改 Package.appxmanifest
配置

  新建三个 UWP 项目,本文这里叫“翼虎gbLed德姆o”。以“查看代码”的样式张开Package.appxmanifest 。

图片 3

  在 Package 标签下加多叁个命名空间,并更动 IgnorableNamespaces 属性。

xmlns:iot="http://schemas.microsoft.com/appx/manifest/iot/windows10"
IgnorableNamespaces="uap mp iot"

  在 Capabilities 增添如下内容

<iot:Capability Name="lowLevelDevices" />
<DeviceCapability Name="109b86ad-f53d-4b76-aa5f-821e2ddf2141"/>

 

  三、引用 Microsoft.Iot.Lightning

  在 NuGet 包管理器下寻觅 Lightning 就能够。

图片 4

  还有 Windows IoT Extensions for the UWP

图片 5

 

  四、使用 Lightning

  注意引用

using Windows.Devices.Pwm;
using Microsoft.IoT.Lightning.Providers;

  1. 判断 Lightning 的启用

  这一步是必需的,因为使用 Lightning
必须关闭系统默许的调节器驱动,没启用的话抛出个特别就好了。

if (!LightningProvider.IsLightningEnabled)
{
    throw new NullReferenceException("Lightning isn't enabled !");
}

  贰. 收获软件 PWM 调整器

  1切不奇怪的地方下就该获得 Lightning 中的软件 PWM 调控器了。Lightning
中也合并了别的硬件 PWM 的调节器,因而在调用
PwmController.GetControllersAsync() 时重返的是叁个聚焦,当中第3项是大家需求的软件
PWM 调整器。得到调节器后还须要安装 PWM 的频率,那一个软件 PWM
调控器的功能范围在 40 – 一千 Hz
之间(低的非凡……),不在这么些限制内的数字会抛出非常。

PwmController controller = (await PwmController.GetControllersAsync(LightningPwmProvider.GetPwmProvider()))[1];
controller.SetDesiredFrequency(1000);

  3. 设置 PWM 引脚

  以 Red 引脚为例。首先通过调整器来开垦引脚,这里为 GPIO 一多人置的引脚。然后须求设置 Duty Cycle Percentage ,通俗点正是电压的占比,0

  • 壹 以内的小数。

    PwmPin redPin = controller.OpenPin(17);
    redPin.SetActiveDutyCyclePercentage(0);
    redPin.Start();

  之后要转移 LED 的亮度依旧要转移 SetActiveDutyCyclePercentage(value)
的 value 值。

  释放的话要先关闭 PWM。

redPin.Stop();
redPin.Dispose();

 

  五、注意

  使用 Lightning
后,在此之前基于暗中认可调节器驱动编写的I2C,SPI代码会报错。但 Lightning
中融为1体了 I2C、SPI、GPIO 等的调整器,将其替换一下就可以。

 

  本文的花色分析部分就终止了。上边给多个呼吸灯的测试代码,小编用的是共阴极
RubiconGB LED 。代码在 GitHub 的连串中有。

/// <summary>
/// Breathing LED
/// </summary>
/// <param name="delay">Delay Time</param>
public async Task BreathingAsync(int delay)
{
    double red = 255;
    double green = 0;
    double blue = 0;

    while (red != 0 && green != 255)
    {
        redPin.SetActiveDutyCyclePercentage(red / 255.0);
        greenPin.SetActiveDutyCyclePercentage(green / 255.0);

        red--;
        green++;
        await Task.Delay(delay);
    }

    while (green != 0 && blue != 255)
    {
        greenPin.SetActiveDutyCyclePercentage(green / 255.0);
        bluePin.SetActiveDutyCyclePercentage(blue / 255.0);

        green--;
        blue++;
        await Task.Delay(delay);
    }

    while (blue != 0 && red != 255)
    {
        bluePin.SetActiveDutyCyclePercentage(blue / 255.0);
        redPin.SetActiveDutyCyclePercentage(red / 255.0);

        blue--;
        red++;
        await Task.Delay(delay);
    }
}