Arduino Tutorial: Flicker a LED

31K3418

Intro: Arduino Tutorial: Flicker a LED

Tired of all those other instructables about how to blink a LED? well how about flickering a LED? eh? there is a ible all about flickering a LED.

STEP 1: Wiring

Before we program the arduino we need to get everthing setup.

A) Plug in your arduino to the computer Via USB cable.
B) Add led positive lead to pin 10 on digitial, then with negitive lead to the GND (ground) pin also on digitial
C) Run Arduino IDE software.
D) Go to next step for code.

using the picture below wire your arduino (incase you dont understand what i am getting at here)

STEP 2: Ze Code

to make the led flicker you are first going to need the software to program the chip. go to arduino.cc for a full program and other examples. the code you see here should be copied and pasted into the IDE.

int ledPin = 10;
byte flicker[] = {180, 30, 89, 23, 255, 200, 90, 150, 60, 230, 180, 45, 90};

void setup()
{
pinMode(ledPin, OUTPUT);
}

void loop()
{
for(int i=0; i,7; i++)
{
analogWrite(ledPin, flicker[i]);
delay(2000);
}
}

Now just click the "upload" button and in a few seconds your arduino will be running the code. Ok in the next step I will explain the code.

STEP 3: The Finial Product.

see how it flickers? thats basically what the code does!

Got questions? comments? concerns? list below!

Video
can not parse options from: type="application/x-shockwave-flash" width="400" height="300" data="http://www.flickr.com/apps/video/stewart.swf?v=71377" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> <param name="flashvars" value="intl_lang=en-us&photo_secret=d3eedd10d0&photo_id=3521110370"></param> <param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=71377"></param> <param name="bgcolor" value="#000000"></param> <param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=71377" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&photo_secret=d3eedd10d0&photo_id=3521110370" height="300" width="400"></embed></object>, {width:425, height:350}

16 Comments

Hi! I Hope someone is still replying to this thread. I'm trying to make a(ny) light source flicker as if it is about to die (like a fluorescent tube), which means it has a lot more no light than the code above (and the code from Jazon Diaz below in the comments) allow for. I am tweaking the values, but don't seem to get anywhere, as the LED is just showing constant light with a slight flicker. I am interested in that the light turns all the way off at a 'regular' interval.

Can anybody help me figure this out?

Thanks in advance!

I know this is really old, but I found a nice trick using digital pin 13 and no PWM, you will need to download the TrueRandom library:

#include <TrueRandom.h>

const int ledPin = 13; // the number of the LED pin

boolean toggle = true;

void setup() {

// set the digital pin as output:

pinMode(ledPin, OUTPUT);

}

void loop()

{

//rand represents a random delay time between toggling on/off

//Larger numbers means more "flicker" here

int rand = TrueRandom.random(100,10000);

//This code turns the LED on or off depending on our toggle value

if(toggle){

digitalWrite(ledPin, HIGH);

}

else{

digitalWrite(ledPin, LOW);

}

//toggle the LED on or off

toggle = toggle?false:true;

delayMicroseconds(rand);

}

This code is a lot easier it might not look as nice but i uploaded the code and it didn't work here is mine int ledPin = 13; // LED connected to digital pin 13 // The setup() method runs once, when the sketch starts void setup() { // initialize the digital pin as an output: pinMode(ledPin, OUTPUT); } // the loop() method runs over and over again, // as long as the Arduino has power void loop() { digitalWrite(ledPin, HIGH); // set the LED on delay(35); // wait a thirty-fifth of a second digitalWrite(ledPin, LOW); // set the LED off delay(35); // wait a thirty-fifth of a second }
@D5quar3, but your code is only flashing. The original does work and although the randomness could be improved it does "flicker"
#include void setup(){ } void loop(){ analogWrite(9, TrueRandom.random(0,255)); delay(10); } this is the code I used it requires the TrueRandom library(http://code.google.com/p/tinkerit/wiki/TrueRandom), but the result is rather convincing.
Hey there from Germany.
I've got a problem.
After about 3 seconds the LED stops lighting.
Then after about ten seconds it lights again for about 2 minutes.
After that, the same thing starts again!

I'm using an 220 Ohm resistor to not to destroy the LED.
I used the code from above without editing it (only the delay = 75ms).

Can anybody help me???
Thanks, gotcha99
Are you putting the LED directly across the 5-volt output? Hopefully you are lucky enough for the LED to blow before the Arduino gets wrecked!
dont worry. just make sure u use a 5 volt led or a resistor.
there is no such 5 volt led...any 5v leds just have a tiny resistor in them...
It would be better to use 13 since there is a LED on the board for Duemilanove and Diecimila.I use that when I need to led there be light.
No. Pin 13 may be a better choice, and you can edit the code if you like so the led can flash through there, but if you use a 1k resisor before the LED on pin 11 you will be fine.
yeah I think 13 pin is more wise choise
The sketch will not run properly on pin 13 - it needs a PWM port for the 'flicker'. Make sure you put a 180-330 ohm resistor before the LED to protect it and the Arduino, which is only rated for 40mA before it's zapped!
if I understand correctly this is because we putting analog output ?
correct. but the analog is actually a list of different frequencies rather than physical input.
thanks for clearing this up. I first tried the sketch with a 1.5 volt LED....sparks flew! The one in the pictures is actualy rated for 5 volts so it needs no resistor.