LED Flash click: review and Arduino code

Dec 5, 2017 0 comments

As its name suggests, the LED Flash click is a high power LED flash unit based on the 4-Amp very high-current integrated flash LED driver CAT3224 from On Semiconductor.

A dual cell capacitor can provide current pulses of up to 4A, with a duration up to 300ms, far beyond the current capability of today’s batteries. The CAT3224 features a 1x/2x charge pump which charges the stacked supercapacitor to a nominal voltage of 5.4V. The nominal charge current is determined via an external resistor, and an active balance circuit ensures that both capacitor cell voltages are balanced.

It sounds complicated, but in reality, this click board is deceptively simple to use. One has three control pins: CH-ENA is used to enable charging, TOR is used to enable flashlight functionality, while FLS fires the flash. The supercapacitor charging status is signaled via a FLAG pin.

Being a 5V-only click board, is a very good match for an Arduino Uno, using the Arduino Uno click shield in between. Below is a code example that works with the LED Flash click installed in the first mikroBUS socket:

// Pin definitions
#define FLG 2 //Flashcharged flag
#define TOR 6 //Torch mode
#define FLS A3 //Flash
#define CH_ENA A0 //Enable charging

float start_millis;
float chg_time;

void setup() {
// put your setup code here, to run once:
// Pin settings
pinMode(6, OUTPUT);
pinMode(FLS, OUTPUT);
pinMode(CH_ENA, OUTPUT);

// first charge the capacitor

digitalWrite(TOR, LOW); // Init
digitalWrite(FLS, LOW); //
digitalWrite(CH_ENA, LOW); //

Serial.println("Torch mode on");
// Start torch mode
digitalWrite(TOR, HIGH); // Torch mode
digitalWrite(CH_ENA, HIGH); // Keep charging
delay(5000); // wait for five seconds
digitalWrite(TOR, LOW); //
digitalWrite(CH_ENA, LOW); // Keep
Serial.println("Torch mode off");

void loop() {
// put your main code here, to run repeatedly:


void do_charge(void)
start_millis = millis();
digitalWrite(CH_ENA, HIGH);
// wait for flag to go high
while(digitalRead(FLG) == 1);
digitalWrite(CH_ENA, LOW);
chg_time = millis() - start_millis;
Serial.print("Charging time ");
Serial.println(" ms");

void flash_fire(unsigned int flash_time)
digitalWrite(FLS, HIGH);
digitalWrite(FLS, LOW);

A few notes regarding the code

One must charge the supercapacitor first, no matter if the torchlight or the flash functions is to be used. I have found that in torchlight mode the supercapacitor goes empty in about 10 seconds, and the light intensity diminishes. Keeping the charging circuit active by driving the CH_ENA pin high seems to extend the time for torchlight operation.

In flash mode, there is no control over the light intensity other than adjusting duration of the flash. With a flash duration of 300ms, there is no way to freeze motion as normal speedlights do. I have also found that the charging time between flashes is about four seconds, for a flash duration of 300ms.

And speaking of speedlights, I also tried to use the LED Flash click board as a trigger for my bigger flash units. The result: I can trigger my Yongnuo YN560 IV flash from a distance of up to 15 cm. That is, I have to keep the LED Flash click very close to the flash to optically trigger it. I would have liked to have more maneuvering space, but I can still think of some creative uses.

Bottom line: quite limited in possibilities as a flash unit. Gets very hot after many flashes fired.

Related Posts


{{posts[0].date}} {{posts[0].commentsNum}} {{messages_comments}}


{{posts[1].date}} {{posts[1].commentsNum}} {{messages_comments}}


{{posts[2].date}} {{posts[2].commentsNum}} {{messages_comments}}

Contact Form


Email *

Message *

Recent Comments