Instructables
Picture of 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!
 
Remove these adsRemove these ads by Signing Up

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.
1-40 of 58Next »
quadrizone2 years ago
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 http://www.instructables.com/id/Arduino-Knight-Rider-With-LED-Bargraph-/

Great instructable deffinatley following u
tigerbomb83 years ago
you should really have some resistors in there
ForgerOfPie (author)  tigerbomb83 years ago
The LEDs are on for only a fraction of a second, and they haven't blown up yet on mine. I left it on for 6 hours and they work great. However, if you plan to slow down and keep an LED lit for a prolonged period of time, use a 100 ohm resistor.
I never used one of these boards but reading their website it seems the outputs are 5 volts so are you sure LEDs only need 100 Ohms at 5 volts? I guess the LEDs you're using are fairly powerful ones. They sure look it. Plain old LEDs at 5 volts need about 330 Ohms to limit the current they get.
ForgerOfPie (author)  pfred23 years ago
I used http://ledcalculator.net/. I put the power supply voltage at 5, the LED voltage drop at 3, and the LED current rating at 20. There was only 1 LED, and it came up with 100 ohms, so that's what I posted here.
I don't understand what , "the LED voltage drop at 3" means. Does that mean you wanted to run the LED at 3 volts or putting the LED in circuit would drop the voltage by 3 volts?

20ma is higher than many LEDs can handle. Ones that need 330 Ohm resistors typically use around 10ma.

What resistor you need is determined by an individual LEDs current rating. That value does vary depending on the particular LED you are using. So unless you specify what current LEDs to use you cannot really specify what current limiting resistor is needed either.

Must be why there is that online LED calculator you used don't you think?
ForgerOfPie (author)  pfred23 years ago
Why would you say that? I already know why you would, but I'd like you to say it.
ForgerOfPie (author)  pfred23 years ago
I'm saying it because I think you need to know the basic information of LEDs and how they work before you start telling us about how much I'm wrong. For your information, most LEDs have a current rating of 20ma, a voltage drop of 3~, and I assume you don't know what Ohm's law is, since I don't see that you demonstrate knowledge of how resistance, voltage, and current are related. It might be hard to take this seriously when it's coming from a dyslexic 13-year-old teen whose parents are divorced and he's been labelled a nerd more times than he can count, but that's what I think.

I would also appreciate if anybody didn't take sides in this argument, because it isn't one.
Grow up.
bigjeff5 pfred22 years ago
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?
markie2 years ago
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.
Cool, I got bored after 5 leds... :)
help to run program after uploading, i'm a newbie
is not work,
kevinrams2 years ago
Thanks I just got my first Arduino yesterday. I did the blink test first and this instructable as my first 'project' Nice and simple in construction and understanding the code. Keep em' coming.
cool!!
Can you send me the codefor the pot so I can very the speed
/*
Put a LED on pin 13 and connect the other pin to ground
" " " " " 12 " " " " " " "
" " " " " 11 " " " " " " "
" " " " " 10 " " " " " " "
" " " " " 9 " " " " " " "
" " " " " 8 " " " " " " "
" " " " " 7 " " " " " " "

Put the center pin of the potentiometer to analog pin 0
Put a side pin of the potentiometer (either one) to ground
The other side pin to +5V
*/


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);
}

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(7, LOW);


}


alexw21503 years ago
Cool, I did this then added a variable resistor, to change the speed you I could also put the leds on the analog pins and made them fade in and out.
ForgerOfPie (author)  alexw21503 years ago
Um... the "analog in" pins are made for taking analog INPUTS, not outputs. The PWM pins act as analog output pins. I think you knew that, just got mixed up a bit. Don't worry, I'm dyslexic, it happens to me all the time. ;-)
True, you can also do this http://www.arduino.cc/en/Tutorial/AnalogInputPins
Thx a lot
can you add resistors and add a breadboard to put it on
Yup. Would you like a diagram of how to do that?
dudleyjohn3 years ago
I like this instructable. I ran an LED without a resistor (on flash) for about an hour with no burnout. I assume the life of the LED was being shortened, but since this was not a permanent device, who cares. btw- it's "input" Good job!
Djandco3 years ago
Despite the rather silly people who prefer to ridicule rather than keep their mouth shut I appreciate the time and effort people like yourself, who take time to create an instructable.
We all start somewhere and like myself, we learn from each other.
I have just started on the journey so lets see where it takes us :-)
ForgerOfPie (author)  Djandco3 years ago
Gracias, mi amigo.
what is the code going to do a larson scanner hopefully
ForgerOfPie (author)  wunderdog3173 years ago
The code is on step 5. If you want to make it "bounce" with 7 LEDs, I've already included that, but if you're going to use 14 LEDs, I'll have to make time to do that, since I haven't already. Just one more thing on the to-do list.
Teslaling3 years ago
I don't mean to be rude, but I only count 7 LEDs.

Other than that, great instructable! (5*)
I want to know what they mean by, "Dirt cheap" in the title.

Like you I say, other than that, great instructable!
ForgerOfPie (author)  pfred23 years ago
Dirt cheap is a phrase that means "little to no cost." I bought all of the LEDs for about $1. The only other component is a wire, and that I scrounged from my busted radio.

(By the way, if you want to know the exact cost of the LEDs, it was $1.05. I got each one for 15 cents.)
So the UNO was free?
I think that TheUselessPerson was implying that anybody that has an Arduino can make a LED Light Bar very cheaply.
Well when UNOs sprout on trees here maybe I'll have one too? Until that day arrives I'm going to have to just think globally and drink locally.
ForgerOfPie (author)  pfred23 years ago
Look, this was meant as a simple beginner's project for a person that has just bought an Arduino. I know that MY experience with the Arduino was that I blinked an LED, I faded an LED, and I set the Arduino down for about 3 months. I didn't want that to happen with others, so I made this really simple project.

And if you're trying to be a smart-mouth (or smart-text, whichever you prefer,) please stop. I mean that in the nicest possible way.
Do you?
1-40 of 58Next »