这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 电源与模拟 » 使用RGB LED和Netduino显示Rainbow Colors

共1条 1/1 1 跳转至

使用RGB LED和Netduino显示Rainbow Colors

助工
2018-10-09 10:03:13     打赏

该项目使用Netduino.Foundation库中包含RgbPwmLed本指南由三部分组成:

  • 第1部分:循环通过RGB LED上的红色,绿色和蓝色引脚,确保它们正确接线。

  • 第2部分:只需几行代码就可以让LED发出所有可能的色调。

  • 第3部分:探索Netduino.Foundation Library提供的更有用的LED API方法。

RGB(红色,绿色,蓝色)LED灯是具有四个支路的二极管 - 一个用于所提到的每种颜色,一个用于共阴极(接地)或共阳极(vcc),这也是最长的一个。

RGB-LED-pin_FQMtgy7urX.png?自动压缩=%2Cformat&W = 680&H = 510&适合= MAX

共阴极和共阳极RGB LED

在此项目中,您可以使用共阳极或共阴极RGB LED。只需确保构建与您正在使用的LED相对应的电路。

Netduino.Foundation是一个使用Netduino上的.NET MicroFramework快速构建连接内容的平台。 Wilderness Labs创建,它是开源的,由Netduino社区维护。

如果您是Netduino开发的新手,我建议您进入Netduino项目半导体入门,以正确设置开发环境。

组装电路

共阴极RGB LED

rgb_cathode_ofAWJVOtaU.PNG?自动压缩=%2Cformat&W = 680&H = 510&适合= MAX

共阴极RGB LED的电路

常见的阳极RGB LED

rgb_sfd1BFkPHw.PNG?自动压缩=%2Cformat&W = 680&H = 510&适合= MAX

共阳极RGB LED的电路

注意:请注意,两个电路中均未使用电阻器。通常,通过全电压可以烧毁LED。但是,Netduino.Foundation可以使用PWM信号自动控制正向电压。

创建Netduino项目

在Visual Studio 2015 for Windows或最新的Visual Studio for Mac中创建Netduino项目; 将项目命名为RgbPwmLed

添加Netduino.Foundation NuGet包

Windows 
右键单击RgbPwmLed项目,然后单击“管理NuGet包”。在“浏览”选项卡中,搜索Netduino.Foundation; 它应该是第一个搜索结果。IC单击“安装”按钮。

nuget_windows_NzDDIpEjvL.jpeg?自动压缩=%2Cformat&W = 680&H = 510&适合= MAX


macOS 解决方案资源管理器中
按住Alt键单击RgbPwmLed 项目,然后单击Add => Add Nuget Package 打开NuGet Package窗口。搜索Netduino.Foundation 包,然后单击“ 添加包” 将其添加到项目中。

nuget_max_5Wy3d9jrop.jpeg?自动压缩=%2Cformat&W = 680&H = 510&适合= MAX


第1部分:使RGB LED发红光,绿光和蓝光

在Program.cs文件中,粘贴以下代码:

using Microsoft.SPOT;

using Netduino.Foundation;

using System.Threading;

using N = SecretLabs.NETMF.Hardware.Netduino;

namespace RgbPwmLed

{

   public class Program

   {

       public static void Main()

       {

           // create a new pwm controlled RGB LED on pins 

           // Red = 11, Green = 10, and Blue = 9.

           var rgbPwmLed = new Netduino.Foundation.LEDs.RgbPwmLed(

             N.PWMChannels.PWM_PIN_D11,

             N.PWMChannels.PWM_PIN_D10,

             N.PWMChannels.PWM_PIN_D9,

             2.1f,

             3.0f,

             3.0f, 

             false);

           // run forever

           while (true)

           {

               rgbPwmLed.SetColor(Color.FromHex("#FF0000"));

               Debug.Print("=========== RED! ===========");

               Thread.Sleep(1000);

               rgbPwmLed.SetColor(Color.FromHex("#00FF00"));

               Debug.Print("=========== GREEN! ===========");

               Thread.Sleep(1000);

               rgbPwmLed.SetColor(Color.FromHex("#0000FF"));

               Debug.Print("=========== BLUE! ===========");

               Thread.Sleep(1000);

           }

       }

   }

}

Main方法中,我们创建了一个名为rgbPwmLed的新RgbPwmLed对象在构造函数中,我们指定用于控制LED的引脚。由于我们没有使用电阻,我们分别为每个引脚提供正向电压(红色为2.1V,绿色和蓝色为3.0V)构造函数中的最后一个参数是可选的,它IC的布尔值是CommonCathode标志(默认为true)。根据您正在使用的电路相应地设置此值。

现在使用rgbPwmLed对象,在一个无限循环内,我们调用SetColor(颜色)方法,以十六进制代码传递红色,绿色和蓝色,并使线程休眠一秒钟。您还可以声明以RGB或HSA值指定的颜色,甚至是预定义的命名颜色。

此外,为了跟踪LED当前显示的颜色,您可以使用Debug.Print指示程序始终显示的颜色,以确保正确连接所有LED支脚。

运行项目

单击Visual Studio中的运行按钮以查看RGB LED的运行情况!您应该看到LED每秒都会循环显示红色,绿色和蓝色,如下面的gif:

ezgif.com-optimize.gif

RGB LED照明红色,绿色和蓝色

第2部分:使RGB LED焕发所有色调

在这部分中,让我们稍微调整一下项目。让我们编写一个小算法来遍历Hue频谱中的所有360种可能的颜色。为何360?使用色调,饱和度,亮度和Alpha颜色模型,它具有圆柱形几何体,并且在完全饱和度和alpha值的每个度数中,它将显示RGB光谱内的所有颜色。

删除While(true)循环内的代码,然后粘贴For循环。它应该如下所示:

...

while (true)

{

    // loop through the entire hue spectrum (360 degrees)

    for (int i = 0; i < 360; i++)

    {

        var hue = ((double)i / 360F);

        Debug.Print(hue.ToString());

        // set the color of the RGB

        rgbPwmLed.SetColor(Color.FromHsba(((double)i/360F), 1, 1));

        // for a fun, fast rotation through the hue spectrum:

        //Thread.Sleep (1);

        // for a moderate walk through the forest of colors;

        Thread.Sleep(10);

    }

}

...

For For中,我们声明了一个局部双色调并指定了分割i / 360的结果。之后,我们rgbPwmLed对象调用SetColor (Color.FromHsba(hue,1,1))方法,最后执行Thread.Sleep(10)以中等速度查看所有颜色。

运行项目

现在运行项目时,您应该看到如下内容:

ezgif.com-optimize(1).gif

RGB LED循环通过不同的色调

第3部分:使用StartRunningColors方法

您应该检查的另一个有用的API方法是StartRunningColors,它包括传递颜色列表以及每个颜色的持续时间。以下代码片段使LED发光Color.White为1000ms(1s),然后Color.Aqua为500ms(0.5s),然后Color.ForrestGreen为1000ms(1s),最后Color.OrangeRed为500ms(0.5s)。

...

while (true)

{

    // run through various colors for 10 seconds

    rgbPwmLed.StartRunningColors(

        new System.Collections.ArrayList

        {

            Color.White,

            Color.Aqua,

            Color.ForestGreen,

            Color.OrangeRed

        }, 

        new int[] { 1000, 500, 1000, 500 });

    Thread.Sleep(10000);

}

...

运行项目

当你现在运行项目时,你会看到这样的事情:

GIF,180506_204356.gif


看看Netduino.Foundation!

对于你可以用Netduino.Foundation做的广泛令人兴奋的事情,这个项目只是冰山一角。

  • 它配备了一个巨大的外设驱动程序库,其中包含最常见传感器和外设的驱动程序。

  • 外设驱动程序封装了核心逻辑,并提供了一个简单,干净,现代的API。

  • 这个项目得到了一个不断发展的社区的支持,该社区不断致力于建立酷炫的联系事物,并且总是很乐意帮助新人并讨论新项目。







关键词: Netduino     Rainbow     显示    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]