0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样用NetduinoFoundation控制RGBLED

454398 来源:工程师吴畏 2019-08-05 09:09 次阅读

这个项目使用 Netduino.Foundation 库中包含的RgbPwmLed 类。本指南由三部分组成:

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

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

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

公共阴极和公共阳极RGB LED

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

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

如果你是Netduino开发的新手,我建议你去Netduino项目入门,正确设置你的开发环境。

组装电路

公共阴极RGB LED

共阴极RGB LED的电路

公共阳极RGB LED

共阳极RGB LED的电路

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

创建Netduino项目

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

添加Netduino.Foundation NuGet包

Windows

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

macOS

按住Alt键点击 RgbPwmLed 项目在 解决方案资源管理器 中,然后单击 添加=》添加Nuget包 打开NuGet包窗口。搜索 Netduino.Foundation 软件包,然后单击 添加软件包 将其添加到项目中。

第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)。构造函数中的最后一个参数是可选的,它的布尔值 isCommonCathode 标志(默认为true)。根据您正在使用的电路相应地设置此值。

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

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

运行项目

单击Visual Studio中的运行按钮以查看RGB LED的运行情况!您应该看到LED每秒循环显示红色,绿色和蓝色,如下面的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 中,我们声明一个本地双色调并分配结果划分i/360。之后,我们在 rgbPwmLed 对象上调用 SetColor(Color.FromHsba(hue,1,1))方法,最后执行 Thread.Sleep( 10)以适中的速度查看所有颜色。

运行项目

现在运行项目时,您应该看到像这样的东西:

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);

}

。..

运行项目

当你现在运行项目时,你会看到如下内容:

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    240

    文章

    23129

    浏览量

    658323
  • Netduino
    +关注

    关注

    0

    文章

    19

    浏览量

    3434
收藏 人收藏

    评论

    相关推荐

    请问TAS5706如何用硬件控制I2C?

    TAS5706 的Control Interface可以HW,SW。我想问问怎样用HW来控制呢?因为我一个板上预计8个TAS5706,MCU怎样去识别?
    发表于 10-23 08:33

    多个TLV320AIC3254一路I2C总线对其配置可行吗?

    一片CPU3片TLV320AIC3254做音频处理,想用一路I2C总线对其配置可行吗? 地址好像是唯一的 0011000没法设置,手册中又提到可使用10位地址但是没找到说明怎样用,哪位大侠用过
    发表于 10-22 07:54

    如何用5509A产生一个白噪声,经AIC23播放出来然后再用AIC23采集这个声音?

    怎样用5509A产生一个白噪声,经AIC23播放出来然后再用AIC23采集这个声音
    发表于 10-15 06:26

    怎样用自己的电脑远程公司的电脑

    随着远程办公和居家办公的普及,如何高效、安全地远程控制办公室电脑成为许多职场人士的需求。Splashtop作为一款专业的远程控制软件,提供了强大的功能,使用户能够随时随地访问和操作办公室的电脑,实现
    的头像 发表于 08-30 13:20 137次阅读
    <b class='flag-5'>怎样用</b>自己的电脑远程公司的电脑

    怎样用THS3201实现输出功率可调?

    怎样用THS3201实现输出功率可调?
    发表于 08-26 08:28

    OPA735加OPA333,怎样用TINA TI去仿真?

    当输入信号VG1从7.06V慢慢变化到7.22V时。 输出电压Vout的变化必须是接近线性变化的。我想知道我该怎样用TINA TI去仿真?怎样设置那个输入信号VG1才能达到我的目的。因为这个电压源好像
    发表于 08-02 08:39

    怎样用表测稳压管稳压值

    表是一种常用的电子测量工具,可以用来测量电压、电流、电阻等多种参数。在测量稳压管的稳压值时,我们可以使用万表的直流电压测量功能。以下是步骤和注意事项: 准备工具和材料 万表 稳压管 电源
    的头像 发表于 07-31 14:26 1365次阅读

    怎样用STM8L的PB3/TIM2_TRIG的引脚测量脉宽?

    怎样用STM8L的PB3/TIM2_TRIG的引脚测量脉宽?
    发表于 05-07 06:55

    stm32f100怎样用重映射功能?

    的是stm32f100c8t6b芯片,现在想用将PB1映射为TIM1_CH3N,在调用GPIO_PinAFConfig(GPIOB,GPIO_PinSource1,GPIO_AF_TIM1)时, GPIO_PinAFConfig和GPIO_AF_TIM1都没定义,stm32f100
    发表于 05-07 06:06

    STM32F412G-DISCO怎样用MX生成fatfs的代码?

    STM32F412G-DISCO怎样用MX生成fatfs的代码? SD卡例程能跑,但mx生成的代码不能正常运行,我生成代码后是不是还要配置一些东西?(我生成后只写了测试代码) 问题解决了,虽然我不知道我为什么不能直接使用mx生成的代码去操作sd卡,但我通过复制粘贴例程的代码完成了测试。
    发表于 03-12 08:15

    怎样用表来判断加热管的好坏?

    怎样用表来判断加热管的好坏? 万表是电工常用的测量仪器,它可以用来判断加热管的好坏。加热管是一种常见的加热元件,广泛应用于家电、机械设备和工业生产中。在选择和使用加热管时,我们需要了解其电阻值
    的头像 发表于 12-20 17:21 5008次阅读

    安泰教你怎样用好手中的六位半万

              万表是我们用来测量静态参数的基本仪表,得益于它的交直流电压、电流、电阻、电容、二极管压降等多种测量功能,广泛应用于电气电力电子工业领域。 我们所讲的六位半万表指的是它的测量
    的头像 发表于 12-11 16:17 954次阅读

    无线通信:怎样用电磁波表示1和0

    为什么频率越高,能携带的信息就越多?以数字信号为例,信息就是一串串的1和0,所以先搞清楚怎样用电磁波表示1和0。
    发表于 12-05 14:44 1735次阅读
    无线通信:<b class='flag-5'>怎样用</b>电磁波表示1和0

    ADAU1452做FFT分析,怎样设定取样点的数量?

    请问,我想用ADAU1452做FFT分析,怎样设定取样点的数量,还有就是怎样用单片机读出分析得到的复数结果数组?谢谢!
    发表于 11-29 06:42

    怎样用ADAU1761设计DRC的压缩/扩展?

    请问怎样用ADAU1761设计DRC的压缩/扩展。我在SigmaStudio 4.5的模块中只找到RMS。如果ADAU1761设计DRC要怎样
    发表于 11-28 06:41