Select Page

Flasher are very necessary, whether you have a signal light for airplanes or spaceships. We’ll show you three different ways of producing such a flasher. One of them will use Arduino, thats perhaps easiest way.

There are flashing LEDs, however they flashing regularly (interval is the same) and therefore is not suitable for signal lights. For example if we need longer ligting time and shorter break time. That’s why we need flasher.

555 flasherblikac_schema_multisim2

The first flasher is fairly well-known 555 flasher, the name is derived from used circuit 555. We can therefore use LM555, LF555 or NE555 which are very cheap. So look at the attached diagram. To determine the time of blinking (how long is the LED turned ON and how long is turned OFF), ie the interval, we need capacitors and resistors. How do we know what we need? It’s simple, we can calculate it by simple formula:

Tn (time when is the LED OFF) = 0,693 * (R1+ R2) * C1

Ts (time when is the LED ON) = 0,693 * R2 * C1

C1 will be 22 micro farad. So if you want that the LED will be ON for 0,4 seconds and OFF for 1.5 seconds we will use a 68k resistor R1 and a 27k resistor R2. If the LED should be ON for 0.2 seconds and OFF for 0.8 seconds will be R1 56k and R2 12k resistor. The advantage of this circuit is clear – it is relatively simple and can be built in very small sizes.

HCF4017BE

Another circuit on which we can build a flasher is HCF4017BE. Unlike previous we will need some Zener diodes, flashing LED (as timer) and two normal LEDs. This circuit was chosen for flasher, which in turn switches on one and then the other LED – ideal for a Borg time transmitter from the Voyager episode “Timeless”. Again, I attach a diagram. Flashing LED (shown as LED3) is replacing a timer that you would otherwise have to connect to pin 14 (such as 555 mentioned Circuit) . You will not see the flashing LED on this video, because I did not have any in stock. However, the circuit is really functional with the flashing LED. If by any chance the flashing LED would work but the rest of the circuit does not, it will be necessary (see. Diagram) to add the 1k resistor.

The diagrams for similar or even completely different flasher based on 555 or HCF4017BE are available on the Internet really everywhere and if you’re skilled, you can build them even in SMD (ie miniaturized version). However, I also wanted to address the Arduino, witch which nobody (even a total jerk) have a problem to build a flasher.

Arduino

With Arduino, you will not need capacitors, Zener diodes or any other components. Just Arduino and LEDs (and of course always a resistor). Plus, you’ll be able to set the interval – how long will be the LED turned ON and OFF. And you can also set other LEDs to flash completely different. This is not possible with circuit 555.

We will force two LEDs to flash completely different. So we will connect the LEDs to pin 11 and 12. The other end of LEDs will go to GND pin. Now insert the code below, where we define both LEDs and their times. Green LED designated as LED1 will have different intervals (it is ON for 100 milliseconds and off for 1000 milliseconds). Orange LED marked as LED2 will flash as well (will be ON and OFF for the same time – 700 milliseconds). Both LEDs will blink therefore on one board and both completely different. Under the code is video with the final effect.

int led1 = 11; // LED to pin 11
int led2 = 12; // LED to pin 12
int value1 = LOW;
int value2 = LOW;
long time1 = millis();
long time2 = millis();
long LED_ON = 100; //LED1 ON (milliseconds)
long LED_OFF = 1000; //LED1 OFF
long interval2 = 700; //Interval of the same flashing time for LED2 (milliseconds)
unsigned long ms;
unsigned long msLast;
boolean ledState;

void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}

void loop()
{
unsigned long m = millis();
ms = millis();
blinkLED();
if (m – time2 > interval2){
time2 = m;

if (value2 == LOW)
value2 = HIGH;
else
value2 = LOW;

digitalWrite(led2, value2);
}
}

void blinkLED(void)
{
if (ms – msLast > (ledState ? LED_ON : LED_OFF)) {
digitalWrite(led1, ledState = !ledState);
msLast = ms;
}
}