Blink LED
Overview
A short Arduino code to cause an LED to blink. An easy application of the robust and relatively simply programming language.
Parts
-Arduino microcontroller and carrier board
-LiPo battery
-Optional: Light Emitting Diodes (LEDs)
-Optional: 10kOhm resistors
Prepare the breadboard
Not needed if you use the LED that is already on the Nano (i.e. Pin 13)!
Program the Microcontroller
/**
* @file: blinking LED example
* @date: 2/21/2011
*
* @DESCRIPTION
* blinks an LED every 1sec
* use resistor with an LED if not using pin 13
**/
// include additional headers
// none
#define LED_PIN 13 // Pin 13 is an LED on most Arduino boards
//--- Function: Setup ()
void setup ()
{
pinMode (LED_PIN, OUTPUT); // enable pin 13 for digital output
}
//--- Function: loop ()
void loop ()
{
digitalWrite (LED_PIN, HIGH); // turn on the LED
delay (1000); // wait one second (1000 milliseconds)
digitalWrite (LED_PIN, LOW); // turn off the LED
delay (1000); // wait one second
}
Blinking Without Delay
Sometimes you need to do two things at once. For example you might want to blink an LED while reading a button press. In this case, you can't use delay()
, because Arduino pauses your program during the delay()
. If the button is pressed while Arduino is paused waiting for the delay()
to pass, your program will miss the button press.
For more details: https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
Program the Microcontroller
/* Blink without Delay
http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
*/
// constants won't change. Used here to set a pin number :
const int ledPin = 13; // the number of the LED pin
// Variables will change :
int ledState =
LOW; // ledState used to set the LED
// Generally, you should use "unsigned long" for variables that hold time
// The value will quickly become too large for an int to store
unsigned
long previousMillis =
0; // will store last time LED was updated
// constants won't change :
const long interval =
1000; // interval at which to blink (milliseconds)
void
setup()
{
pinMode(ledPin,
OUTPUT); // set the digital pin as output:
}
void
loop()
{
// here is where you'd put code that needs to be running all the time.
// check to see if it's time to blink the LED; that is, if the
// difference between the current time and last time you blinked
// the LED is bigger than the interval at which you want to
// blink the LED.
unsigned
long currentMillis =
millis();
if
(currentMillis - previousMillis >= interval)
{
// save the last time you blinked the LED
previousMillis = currentMillis;
// if the LED is off turn it on and vice-versa:
if
(ledState ==
LOW)
{
ledState =
HIGH;
}
else
{
ledState =
LOW;
}
// set the LED with the ledState of the variable:
digitalWrite(ledPin, ledState);
}
}