Introduction: Realistic Flickering Flame Effect With Arduino and LED's

In this project we will use 3 LED's and an Arduino to create a realistic fire effect that could be used in a diorama, model railway or a fake fireplace in your home or put one inside a frosted glass jar or tube and no-one would know it wasn't a real candle inside.

This is a really simple project suited to beginners.

Step 1: Step 1 - Wire Up the LED's

Wire up 3 LED's. Use 2 x Diffused Yellow and 1 x Diffused RED. You can increase the number of LED's if you wanted a larger or brighter display. Consider the use of transistors if your amperage will go over that which can be supplied by the Arduino.

Use resistors that suit your particular type of LED.

Step 2: Enter the Code

Enter this code:

// LED Fire Effect

int ledPin1 = 10;
int ledPin2 = 9;
int ledPin3 = 11;

void setup()
{
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
}

void loop() {
analogWrite(ledPin1, random(120)+135);
analogWrite(ledPin2, random(120)+135);
analogWrite(ledPin3, random(120)+135);
delay(random(100));
}

Step 3: Upload and Run

Upload the code to the Arduino and run it. You will now have a pretty realistic flame/fire effect from the LED's. Bounce the light off a white card or a mirror to achieve the full effect.

Step 4: Video of the Effect

Video of the effect. The colours and the effect don't show up very well in the video. In real life it is a very effective flame effect. Give it a try.


Comments

author
rastita made it!(author)2014-04-04

Hi! thanks you very much... i was coding something very complex and you gave us a very simple but efective candle efect ;)

Instead of a full Arduino, i used an ATTiny85, and added a swich...

Thanks a lot!

2014-04-05 00.30.41.jpg2014-04-05 00.30.09.jpg
author
LightsAction made it!(author)2015-09-17

Do you have a circuit diagram by any chance?

author
metalhead8711 made it!(author)2015-08-12

hi rastita. this is a very awesome project you created. im interested how you wired it. it. code uses two leds but i see four. lol unless the others are just there. i see you connected leds with resistors on pins 5 and 6. your battery case looks like it takes two 1.5V batteries. AA or AAA? truly and awesome project.

author
n71 made it!(author)2015-04-12

Hey Rastita, can you provide the code? Superthanx!

author
rastita made it!(author)2015-04-23

Yeah! for shure.... but it´s almost the same than the original :)

But only using 2 leds, instead of 3...

// LED Fire Effect

int ledPin1 = 5;

int ledPin2 = 6;

//int ledPin3 = 11;

void setup()

{

pinMode(ledPin1, OUTPUT);

pinMode(ledPin2, OUTPUT);

//pinMode(ledPin3, OUTPUT);

}

void loop() {

analogWrite(ledPin1, random(80)+35);

analogWrite(ledPin2, random(120)+135);

//analogWrite(ledPin3, random(120)+135);

delay(random(100));

}

author
n71 made it!(author)2015-04-23

Actually there could be 3 random flickers + 2 random fading using PWM on pins 0 and 1 with bursts to simulate little flame with occasional crackers. :-)

author
goldenshuttle made it!(author)2014-04-18

Very simple; & very impressive..

author
doktorvortexx made it!(author)2012-11-14

Thanks for the great Instructable! Saved me a bunch of time writing the code myself!

author
0_Nvd_0 made it!(author)2009-07-08

Very COOL Earthshine. You have invented a very nice thing.

author
TheArduinoGuy made it!(author)2009-07-10

Thanks

author
DylanS63 made it!(author)2016-12-04

Can I make this exact circuit but with LED strips that run 12v?

I want to make a flicker box that can simulate fire for my short films, the only problem with normal ones you buy in stores, they are really really expensive :(

I appreciatie any answer.

Dylan

author
sergiolrmartins made it!(author)2016-05-23

Thanks for the simple but efective code.

I included the randomSeed(392113) command in the Setup function

and change the analogWrite commando to analogWrite(ledPin1, random(0,255));

just to make it more effective and cleaner.

and

author
GuyH13 made it!(author)2016-01-17

Thanks, I borrowed your approach for a project I'm doing with my son's Minecraft torch from Thinkgeek... enhanced it as a part of my main loop so that it also incorporated a random timer controlling the flicker. Not the most elegant code but it ended up looking very cool!

Just posting an excerpt of the code, but as you might guess the elapsedTimeSinceOn is millis() now - millis() when the torch was turned on (button press):

if ((torchLEDState == TORCH_FLICKER) && (elapsedTimeSinceOn % lastFlickerDelay == 0)) {

// let's make the torch flicker

if (DEBUG) { Serial.println("8 - running flicker routine"); }

int brightness = random(10);

int duration = random(10);

switch (brightness) {

case 0:

case 1:

case 2:

case 3:

case 4:

case 5:

analogWrite(torchLED_pin, random(120) + 50);

break;

case 6:

case 7:

analogWrite(torchLED_pin, random(120) + 85);

break;

case 8:

case 9:

analogWrite(torchLED_pin, random(120) + 135);

break;

}

switch (duration) {

case 0:

case 1:

case 2:

case 3:

case 4:

lastFlickerDelay = 100;

break;

case 5:

case 6:

lastFlickerDelay = 200;

break;

case 7:

case 8:

lastFlickerDelay = 500;

break;

case 9:

lastFlickerDelay = 50;

break;

}

}

author
Heyup made it!(author)2015-11-19

not tried this yet, too busy at moment, but the effect looks really good. well done and thanks for sharing

John :)

author
a_wrek made it!(author)2015-06-11

Hello, when i try to upload the code to the arduino i get this error message.
Collect2.EXE: error: Id returned 5 exit statusError compiling.

author
TheArduinoGuy made it!(author)2015-06-12

What version of the IDE are you using?

author
a_wrek made it!(author)2015-06-14

I am using Arduino 1.6.4

author
SubEclipse made it!(author)2012-10-24

Easy and looks great.

author
tinker234 made it!(author)2012-06-06

i wonder i saw a video where some one used a smoke maching thourgh tube with holes in it with a simallar led array with yellow to create a realstic fire

author
HSTH made it!(author)2012-04-23

Great project - it works great - anyone with an Arduino ought to give it a try.

author
ddagieu+salcido made it!(author)2012-02-22

what would it thake to make a torch instead of a candle flame... im thinking on use them as lightning for a corrior in my house, ill like to draw electricity direclty from the wall

author
bigdeee made it!(author)2009-06-26

That's a great little effect that goes a long way! I'm sure it's going to come in handy in my little video experiments. Thanks for posting it.

author
TheArduinoGuy made it!(author)2009-07-03

Glad you like it. It's very effective in real life.

author
ReCreate made it!(author)2009-06-25

Instead of using all those resistors...Couldn't you just use one from ground to the led's negative terminal? and put all of the positives directly to the board?

author
TheArduinoGuy made it!(author)2009-06-25

No because the LED's go ON/OFF so the current would then increase/decrease and could damage one or more of the LED's. If each one has it's own resistor then it will be individually protected.

author
ReCreate made it!(author)2009-06-25

what about for cases when only 1 LED is on at a time?

author
Rob+K made it!(author)2009-05-24

Random brightness neet little effect. Try that with a RGB LED.

author
Rob+K made it!(author)2009-06-14

Actually using RGB LEDs is a nice effect.

author
TheArduinoGuy made it!(author)2009-06-14

The reason individual LED's are better, rather than an RGB LED, is that the seperate LED's cause the shadows to come from slightyl different points. This increases the realism as a flickering candle has a flame that dances about causing the shadows to shift slightly. If you use an RGB LED then all of the points of light come from the same location and the shadows remain stationary.

author
Rob+K made it!(author)2009-06-14

I meant red green and blue LEDs not just a singe RGB one sorry. I just got my starter kit working again and this is one of the first sketches I tried.

author
TheArduinoGuy made it!(author)2009-06-16

Cool :)

author
koensadza made it!(author)2009-05-13

Those Fritzing images are really nice!

author
koensadza made it!(author)2009-05-13

I just noticed the two resistors on the right are not located right. As they are now, they are between + and ground.

author
TheArduinoGuy made it!(author)2009-05-13

You were right! I've fixed it. Thanks.

author
admin made it!(author)2009-05-12

Hey, this is a great instructable and is very informative. Just one thing is missing... pictures! It really helps a lot when trying to follow directions so you should consider taking some photographs. Once you do that and leave me a message when you have so that we can publish your work. Thanks! Thanks for the cool instructable and we hope to publish this soon!

author
admin made it!(author)2009-05-11

Hey, this is a great instructable and is very informative. Just one thing is missing... pictures! It really helps a lot when trying to follow directions so you should consider taking some photographs. Once you do that and leave me a message when you have so that we can publish your work. Thanks! Thanks for the cool instructable and we hope to publish this soon!

About This Instructable

96,179views

125favorites

License:

Bio: Hi, my name is Mike and I am from London, England. I really like to make things and in particular like to do creative things ... More »
More by TheArduinoGuy:Arduino Nibble #2 - Setting Up Your Arduino Arduino Nibble #3 - Let's Talk About Breadboards Arduino Nibble #4 - Coding Concepts
Add instructable to: