LED Sequencing on the Arduino
Today's examples are available here
Here are a couple of LED resistor calculators:
But for most of our LEDs, which are 1.8 volts (called forward voltage) and the Arduino's 5v power, and a typical amperage for the LED of between 20-30 miliamps, a resistor between 120 and 220 ohm will do nicely. Larger resistors will lead to dimmer LEDs, smaller will cause the LED to overheat and sometimes literally burst.
Arduino Example Code
Cut'n Paste or Download Examples
Download playing_with_leds_01.txt file
/* Playing with LEDs 01
* Light up several LEDs
*/
// Set variables for the pins which will be connected to the LEDs
int ledPin1 = 13;
int ledPin2 = 12;
int ledPin3 = 11;
int ledPin4 = 10;
int ledPin5 = 9;
int ledPin6 = 8;
int ledPin7 = 7;
int ledPin8 = 6;
int ledPin9 = 5;
int ledPin10 =4;
// setup() is required by the Arduino.
// This setup() sets the pin modes on the Arduino so they will output
// some voltage when we tell them to
void setup()
{
pinMode(ledPin1, OUTPUT); // pinMode() is a command for the Arduino
pinMode(ledPin2, OUTPUT); // it takes two arguments, the first to specify which pin
pinMode(ledPin3, OUTPUT); // and the second to specify whether that pin is going to
pinMode(ledPin4, OUTPUT); // OUTPUT voltage or look for INPUT.
pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledPin8, OUTPUT);
pinMode(ledPin9, OUTPUT);
pinMode(ledPin10, OUTPUT);
}
// loop() is required by the Arduino.
// This loop will turn on the ten LED's then turn them off
void loop()
{
// Turn on LEDs
digitalWrite(ledPin1, HIGH); // digitalWrite() is a command for the Arduino
delay(1000); // it takes two arguments, the first to specify which pin
digitalWrite(ledPin2, HIGH); // and the second to specify whether the pin is outputing
delay(1000); // voltage (HIGH) or no voltage (LOW).
digitalWrite(ledPin3, HIGH);
delay(1000);
digitalWrite(ledPin4, HIGH);
delay(1000);
digitalWrite(ledPin5, HIGH);
delay(1000);
digitalWrite(ledPin6, HIGH);
delay(1000);
digitalWrite(ledPin7, HIGH);
delay(1000);
digitalWrite(ledPin8, HIGH);
delay(1000);
digitalWrite(ledPin9, HIGH);
delay(1000);
digitalWrite(ledPin10, HIGH);
delay(1000);
// Turn off LEDs
digitalWrite(ledPin1, LOW);
delay(1000);
digitalWrite(ledPin2, LOW);
delay(1000);
digitalWrite(ledPin3, LOW);
delay(1000);
digitalWrite(ledPin4, LOW);
delay(1000);
digitalWrite(ledPin5, LOW);
delay(1000);
digitalWrite(ledPin6, LOW);
delay(1000);
digitalWrite(ledPin7, LOW);
delay(1000);
digitalWrite(ledPin8, LOW);
delay(1000);
digitalWrite(ledPin9, LOW);
delay(1000);
digitalWrite(ledPin10, LOW);
delay(1000);
}
Download playing_with_leds_02.txt file
/* Playing with LEDs 02
* Light up several LEDs
* Add variable for delay
*/
// Set variables
int ledPin1 = 13;
int ledPin2 = 12;
int ledPin3 = 11;
int ledPin4 = 10;
int ledPin5 = 9;
int ledPin6 = 8;
int ledPin7 = 7;
int ledPin8 = 6;
int ledPin9 = 5;
int ledPin10 =4;
// Add a variable to hold the delay time
int myDelay = 50;
// Setup
void setup()
{
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledPin8, OUTPUT);
pinMode(ledPin9, OUTPUT);
pinMode(ledPin10, OUTPUT);
}
// Loop
void loop()
{
digitalWrite(ledPin1, HIGH);
delay(myDelay); //use myDelay instead of a number. Easier to change!
digitalWrite(ledPin2, HIGH);
delay(myDelay);
digitalWrite(ledPin3, HIGH);
delay(myDelay);
digitalWrite(ledPin4, HIGH);
delay(myDelay);
digitalWrite(ledPin5, HIGH);
delay(myDelay);
digitalWrite(ledPin6, HIGH);
delay(myDelay);
digitalWrite(ledPin7, HIGH);
delay(myDelay);
digitalWrite(ledPin8, HIGH);
delay(myDelay);
digitalWrite(ledPin9, HIGH);
delay(myDelay);
digitalWrite(ledPin10, HIGH);
delay(myDelay);
digitalWrite(ledPin1, LOW);
delay(myDelay);
digitalWrite(ledPin2, LOW);
delay(myDelay);
digitalWrite(ledPin3, LOW);
delay(myDelay);
digitalWrite(ledPin4, LOW);
delay(myDelay);
digitalWrite(ledPin5, LOW);
delay(myDelay);
digitalWrite(ledPin6, LOW);
delay(myDelay);
digitalWrite(ledPin7, LOW);
delay(myDelay);
digitalWrite(ledPin8, LOW);
delay(myDelay);
digitalWrite(ledPin9, LOW);
delay(myDelay);
digitalWrite(ledPin10, LOW);
delay(myDelay);
}
Download playing_with_leds_03.txt file
/* Playing with LEDs 03
* Light up several LEDs
* Add delay
* Add fancy sequencing, hardcoded
*/
// Set variables
int ledPin1 = 13;
int ledPin2 = 12;
int ledPin3 = 11;
int ledPin4 = 10;
int ledPin5 = 9;
int ledPin6 = 8;
int ledPin7 = 7;
int ledPin8 = 6;
int ledPin9 = 5;
int ledPin10 =4;
int myDelay = 50;
// Setup
void setup()
{
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledPin8, OUTPUT);
pinMode(ledPin9, OUTPUT);
pinMode(ledPin10, OUTPUT);
}
// Loop
void loop()
{
// --------------------------- Turn row on
digitalWrite(ledPin1, HIGH);
delay(myDelay);
digitalWrite(ledPin2, HIGH);
delay(myDelay);
digitalWrite(ledPin3, HIGH);
delay(myDelay);
digitalWrite(ledPin4, HIGH);
delay(myDelay);
digitalWrite(ledPin5, HIGH);
delay(myDelay);
digitalWrite(ledPin6, HIGH);
delay(myDelay);
digitalWrite(ledPin7, HIGH);
delay(myDelay);
digitalWrite(ledPin8, HIGH);
delay(myDelay);
digitalWrite(ledPin9, HIGH);
delay(myDelay);
digitalWrite(ledPin10, HIGH);
delay(myDelay);
// --------------------------- Turn row off
digitalWrite(ledPin1, LOW);
delay(myDelay);
digitalWrite(ledPin2, LOW);
delay(myDelay);
digitalWrite(ledPin3, LOW);
delay(myDelay);
digitalWrite(ledPin4, LOW);
delay(myDelay);
digitalWrite(ledPin5, LOW);
delay(myDelay);
digitalWrite(ledPin6, LOW);
delay(myDelay);
digitalWrite(ledPin7, LOW);
delay(myDelay);
digitalWrite(ledPin8, LOW);
delay(myDelay);
digitalWrite(ledPin9, LOW);
delay(myDelay);
digitalWrite(ledPin10, LOW);
delay(myDelay);
// Turn on in reverse
digitalWrite(ledPin10, HIGH);
delay(myDelay);
digitalWrite(ledPin9, HIGH);
delay(myDelay);
digitalWrite(ledPin8, HIGH);
delay(myDelay);
digitalWrite(ledPin7, HIGH);
delay(myDelay);
digitalWrite(ledPin6, HIGH);
delay(myDelay);
digitalWrite(ledPin5, HIGH);
delay(myDelay);
digitalWrite(ledPin4, HIGH);
delay(myDelay);
digitalWrite(ledPin3, HIGH);
delay(myDelay);
digitalWrite(ledPin2, HIGH);
delay(myDelay);
digitalWrite(ledPin1, HIGH);
delay(myDelay);
// --------------------------- Turn off in reverse
digitalWrite(ledPin10, LOW);
delay(myDelay);
digitalWrite(ledPin9, LOW);
delay(myDelay);
digitalWrite(ledPin8, LOW);
delay(myDelay);
digitalWrite(ledPin7, LOW);
delay(myDelay);
digitalWrite(ledPin6, LOW);
delay(myDelay);
digitalWrite(ledPin5, LOW);
delay(myDelay);
digitalWrite(ledPin4, LOW);
delay(myDelay);
digitalWrite(ledPin3, LOW);
delay(myDelay);
digitalWrite(ledPin2, LOW);
delay(myDelay);
digitalWrite(ledPin1, LOW);
delay(myDelay);
// --------------------------- Turn on inside out
digitalWrite(ledPin5, HIGH);
digitalWrite(ledPin6, HIGH);
delay(myDelay);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin7, HIGH);
delay(myDelay);
digitalWrite(ledPin8, HIGH);
digitalWrite(ledPin3, HIGH);
delay(myDelay);
digitalWrite(ledPin9, HIGH);
digitalWrite(ledPin2, HIGH);
delay(myDelay);
digitalWrite(ledPin10, HIGH);
digitalWrite(ledPin1, HIGH);
delay(myDelay);
// --------------------------- Turn off outside in
digitalWrite(ledPin10, LOW);
digitalWrite(ledPin1, LOW);
delay(myDelay);
digitalWrite(ledPin9, LOW);
digitalWrite(ledPin2, LOW);
delay(myDelay);
digitalWrite(ledPin8, LOW);
digitalWrite(ledPin3, LOW);
delay(myDelay);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin4, LOW);
delay(myDelay);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin5, LOW);
delay(myDelay);
}
Download playing_with_leds_04.txt file
/* Playing with LEDs 04
* Light up several LEDs
* Add delay
* Fancy sequencing, hardcoded
* Do some repeat loops with a "for" statement
*/
// Set variables
int ledPin1 = 13;
int ledPin2 = 12;
int ledPin3 = 11;
int ledPin4 = 10;
int ledPin5 = 9;
int ledPin6 = 8;
int ledPin7 = 7;
int ledPin8 = 6;
int ledPin9 = 5;
int ledPin10 =4;
int myDelay = 50;
// Setup
void setup()
{
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledPin8, OUTPUT);
pinMode(ledPin9, OUTPUT);
pinMode(ledPin10, OUTPUT);
}
// Loop
void loop()
{
// --------------------------- Turn row on
digitalWrite(ledPin1, HIGH);
delay(myDelay);
digitalWrite(ledPin2, HIGH);
delay(myDelay);
digitalWrite(ledPin3, HIGH);
delay(myDelay);
digitalWrite(ledPin4, HIGH);
delay(myDelay);
digitalWrite(ledPin5, HIGH);
delay(myDelay);
digitalWrite(ledPin6, HIGH);
delay(myDelay);
digitalWrite(ledPin7, HIGH);
delay(myDelay);
digitalWrite(ledPin8, HIGH);
delay(myDelay);
digitalWrite(ledPin9, HIGH);
delay(myDelay);
digitalWrite(ledPin10, HIGH);
delay(myDelay);
// --------------------------- Turn row off
digitalWrite(ledPin1, LOW);
delay(myDelay);
digitalWrite(ledPin2, LOW);
delay(myDelay);
digitalWrite(ledPin3, LOW);
delay(myDelay);
digitalWrite(ledPin4, LOW);
delay(myDelay);
digitalWrite(ledPin5, LOW);
delay(myDelay);
digitalWrite(ledPin6, LOW);
delay(myDelay);
digitalWrite(ledPin7, LOW);
delay(myDelay);
digitalWrite(ledPin8, LOW);
delay(myDelay);
digitalWrite(ledPin9, LOW);
delay(myDelay);
digitalWrite(ledPin10, LOW);
delay(myDelay);
// --------------------------- Turn on in reverse
digitalWrite(ledPin10, HIGH);
delay(myDelay);
digitalWrite(ledPin9, HIGH);
delay(myDelay);
digitalWrite(ledPin8, HIGH);
delay(myDelay);
digitalWrite(ledPin7, HIGH);
delay(myDelay);
digitalWrite(ledPin6, HIGH);
delay(myDelay);
digitalWrite(ledPin5, HIGH);
delay(myDelay);
digitalWrite(ledPin4, HIGH);
delay(myDelay);
digitalWrite(ledPin3, HIGH);
delay(myDelay);
digitalWrite(ledPin2, HIGH);
delay(myDelay);
digitalWrite(ledPin1, HIGH);
delay(myDelay);
// --------------------------- Turn off in reverse
digitalWrite(ledPin10, LOW);
delay(myDelay);
digitalWrite(ledPin9, LOW);
delay(myDelay);
digitalWrite(ledPin8, LOW);
delay(myDelay);
digitalWrite(ledPin7, LOW);
delay(myDelay);
digitalWrite(ledPin6, LOW);
delay(myDelay);
digitalWrite(ledPin5, LOW);
delay(myDelay);
digitalWrite(ledPin4, LOW);
delay(myDelay);
digitalWrite(ledPin3, LOW);
delay(myDelay);
digitalWrite(ledPin2, LOW);
delay(myDelay);
digitalWrite(ledPin1, LOW);
delay(myDelay);
// ------------------------------- Use a "for" loop to turn on
// ------------------------------- LEDs in a pattern 6 times in
// ------------------------------- a row.
for(int i=0; i<6; i=i+1) {
// --------------------------- Turn on inside out
digitalWrite(ledPin5, HIGH);
digitalWrite(ledPin6, HIGH);
delay(myDelay);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin7, HIGH);
delay(myDelay);
digitalWrite(ledPin8, HIGH);
digitalWrite(ledPin3, HIGH);
delay(myDelay);
digitalWrite(ledPin9, HIGH);
digitalWrite(ledPin2, HIGH);
delay(myDelay);
digitalWrite(ledPin10, HIGH);
digitalWrite(ledPin1, HIGH);
delay(myDelay);
// --------------------------- Turn off outside in
digitalWrite(ledPin10, LOW);
digitalWrite(ledPin1, LOW);
delay(myDelay);
digitalWrite(ledPin9, LOW);
digitalWrite(ledPin2, LOW);
delay(myDelay);
digitalWrite(ledPin8, LOW);
digitalWrite(ledPin3, LOW);
delay(myDelay);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin4, LOW);
delay(myDelay);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin5, LOW);
delay(myDelay);
}
// ------------------------------- Use another "for" loop to turn
// ------------------------------- on LEDs in a pattern 6 times in
// ------------------------------- a row.
for(int i=0; i<6; i=i+1) {
// --------------------------- Turn on outside in
digitalWrite(ledPin10, HIGH);
digitalWrite(ledPin1, HIGH);
delay(myDelay);
digitalWrite(ledPin9, HIGH);
digitalWrite(ledPin2, HIGH);
delay(myDelay);
digitalWrite(ledPin8, HIGH);
digitalWrite(ledPin3, HIGH);
delay(myDelay);
digitalWrite(ledPin7, HIGH);
digitalWrite(ledPin4, HIGH);
delay(myDelay);
digitalWrite(ledPin6, HIGH);
digitalWrite(ledPin5, HIGH);
delay(myDelay);
// --------------------------- Turn off outside in
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin5, LOW);
delay(myDelay);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin4, LOW);
delay(myDelay);
digitalWrite(ledPin8, LOW);
digitalWrite(ledPin3, LOW);
delay(myDelay);
digitalWrite(ledPin9, LOW);
digitalWrite(ledPin2, LOW);
delay(myDelay);
digitalWrite(ledPin10, LOW);
digitalWrite(ledPin1, LOW);
delay(myDelay);
}
}
/* Eye-swipe HI
* Setup 6 LEDs in a row and wave back and forth
* to see the word HI spelled out
*/
// Set variables
int ledPin1 = 13;
int ledPin2 = 12;
int ledPin3 = 11;
int ledPin4 = 10;
int ledPin5 = 9;
int ledPin6 = 8;
int myDelay = 15;
// Setup
void setup()
{
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
}
// Loop
void loop()
{
// -------------------------- H
//H - column 1
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin5, HIGH);
digitalWrite(ledPin6, HIGH);
delay(myDelay);
//H - column 2
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
delay(myDelay);
//H - column 3
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin5, HIGH);
digitalWrite(ledPin6, HIGH);
delay(myDelay);
// -------------------------- Space
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
delay(myDelay);
// -------------------------- I
// I column 1
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, HIGH);
delay(myDelay);
//I column 2
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin5, HIGH);
digitalWrite(ledPin6, HIGH);
delay(myDelay);
// I column 3
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, HIGH);
delay(myDelay);
// -------------------------- Space
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
// -------------------------- Extended delay
// -------------------------- before looping
delay(myDelay*10);
}
/* Variable Brightness LEDs
* Done with three of Arduino's Pulse Width Modulation (PWM)
* pins (9,10,11)
*/
// Set three pin variables for the three PWM pins
int pwmPin1 = 11;
int pwmPin2 = 10;
int pwmPin3 = 9;
// Set a variable for the intial value for the PWM
int pwmVal1 = 0;
int pwmVal2 = 0;
int pwmVal3 = 0;
// Setup
// Set PWM pins to OUTPUT
void setup()
{
pinMode(pwmPin1, OUTPUT);
pinMode(pwmPin2, OUTPUT);
pinMode(pwmPin3, OUTPUT);
}
// Loop
void loop()
{
// analogWrite's range runs from 0 to 255, so when any of
// our values reaches maximum, reset it to 0
if(pwmVal1 >= 255) {
pwmVal1 = 0;
}
if(pwmVal2 >= 255) {
pwmVal2 = 0;
}
if(pwmVal3 >= 255) {
pwmVal3 = 0;
}
// Set the first PWM pin to pwmVal1
analogWrite(pwmPin1,pwmVal1);
// Increment pwmVal1 by 1
pwmVal1=pwmVal1+1;
// Same as before...
analogWrite(pwmPin2,pwmVal2);
// ... but increment pwmVal2 by 5 instead of 1
pwmVal2=pwmVal2+5;
// Same as before...
analogWrite(pwmPin3,pwmVal3);
// ... but increment pwmVal3 by 10 instead of 1 or 5
pwmVal3=pwmVal3+10;
// Put in a short delay to see the effect
delay(10);
}
/* Variable Brightness LEDs 2
* Done with three of Arduino's Pulse Width Modulation (PWM)
* pins (9,10,11)
* This time we'll use a direction changing variable to
* change whether the pwmVal's will go up or down in the Loop
*/
// Set three pin variables for the three PWM pins
int pwmPin1 = 11;
int pwmPin2 = 10;
int pwmPin3 = 9;
// Set a variable for the intial value for the PWM
int pwmVal1 = 0;
int pwmVal2 = 0;
int pwmVal3 = 0;
// Set a variable for the inital direction (increment or decrement) for the PWM
// A value of 1 will increment pwmVal's and a value of -1 will decrement pwmVal's.
int upDown1 = 1;
int upDown2 = 1;
int upDown3 = 1;
// Setup
// Set PWM's to OUTPUT
void setup()
{
pinMode(pwmPin1, OUTPUT);
pinMode(pwmPin2, OUTPUT);
pinMode(pwmPin3, OUTPUT);
}
//Loop
void loop()
{
// analogWrite's range runs from 0 to 255, so when any of
// our values reaches maximum, instead of reseting it to 0
// we'll change the variable upDown to -1. This will cause
// pwmVal's to get smaller instead of bigger.
if(pwmVal1 >= 255) {
upDown1 = -1;
}
// Conversely, when it reaches a minimum (0), set the upDown to 1.
// This will cause pwmVal's to get bigger instead of smaller.
if(pwmVal1 <= 0) {
upDown1 = 1;
}
// Same process for all pwmVal's (pwmVal2, pwmVal3)
if(pwmVal2 >= 255) {
upDown2 = -1;
}
if(pwmVal2 <= 0) {
upDown2 = 1;
}
if(pwmVal3 >= 255) {
upDown3 = -1;
}
if(pwmVal3 <= 0) {
upDown3 = 1;
}
// Now set the pwmPins...
analogWrite(pwmPin1,pwmVal1);
// ... and depending on whether upDown is 1 or -1, increment
// or decrement pwmVal's
pwmVal1 = pwmVal1 + (1 * upDown1);
analogWrite(pwmPin2,pwmVal2);
pwmVal2 = pwmVal2 + (5 * upDown2);
analogWrite(pwmPin3,pwmVal3);
pwmVal3 = pwmVal3 + (10 * upDown3);
// Delay a bit before looping
delay(10);
}