這個項目使用 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
+關注
關注
242文章
23731瀏覽量
671261 -
Netduino
+關注
關注
0文章
19瀏覽量
3486
發布評論請先 登錄
使用ADS1281的SPI采集數據,各個引腳應該怎么連接?
ADS131A02讀出的數據不對是怎么回事?
用MCU控制AIC3254時,SrereoMixer模塊的參數是什么格式?
請問TAS5706如何用硬件控制I2C?
多個TLV320AIC3254用一路I2C總線對其配置可行嗎?
如何用5509A產生一個白噪聲,經AIC23播放出來然后再用AIC23采集這個聲音?
用萬用表怎樣測電機燒沒燒
怎樣用萬用表肖特基橋的好壞

怎樣用自己的電腦遠程公司的電腦

評論