這個(gè)項(xiàng)目使用 Netduino.Foundation 庫中包含的RgbPwmLed 類。本指南由三部分組成:
第1部分:循環(huán)通過RGB LED上的紅色,綠色和藍(lán)色引腳,確保它們正確接線。
第2部分:只需幾行代碼就可以讓LED煥發(fā)所有可能的色調(diào)。
第3部分:探索由Netduino.Foundation Library提供的更有用的LED API方法。
公共陰極和公共陽極RGB LED
在此項(xiàng)目中,您可以使用共陽極或共陰極RGB LED。只需確保構(gòu)建與您正在使用的LED相對應(yīng)的電路。
Netduino.Foundation 是一個(gè)使用Netduino上的.NET MicroFramework快速構(gòu)建連接內(nèi)容的平臺。由Wilderness Labs創(chuàng)建,它是開源的,由Netduino社區(qū)維護(hù)。
如果你是Netduino開發(fā)的新手,我建議你去Netduino項(xiàng)目入門,正確設(shè)置你的開發(fā)環(huán)境。
組裝電路
公共陰極RGB LED
共陰極RGB LED的電路
公共陽極RGB LED
共陽極RGB LED的電路
注意:請注意,兩個(gè)電路中都沒有使用寄存器。通常,通過全電壓可以燒毀LED。但是,Netduino.Foundation可以使用PWM信號自動(dòng)控制正向電壓。
創(chuàng)建Netduino項(xiàng)目
在Visual Studio 2015 for Windows或最新的Visual Studio for Mac中創(chuàng)建Netduino項(xiàng)目;將項(xiàng)目命名為 RgbPwmLed 。
添加Netduino.Foundation NuGet包
Windows
右鍵單擊RgbPwmLed項(xiàng)目,然后單擊Manage NuGet包。在“瀏覽”選項(xiàng)卡中,搜索Netduino.Foundation;它應(yīng)該是第一個(gè)搜索結(jié)果。單擊“安裝”按鈕。
macOS
按住Alt鍵點(diǎn)擊 RgbPwmLed 項(xiàng)目在 解決方案資源管理器 中,然后單擊 添加=》添加Nuget包 打開NuGet包窗口。搜索 Netduino.Foundation 軟件包,然后單擊 添加軟件包 將其添加到項(xiàng)目中。
第1部分:使RGB LED發(fā)紅光,綠光和藍(lán)光
在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 方法中,我們創(chuàng)建了一個(gè)新 RgbPwmLed 名為 rgbPwmLed 的對象。在構(gòu)造函數(shù)中,我們指定用于控制LED的引腳。由于我們沒有使用電阻,我們分別為每個(gè)引腳包括正向電壓(紅色為2.1V,綠色和藍(lán)色為3.0V)。構(gòu)造函數(shù)中的最后一個(gè)參數(shù)是可選的,它的布爾值 isCommonCathode 標(biāo)志(默認(rèn)為true)。根據(jù)您正在使用的電路相應(yīng)地設(shè)置此值。
現(xiàn)在使用 rgbPwmLed 對象,在一個(gè)無限循環(huán)內(nèi),我們調(diào)用 SetColor(顏色)方法,傳遞紅色,綠色和藍(lán)色十六進(jìn)制代碼,并使線程休眠一秒鐘。您還可以聲明以RGB或HSA值指定的顏色,甚至是預(yù)定義的命名顏色。
此外,為了跟蹤LED當(dāng)前顯示的顏色,您可以使用調(diào)試.Print 指示程序始終顯示的顏色,只是為了確保正確連接所有LED支腳。
運(yùn)行項(xiàng)目
單擊Visual Studio中的運(yùn)行按鈕以查看RGB LED的運(yùn)行情況!您應(yīng)該看到LED每秒循環(huán)顯示紅色,綠色和藍(lán)色,如下面的gif:
RGB LED燈紅色,綠色和藍(lán)色
第2部分:使RGB LED煥發(fā)所有色調(diào)
在這部分中,讓我們稍微調(diào)整一下項(xiàng)目。讓我們編寫一個(gè)小算法來遍歷Hue頻譜中的所有360種顏色。為何360?使用色相,飽和度,亮度和Alpha顏色模型,它具有圓柱形幾何形狀,并以完全飽和度和alpha值通過每個(gè)度數(shù),它將顯示RGB光譜內(nèi)的所有顏色。
刪除 While(true)循環(huán)內(nèi)的代碼,然后粘貼 For 循環(huán)。它應(yīng)該如下所示:
。..
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 中,我們聲明一個(gè)本地雙色調(diào)并分配結(jié)果劃分i/360。之后,我們在 rgbPwmLed 對象上調(diào)用 SetColor(Color.FromHsba(hue,1,1))方法,最后執(zhí)行 Thread.Sleep( 10)以適中的速度查看所有顏色。
運(yùn)行項(xiàng)目
現(xiàn)在運(yùn)行項(xiàng)目時(shí),您應(yīng)該看到像這樣的東西:
RGB LED循環(huán)通過不同的色調(diào)
第3部分:使用StartRunningColors方法
你應(yīng)該檢查的另一個(gè)有用的API方法是 StartRunningColors ,它包括傳遞一個(gè)顏色列表以及每個(gè)人的持續(xù)時(shí)間。以下代碼片段使LED發(fā)光 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);
}
。..
運(yùn)行項(xiàng)目
當(dāng)你現(xiàn)在運(yùn)行項(xiàng)目時(shí),你會看到如下內(nèi)容:
-
led
+關(guān)注
關(guān)注
242文章
23731瀏覽量
671259 -
Netduino
+關(guān)注
關(guān)注
0文章
19瀏覽量
3486
發(fā)布評論請先 登錄
使用ADS1281的SPI采集數(shù)據(jù),各個(gè)引腳應(yīng)該怎么連接?
ADS131A02讀出的數(shù)據(jù)不對是怎么回事?
用MCU控制AIC3254時(shí),SrereoMixer模塊的參數(shù)是什么格式?
請問TAS5706如何用硬件控制I2C?
多個(gè)TLV320AIC3254用一路I2C總線對其配置可行嗎?
如何用5509A產(chǎn)生一個(gè)白噪聲,經(jīng)AIC23播放出來然后再用AIC23采集這個(gè)聲音?
用萬用表怎樣測電機(jī)燒沒燒
怎樣用萬用表肖特基橋的好壞

怎樣用自己的電腦遠(yuǎn)程公司的電腦

評論