ArduinoLibs
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Blinking LED Example

The BlinkLED class provides support logic for blinking a LED connected to an output pin. The traditional way to blink a LED uses a delay loop:

void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}

The problem with this code is that the entire application is blocked during the delay(). No other activities can be serviced. BlinkLED provides a re-entrant timer-based implementation that is simple to use in any application and which won't block other activities.

We start this example by including the BlinkLED class and instantiating an object instance:

#include <BlinkLED.h>
BlinkLED statusBlink(13, 70, 930);

In this example we have specified that the LED is on pin D13, the LED should be on for 70 milliseconds, and off for 930 milliseconds. This will cause the status LED to "strobe" once per second. The LED will be initially off for 930 milliseconds after device reset. To start with the LED on, use the following initialization code instead:

BlinkLED statusBlink(13, 70, 930, true);

The remaining code we need is a call to BlinkLED::loop() every time around the main application loop:

void loop() {
statusBlink.loop();
}

As can be seen, BlinkLED simplifies the process of blinking a LED quite considerably. It is also possible to pause() and resume() the blinking. This is useful in applications where a blinking LED indicates a certain state such as an error condition or a long-running operation that is in progress; with the LED off at other times. The on/off blink rate can be modified at runtime using BlinkLED::setBlinkRate(), and the LED can be set to a specific value using BlinkLED::setState().

The full source code for the example follows:

/*
Blink the status LED using the BlinkLED utility class.
This example is placed into the public domain.
*/
#include <BlinkLED.h>
BlinkLED statusBlink(13, 70, 930);
void setup() {}
void loop() {
statusBlink.loop();
}