Remarks
RgbLed | |
---|---|
Status | |
Source code | GitHub |
NuGet package |
RgbLed represents an RGB LED whose color is controlled by three digital output ports. These diodes consist of four legs - one for each of the colors mentioned and one for a common cathode (ground) or common anode (vcc), which is also the longest one.
To connect these deds to Meadow, it is recommended to use an external resistor of ~270 to 1K ohms to prevent too much current from flowing through the led and causing damage.
Circuit of a common anode RGB LED
Circuit of a common cathode RGB LED
Code Example
protected List<RgbLed> rgbLeds;
public override Task Initialize()
{
Resolver.Log.Info("Initializing...");
var onRgbLed = new RgbLed(
redPin: Device.Pins.OnboardLedRed,
greenPin: Device.Pins.OnboardLedGreen,
bluePin: Device.Pins.OnboardLedBlue);
onRgbLed.SetColor(RgbLedColors.Red);
rgbLeds = new List<RgbLed>
{
new RgbLed(
Device.CreateDigitalOutputPort(Device.Pins.D02),
Device.CreateDigitalOutputPort(Device.Pins.D03),
Device.CreateDigitalOutputPort(Device.Pins.D04)),
new RgbLed(
Device.CreateDigitalOutputPort(Device.Pins.D05),
Device.CreateDigitalOutputPort(Device.Pins.D06),
Device.CreateDigitalOutputPort(Device.Pins.D07)),
new RgbLed(
Device.CreateDigitalOutputPort(Device.Pins.D08),
Device.CreateDigitalOutputPort(Device.Pins.D09),
Device.CreateDigitalOutputPort(Device.Pins.D10)),
new RgbLed(
Device.CreateDigitalOutputPort(Device.Pins.D11),
Device.CreateDigitalOutputPort(Device.Pins.D12),
Device.CreateDigitalOutputPort(Device.Pins.D13))
};
onRgbLed.SetColor(RgbLedColors.Green);
return Task.CompletedTask;
}
public override async Task Run()
{
Resolver.Log.Info("TestRgbLeds...");
while (true)
{
Resolver.Log.Info("Going through each color on each RGB LED...");
foreach (var rgbLed in rgbLeds)
{
for (int i = 0; i < (int)RgbLedColors.count; i++)
{
rgbLed.SetColor((RgbLedColors)i);
await Task.Delay(500);
}
}
await Task.Delay(1000);
Resolver.Log.Info("Blinking through each color on each RGB LED...");
foreach (var rgbLed in rgbLeds)
{
for (int i = 0; i < (int)RgbLedColors.count; i++)
{
rgbLed.StartBlink((RgbLedColors)i);
await Task.Delay(3000);
}
}
await Task.Delay(1000);
Resolver.Log.Info("Blinking through each color on each RGB LED...");
foreach (var rgbLed in rgbLeds)
{
for (int i = 0; i < (int)RgbLedColors.count; i++)
{
rgbLed.StartBlink((RgbLedColors)i, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1));
await Task.Delay(3000);
}
}
await Task.Delay(1000);
}
}
Sample project(s) available on GitHub
Characteristic | Locus |
---|---|
Inheritance | System.Object > RgbLed |
Namespace | Meadow.Foundation.Leds |
Assembly | Meadow.Foundation.dll |
Syntax
public class RgbLed : IRgbLed
Constructors
RgbLed(IDigitalOutputPort, IDigitalOutputPort, IDigitalOutputPort, CommonType)
Initializes a new instance of the RgbLed class.
Declaration
public RgbLed(IDigitalOutputPort redPort, IDigitalOutputPort greenPort, IDigitalOutputPort bluePort, CommonType commonType = null)
Parameters
Type | Name | Description |
---|---|---|
IDigitalOutputPort | redPort | Red Port |
IDigitalOutputPort | greenPort | Green Port |
IDigitalOutputPort | bluePort | Blue Port |
CommonType | commonType | Is Common Cathode |
RgbLed(IPin, IPin, IPin, CommonType)
Initializes a new instance of the RgbLed class.
Declaration
public RgbLed(IPin redPin, IPin greenPin, IPin bluePin, CommonType commonType = null)
Parameters
Type | Name | Description |
---|---|---|
IPin | redPin | Red Pin |
IPin | greenPin | Green Pin |
IPin | bluePin | Blue Pin |
CommonType | commonType | Is Common Cathode |
Properties
BluePort
Get the blue LED port
Declaration
protected IDigitalOutputPort BluePort { get; set; }
Property Value
Type | Description |
---|---|
IDigitalOutputPort |
Color
Get the color the LED has been set to.
Declaration
public RgbLedColors Color { get; protected set; }
Property Value
Type | Description |
---|---|
RgbLedColors |
Common
Is the LED using a common cathode
Declaration
public CommonType Common { get; protected set; }
Property Value
Type | Description |
---|---|
CommonType |
GreenPort
Get the green LED port
Declaration
protected IDigitalOutputPort GreenPort { get; set; }
Property Value
Type | Description |
---|---|
IDigitalOutputPort |
IsOn
Turns on LED with current color or turns it off
Declaration
public bool IsOn { get; set; }
Property Value
Type | Description |
---|---|
System.Boolean |
RedPort
Get the red LED port
Declaration
protected IDigitalOutputPort RedPort { get; set; }
Property Value
Type | Description |
---|---|
IDigitalOutputPort |
Methods
SetColor(RgbLedColors)
Sets the current color of the LED.
Declaration
public void SetColor(RgbLedColors color)
Parameters
Type | Name | Description |
---|---|---|
RgbLedColors | color |
StartBlink(RgbLedColors)
Starts the blink animation LED turning it on (500) and off (500)
Declaration
public void StartBlink(RgbLedColors color)
Parameters
Type | Name | Description |
---|---|---|
RgbLedColors | color |
StartBlink(RgbLedColors, TimeSpan, TimeSpan)
Starts the blink animation with the specified on and off duration.
Declaration
public void StartBlink(RgbLedColors color, TimeSpan onDuration, TimeSpan offDuration)
Parameters
Type | Name | Description |
---|---|---|
RgbLedColors | color | |
TimeSpan | onDuration | |
TimeSpan | offDuration |
StartBlinkAsync(RgbLedColors, TimeSpan, TimeSpan, CancellationToken)
Turn the LED on and off (blink)
Declaration
protected Task StartBlinkAsync(RgbLedColors color, TimeSpan onDuration, TimeSpan offDuration, CancellationToken cancellationToken)
Parameters
Type | Name | Description |
---|---|---|
RgbLedColors | color | |
TimeSpan | onDuration | |
TimeSpan | offDuration | |
CancellationToken | cancellationToken |
Returns
Type | Description |
---|---|
Task |
Stop()
Stops any running animations.
Declaration
public void Stop()