Dirt Cheap Arduino LED Light Bar!

25,014

72

60

Posted

Introduction: Dirt Cheap Arduino LED Light Bar!

This instructable was designed for beginners in mind, but advanced users can easily adapt it to fit their needs and wants. It only uses a few common components, so you shouldn't have much trouble putting this together. It's a good waste of 5 minutes with a satisfying result (at least in my experience), and everything is ready for you to adapt and customize. It's super cheap and super simple, requires NO breadboarding, and is a good follow-up to blinking and fading an LED. If you're a beginner who's tired of just using one LED on the Arduino, look here! If you're not yet the owner of a breadboard, stay tuned! If you're still reading this, then stop looking at this infomercial and get on with the project!

Step 1: Gather Your Materials.

There aren't a lot of them, but all of them are needed! You'll need:

-An Arduino
-Some LEDs (I suggest starting with 7, but you can use 14 if you want to!)
-An insulated wire about as long as the Arduino.

At minimum, the wire can be 1 1/2in (or 4cm, for those readers that like the metric system. Go metric!). As proof that it will work, you can insert the wire into the GND pin next to the AREF pin. If the wire can reach Digital I/O pin 0 without much trouble, you're good to go.

Don't worry about the LED's forward voltage, because you'll only be using them in short bursts that won't be enough to fry them. My LEDs were each at around 3FV, or 3 forward volts. This is the common amount for most LEDs. If you do decide to use LEDs with a smaller forward voltage, beware. Also, if you adapt the program sampled here and change the delay speed, you might fry your pretty lights! Be careful! If you DO plan to leave an LED on for a prolonged period of time, a 100ohm resistor connected to it should do the trick.

Step 2: Strip the Wire.

There really isn't much to this step. Take your insulated wire and remove the insulation. If you have pliers, use them and your fingernails. Have patience! It has to be a solid-core wire for this to work. Otherwise, you'll have a lot of tiny strands of metal cluttering your workspace that's a pain to clean up.

If you have a jumper wire set you bought from Radioshack, with the compartment box and color-coded wire lengths, use the larger red one! It is a perfect size for this project, leaving just enough space to form a "hook" around the female header pins to make it stay in place.

Step 3: Form the Wire.

Insert the wire into the GND pin next to the AREF pin so that it's sticking straight up. Now, bend it so it is pointing down, sticking straight out towards you. Finally, bend it one more time 90 degrees, running parallel with the rest of the digital pins to create your ground rail. If you press the wire against the header pins, the protruding LED cathode wires should touch it. It is essential that all the cathodes of the LEDs touch the stripped wire, or else they won't make a complete circuit and therefore won't light up!

Step 4: Insert the LEDs Into the Corresponding Pins.

If you decided to use only 7 LEDs, insert them into each even numbered I/O pin. This means you should have inserted one LED into pins 0, 2, 4, 6, 8, 10, and 12. Remember, the anode (positive lead) is the longer one and is the one that should go into the pin! Leave the cathode (negative lead) hanging outside the pin.

If you plan to use a breadboard, you might want to just jumper the pins directly to the breadboard and insert the LEDs there. However, if you are planning to do so just to make yourself look cool, it's not worth it! It takes forever to insert each wire into each pin on the Arduino and breadboard. Do so only if you have to! (This means if you plan to use imputs to affect the LEDs, breadboard it. If you're content with a simple light bar, leave it as it is.)

If you are doing this project for the first time or plan to use imputs, use 7 LEDs. This will (1) leave room for the imput pins you plan to use, and (2) allow spacing for the LEDs to not bunch up and become a big mess.

Also, if you plan to use 14 LEDs, taking advantage of all of the I/O pins on the Arduino, I recommend breadboarding it as well. Heck, rule of thumb: When in doubt, breadboard it!

Step 5: Download the Program.

Okay, I lied about the downloading part. My computer's not cooperating, so I'm going to have to just copy and paste the programs right into the instructable.

Okay, if you'd like the 7-pin LED bar, copy and paste this into the Arduino IDE:


//Super Simple LED Light Bar with only odd I/O pins!

void setup() { pinMode(0, OUTPUT);
pinMode(2, OUTPUT); pinMode(4, OUTPUT);
pinMode(6, OUTPUT); pinMode(8, OUTPUT);
pinMode(10, OUTPUT); pinMode(12, OUTPUT);
}
void loop() { digitalWrite(12, LOW);
digitalWrite(0, HIGH); delay(100);
digitalWrite(2, HIGH);
digitalWrite(0, LOW);
delay(100);
digitalWrite(4, HIGH);
digitalWrite(2, LOW);
delay(100);
digitalWrite(6, HIGH);
digitalWrite(4, LOW);
delay(100);
digitalWrite(8, HIGH);
digitalWrite(6, LOW);
delay(100);
digitalWrite(10, HIGH);
digitalWrite(8, LOW);
delay(100);
digitalWrite(12, HIGH);
digitalWrite(10, LOW);
delay(100);
digitalWrite(10, HIGH);
digitalWrite(12, LOW);
delay(100);
digitalWrite(8, HIGH);
digitalWrite(10, LOW);
delay(100);
digitalWrite(6, HIGH);
digitalWrite(8, LOW);
delay(100);
digitalWrite(4, HIGH);
digitalWrite(6, LOW);
delay(100);
digitalWrite(2, HIGH);
digitalWrite(4, LOW);
delay(100);
digitalWrite(2, LOW);
}

/* If you'd like the light to "bounce, cut and paste this
into the voidloop() function, right between digitalWrite(10, LOW);
and the final bracket.

digitalWrite(10, HIGH);
digitalWrite(12, LOW);
delay(100);
digitalWrite(8, HIGH);
digitalWrite(10, LOW);
delay(100);
digitalWrite(6, HIGH);
digitalWrite(8, LOW);
delay(100);
digitalWrite(4, HIGH);
digitalWrite(6, LOW);
delay(100);
digitalWrite(2, HIGH);
digitalWrite(4, LOW);
delay(100);
digitalWrite(2, LOW);

*/

And if you'd like the 14 LED Light Bar, copy and paste this program into the Arduino IDE:

//LED Light Bar; all I/O pins used!

void setup() { pinMode(0, OUTPUT);
pinMode(1, OUTPUT); pinMode(2, OUTPUT);
pinMode(3, OUTPUT); pinMode(4, OUTPUT);
pinMode(5, OUTPUT); pinMode(6, OUTPUT);
pinMode(7, OUTPUT); pinMode(8, OUTPUT);
pinMode(9, OUTPUT); pinMode(10, OUTPUT);
pinMode(11, OUTPUT); pinMode(12, OUTPUT);
pinMode(13, OUTPUT);}

void loop() { digitalWrite(0, HIGH);
delay(100); digitalWrite(1, HIGH);
digitalWrite(0, LOW); delay(100);
digitalWrite(2, HIGH); digitalWrite(1, LOW);
delay(100); digitalWrite(3, HIGH);
digitalWrite(2, LOW); delay(100);
digitalWrite(4, HIGH); digitalWrite(3, LOW);
delay(100); digitalWrite(6, HIGH);
digitalWrite(4, LOW); delay(100);
digitalWrite(7, HIGH); digitalWrite(6, LOW);
delay(100); digitalWrite(8, HIGH);
digitalWrite(7, LOW); delay(100);
digitalWrite(9, HIGH); digitalWrite(8, LOW);
delay(100); digitalWrite(10, HIGH);
digitalWrite(9, LOW); delay(100);
digitalWrite(11, HIGH); digitalWrite(10, LOW);
delay(100); digitalWrite(12, HIGH);
digitalWrite(11, LOW); delay(100);
digitalWrite(13, HIGH); digitalWrite(12, LOW);
delay(100); digitalWrite(13, LOW);
}

Step 6: Customize!

Customize it! This design is very easily altered. You can replace LEDs with different colors, change the delay function to make the line go slower or faster, or even go very slowly at first, then slingshot forward! It might take some fine-tuning when you first hook up the program to the Arduino. You'll know an LED needs to be adjusted to touch the ground wire if it doesn't turn on.

Have fun!

Share

Recommendations

  • Epilog Challenge 9

    Epilog Challenge 9
  • Sew Warm Contest 2018

    Sew Warm Contest 2018
  • Gluten Free Challenge

    Gluten Free Challenge
user

We have a be nice policy.
Please be positive and constructive.

Tips

Questions

60 Comments

your program stop at the point (

And if you'd like the 14 LED Light Bar, copy and paste this program into the Arduino IDE:) it say missing terminating ' character

what gauge is the wire and any recommendations on where to buy it?

Ive always read you should always include resistors not just to protect the LEDs bit the Arduino board as well. Just sayin

Hey, can someone help me do a "bar graph" effect... that is, turn on each led in order on by one (and stay on) until the last led goes on, then they all turn back off in the order they turned on?

I think this is the link your looking for https://www.instructables.com/id/Arduino-Knight-Rider-With-LED-Bargraph-/

Great instructable deffinatley following u

Grow up.

I think you misunderstood who he was saying was a 13-year-old teen, though to be fair you you don't seem to pay much attention to what other people say so I can understand why you were confused.

Voltage drop when talking about LED's (and other passive components) is the voltage at which internal resistance begins to rise. As more voltage is applied the resistance will increase and the internal circuits will begin to heat up. If the voltage goes too high for too long, the internal components will get hot enough to melt, and that's when the LED burns out. An LED with a 3v drop can usually handle up to 3.5v or so for extended periods of time. Above that they will eventually burn out, with higher voltages causing it to burn out faster.

Ohm's law is I=V/R, or Amps = Volts/Ohms.

First of all, source amps don't matter except as far as resistor maximum capacity. For example, you don't want to use a 2 amp resistor with a 20 amp source - it will fry the resistor and then your whole project and possibly kill you, because 20 amps is way more than necessary to the job.

So, if we have a 5v source and we want to get that down to 3v @ 20ma, then we need to add enough resistance to drop 2 volts at 20ma. Thus:

Ohms = 2V/0.02a

Which is 100.

To run a 3v LED at 10ma, you need a 200 ohm resistor (2v/0.01a=200).

To run a 3v LED at 20ma from a 9v source you need a 300 ohm resistor (6v/0.02=300).

All of this is in the linked instructable you wouldn't read because it was referred to you by a 13 year old. Who's grown up here?

Hi,
i have changed the code so you can use the pot for 14 led`s
here`s the code, have fun!!

int sensorPin = A0; // select the input pin for the potentiometer
int ledPin = 13; // select the pin for the LED
int sensorValue = 0; // variable to store the value coming from the sensor


void setup() {
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
pinMode(3, OUTPUT);
pinMode(2, OUTPUT);
pinMode(1, OUTPUT);
pinMode(0, OUTPUT);
}

void loop() {
sensorValue = analogRead(sensorPin);
digitalWrite(13, HIGH);
delay(sensorValue);
sensorValue = analogRead(sensorPin);
digitalWrite(12, HIGH);
delay(sensorValue);
sensorValue = analogRead(sensorPin);
digitalWrite(13, LOW);
digitalWrite(11, HIGH);
delay(sensorValue);
sensorValue = analogRead(sensorPin);
digitalWrite(12, LOW);
digitalWrite(10, HIGH);
delay(sensorValue);
sensorValue = analogRead(sensorPin);
digitalWrite(11, LOW);
digitalWrite(9, HIGH);
delay(sensorValue);
sensorValue = analogRead(sensorPin);
digitalWrite(10, LOW);
digitalWrite(8, HIGH);
delay(sensorValue);
sensorValue = analogRead(sensorPin);
digitalWrite(9, LOW);
digitalWrite(7, HIGH);
delay(sensorValue);
sensorValue = analogRead(sensorPin);
digitalWrite(8, LOW);
digitalWrite(6, HIGH);
delay(sensorValue);
sensorValue = analogRead(sensorPin);
digitalWrite(7, LOW);
digitalWrite(6, HIGH);
delay(sensorValue);
sensorValue = analogRead(sensorPin);
digitalWrite(6, LOW);
digitalWrite(5, HIGH);
delay(sensorValue);
sensorValue = analogRead(sensorPin);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
delay(sensorValue);
sensorValue = analogRead(sensorPin);
digitalWrite(4, LOW);
digitalWrite(3, HIGH);
delay(sensorValue);
sensorValue = analogRead(sensorPin);
digitalWrite(3, LOW);
digitalWrite(2, HIGH);
delay(sensorValue);
sensorValue = analogRead(sensorPin);
digitalWrite(2, LOW);
digitalWrite(1, HIGH);
delay(sensorValue);
sensorValue = analogRead(sensorPin);
digitalWrite(1, LOW);
digitalWrite(0, HIGH);
delay(sensorValue);
sensorValue = analogRead(sensorPin);
digitalWrite(1, LOW);
digitalWrite(0, LOW);


}

You can double that if you have 2 led's per pin, one working when its a high input, one when its an high output, and both off when the pin is set to low. when you can control atleast 37 led's and 1 push switch you could make a roulette game or something similar.
only a quick thought if it helps or gives you any ideas.