Remarks
PwmLedBarGraph | |
---|---|
Status | |
Source code | GitHub |
NuGet package |
An LED Bar Graph is packaged array of LEDs commonly used to indicate level or progress and commonly include 8 or 10 leds.
The PwmLedBarGraph class allows you to control an led bar graph using PWM ports.
Use the SetLed
method to turn on or off LEDs individually, or assign a value on the Percentage
property to represent it visually on the graph bar, like a battery indicator, temperature, humidity, etc.
Code Example
PwmLedBarGraph pwmLedBarGraph;
public override Task Initialize()
{
Resolver.Log.Info("Initializing...");
// Using an array of Pins that support PWM (D02 - D13)
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
};
pwmLedBarGraph = new PwmLedBarGraph(Device, pins, new Voltage(2.2));
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 < pwmLedBarGraph.Count; i++)
{
pwmLedBarGraph.SetLed(i, true);
await Task.Delay(100);
pwmLedBarGraph.SetLed(i, false);
}
await Task.Delay(1000);
Resolver.Log.Info("Turning them on using Percentage...");
while (percentage < 1)
{
percentage += 0.01f;
pwmLedBarGraph.Percentage = 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.01f;
pwmLedBarGraph.Percentage = Math.Max(0.0f, percentage);
await Task.Delay(100);
}
await Task.Delay(1000);
Resolver.Log.Info("Blinking for 5 seconds at 500ms on/off...");
pwmLedBarGraph.StartBlink();
await Task.Delay(5000);
pwmLedBarGraph.Stop();
await Task.Delay(1000);
Resolver.Log.Info("Bar blinking with high and low brightness for 5 seconds...");
pwmLedBarGraph.StartBlink(TimeSpan.FromMilliseconds(200), TimeSpan.FromMilliseconds(200), 0.75f, 0.25f);
await Task.Delay(5000);
pwmLedBarGraph.Stop();
await Task.Delay(1000);
Resolver.Log.Info("Bar pulsing for 5 seconds...");
pwmLedBarGraph.StartPulse();
await Task.Delay(5000);
pwmLedBarGraph.Stop();
await Task.Delay(1000);
}
}
Sample project(s) available on GitHub
Wiring Example
<img src="../../API_Assets/Meadow.Foundation.Leds.PwmLedBarGraph/PwmLedBarGraph_Fritzing.png"
Characteristic | Locus |
---|---|
Inheritance | System.Object > PwmLedBarGraph |
Namespace | Meadow.Foundation.Leds |
Assembly | Meadow.Foundation.dll |
Syntax
public class PwmLedBarGraph : object
Constructors
PwmLedBarGraph(IPin[], Voltage[])
Create an LedBarGraph instance for multi color LED bar graphs
Declaration
public PwmLedBarGraph(IPin[] pins, Voltage[] forwardVoltage)
Parameters
Type | Name | Description |
---|---|---|
IPin[] | pins | Array of pins |
Voltage[] | forwardVoltage | Array of forward voltages |
PwmLedBarGraph(IPwmOutputController, IPin[], Voltage)
Create an LedBarGraph instance for single color LED bar graphs
Declaration
public PwmLedBarGraph(IPwmOutputController device, IPin[] pins, Voltage forwardVoltage)
Parameters
Type | Name | Description |
---|---|---|
IPwmOutputController | device | |
IPin[] | pins | Array of pins |
Voltage | forwardVoltage | Single forward voltage |
PwmLedBarGraph(IPwmPort[], Voltage)
Create an LedBarGraph instance for single color LED bar graphs
Declaration
public PwmLedBarGraph(IPwmPort[] ports, Voltage forwardVoltage)
Parameters
Type | Name | Description |
---|---|---|
IPwmPort[] | ports | Array of Pwm Ports |
Voltage | forwardVoltage | Single forward voltage |
PwmLedBarGraph(IPwmPort[], Voltage[])
Create an LedBarGraph instance for multi color LED bar graphs
Declaration
public PwmLedBarGraph(IPwmPort[] ports, Voltage[] forwardVoltage)
Parameters
Type | Name | Description |
---|---|---|
IPwmPort[] | ports | Array of ports |
Voltage[] | forwardVoltage | Array of forward voltages |
Fields
pwmLeds
Array to hold pwm leds for bar graph
Declaration
protected PwmLed[] pwmLeds
Field Value
Type | Description |
---|---|
PwmLed[] |
Properties
Count
The number of the LEDs in the bar graph
Declaration
public int Count { get; }
Property Value
Type | Description |
---|---|
System.Int32 |
Percentage
A value between 0 and 1 that controls the number of LEDs that are activated
Declaration
public float Percentage { get; set; }
Property Value
Type | Description |
---|---|
System.Single |
Methods
GetTopLedForPercentage()
Returns the index of the last LED turned on
Declaration
public int GetTopLedForPercentage()
Returns
Type | Description |
---|---|
System.Int32 |
SetLed(Int32, Boolean)
Set the LED state
Declaration
public void SetLed(int index, bool isOn)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | index | index of the LED |
System.Boolean | isOn |
SetLedBrightness(Double)
Set the brightness to the LED bar graph using PWM
Declaration
public void SetLedBrightness(double brightness)
Parameters
Type | Name | Description |
---|---|---|
System.Double | brightness |
SetLedBrightness(Int32, Single)
Set the brightness of an individual LED when using PWM
Declaration
public void SetLedBrightness(int index, float brightness)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | index | |
System.Single | brightness |
SetPercentage(Single)
Set the percentage of LEDs that are on starting from index 0
Declaration
protected void SetPercentage(float percentage)
Parameters
Type | Name | Description |
---|---|---|
System.Single | percentage | Percentage (Range from 0 - 1) |
StartBlink(Int32, Single, Single)
Starts a blink animation on an individual LED
Declaration
public void StartBlink(int index, float highBrightness = null, float lowBrightness = null)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | index | |
System.Single | highBrightness | |
System.Single | lowBrightness |
StartBlink(Int32, TimeSpan, TimeSpan, Single, Single)
Starts a blink animation on an individual LED
Declaration
public void StartBlink(int index, TimeSpan highBrightnessDuration, TimeSpan lowBrightnessDuration, float highBrightness = null, float lowBrightness = null)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | index | |
TimeSpan | highBrightnessDuration | |
TimeSpan | lowBrightnessDuration | |
System.Single | highBrightness | |
System.Single | lowBrightness |
StartBlink(Single, Single)
Start the Blink animation which sets the brightness of the LED alternating between a low and high brightness setting.
Declaration
public void StartBlink(float highBrightness = null, float lowBrightness = null)
Parameters
Type | Name | Description |
---|---|---|
System.Single | highBrightness | High brigtness. |
System.Single | lowBrightness | Low brightness. |
StartBlink(TimeSpan, TimeSpan, Single, Single)
Start the Blink animation which sets the brightness of the LED alternating between a low and high brightness setting, using the durations provided.
Declaration
public void StartBlink(TimeSpan highBrightnessDuration, TimeSpan lowBrightnessDuration, float highBrightness = null, float lowBrightness = null)
Parameters
Type | Name | Description |
---|---|---|
TimeSpan | highBrightnessDuration | On duration. |
TimeSpan | lowBrightnessDuration | Off duration. |
System.Single | highBrightness | High brigtness. |
System.Single | lowBrightness | Low brightness. |
StartBlinkAsync(TimeSpan, TimeSpan, Single, Single, CancellationToken)
Set LED to blink
Declaration
protected Task StartBlinkAsync(TimeSpan onDuration, TimeSpan offDuration, float highBrightness, float lowBrightness, CancellationToken cancellationToken)
Parameters
Type | Name | Description |
---|---|---|
TimeSpan | onDuration | |
TimeSpan | offDuration | |
System.Single | highBrightness | |
System.Single | lowBrightness | |
CancellationToken | cancellationToken |
Returns
Type | Description |
---|---|
Task |
StartPulse(Int32, Single, Single)
Starts a pulse animation on an individual LED
Declaration
public void StartPulse(int index, float highBrightness = null, float lowBrightness = 0.15F)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | index | |
System.Single | highBrightness | |
System.Single | lowBrightness |
StartPulse(Int32, TimeSpan, Single, Single)
Starts a pulse animation on an individual LED with the specified pulse cycle
Declaration
public void StartPulse(int index, TimeSpan pulseDuration, float highBrightness = null, float lowBrightness = 0.15F)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | index | |
TimeSpan | pulseDuration | |
System.Single | highBrightness | |
System.Single | lowBrightness |
StartPulse(Single, Single)
Start the Pulse animation which gradually alternates the brightness of the LED between a low and high brightness setting.
Declaration
public void StartPulse(float highBrightness = null, float lowBrightness = 0.15F)
Parameters
Type | Name | Description |
---|---|---|
System.Single | highBrightness | |
System.Single | lowBrightness |
StartPulse(TimeSpan, Single, Single)
Start the Pulse animation which gradually alternates the brightness of the LED between a low and high brightness setting, using the durations provided.
Declaration
public void StartPulse(TimeSpan pulseDuration, float highBrightness = null, float lowBrightness = 0.15F)
Parameters
Type | Name | Description |
---|---|---|
TimeSpan | pulseDuration | |
System.Single | highBrightness | |
System.Single | lowBrightness |
StartPulseAsync(TimeSpan, Single, Single, CancellationToken)
Start the Pulse animation which gradually alternates the brightness of the LED between a low and high brightness setting, using the durations provided.
Declaration
protected Task StartPulseAsync(TimeSpan pulseDuration, float highBrightness, float lowBrightness, CancellationToken cancellationToken)
Parameters
Type | Name | Description |
---|---|---|
TimeSpan | pulseDuration | |
System.Single | highBrightness | |
System.Single | lowBrightness | |
CancellationToken | cancellationToken |
Returns
Type | Description |
---|---|
Task |
Stop()
Stops any running animations.
Declaration
public void Stop()
Stop(Int32)
Stops any animation on an individual LED and/or turns it off
Declaration
public void Stop(int index)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | index |