Skip to main content

Meadow.Foundation.Leds.Led

Led
StatusStatus badge: working
Source codeGitHub
NuGet packageNuGet Gallery for Meadow.Foundation

An LED is a diode (a component that attempts to let current flow only one way through it) that emits light when voltage is applied to it. Because it is a diode, it only works when a voltage is applied in one direction.

LEDs commonly have one lead longer (the Cathode) than the other (the Anode). The longer cathode leg indicates that it should be connected to the positive (+) side of a circuit.

Code Example

LedBarGraph ledBarGraph;

public override Task Initialize()
{
Resolver.Log.Info("Initializing...");

// Using an array of Pins
IPin[] pins =
{
Device.Pins.D11,
Device.Pins.D10,
Device.Pins.D09,
Device.Pins.D08,
Device.Pins.D07,
Device.Pins.D06,
Device.Pins.D05,
Device.Pins.D04,
Device.Pins.D03,
Device.Pins.D02
};

ledBarGraph = new LedBarGraph(pins);

return Task.CompletedTask;
}

public override async Task Run()
{
Resolver.Log.Info("TestLedBarGraph...");

float percentage = 0;

while (true)
{
Resolver.Log.Info("Turning them on and off for 200ms using SetLed...");
for (int i = 0; i < ledBarGraph.Count; i++)
{
await ledBarGraph.SetLed(i, true);
await Task.Delay(100);
await ledBarGraph.SetLed(i, false);
}

await Task.Delay(1000);

Resolver.Log.Info("Turning them on using Percentage...");
while (percentage < 1)
{
percentage += 0.10f;
await ledBarGraph.SetPercentage(Math.Min(1.0f, percentage));
await Task.Delay(100);
}

await Task.Delay(1000);

Resolver.Log.Info("Turning them off using Percentage...");
while (percentage > 0)
{
percentage -= 0.10f;
await ledBarGraph.SetPercentage(Math.Max(0.0f, percentage));
await Task.Delay(100);
}

await Task.Delay(1000);

Resolver.Log.Info("Charging animation...");
while (percentage < 1)
{
percentage += 0.10f;
await ledBarGraph.SetPercentage(Math.Min(1.0f, percentage));
await ledBarGraph.StartBlink(ledBarGraph.GetTopLedForPercentage());
await Task.Delay(2000);
}

await Task.Delay(1000);

Resolver.Log.Info("Discharging animation...");
while (percentage > 0)
{
percentage -= 0.10f;
await ledBarGraph.SetPercentage(Math.Max(0.0f, percentage));
await ledBarGraph.StartBlink(ledBarGraph.GetTopLedForPercentage());
await Task.Delay(2000);
}

await Task.Delay(1000);

Resolver.Log.Info("Blinking for 5 seconds at 500ms on/off...");
await ledBarGraph.StartBlink();
await Task.Delay(5000);
await ledBarGraph.StopAnimation();

await Task.Delay(1000);

Resolver.Log.Info("Blinking for 5 seconds at 200ms on/off...");
await ledBarGraph.StartBlink(TimeSpan.FromMilliseconds(200), TimeSpan.FromMilliseconds(200));
await Task.Delay(5000);
await ledBarGraph.StopAnimation();

await Task.Delay(1000);
}
}

Sample project(s) available on GitHub

Wiring Example

Circuit layout sample showing an LED connected through a resistor to pin D08 and ground on a Meadow F7

Class Led

Utility functions to provide blinking for Led

Assembly: Meadow.Foundation.dll
View Source
Declaration
public class Led : ILed, IDisposable

Implements:
Meadow.Peripherals.Leds.ILed, System.IDisposable

Properties

IsOn

Turns on LED with current color or turns it off

View Source
Declaration
public bool IsOn { get; set; }

Port

Gets the port that is driving the LED

View Source
Declaration
protected IDigitalOutputPort Port { get; set; }

IsDisposed

Is the object disposed

View Source
Declaration
public bool IsDisposed { get; }

Methods

StopAnimation()

Stops the current LED animation

View Source
Declaration
public Task StopAnimation()
Returns

System.Threading.Tasks.Task

Start the Blink animation which sets turns the LED on and off on an interval of 1 second (500ms on, 500ms off)

View Source
Declaration
public Task StartBlink()
Returns

System.Threading.Tasks.Task

StartBlink(TimeSpan, TimeSpan)

Start the Blink animation which sets turns the LED on and off with the specified durations

View Source
Declaration
public Task StartBlink(TimeSpan onDuration, TimeSpan offDuration)
Returns

System.Threading.Tasks.Task

Parameters
TypeNameDescription
System.TimeSpanonDurationThe duration the LED stays on
System.TimeSpanoffDurationThe duration the LED stays off

Dispose()

Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

View Source
Declaration
public void Dispose()

Dispose(bool)

Dispose of the object

View Source
Declaration
protected virtual void Dispose(bool disposing)
Parameters
TypeNameDescription
System.BooleandisposingIs disposing

Implements

  • Meadow.Peripherals.Leds.ILed
  • System.IDisposable