Flamethrowers with a Punch Activated Arm (Real Firebending) GPL3+


  • SparkFun Arduino Pro Mini 328 – 5V/16MHz
  • Adafruit LIS3DH Triple-Axis Accelerometer


Asian martial skills and pyrokinesis are combined to create the art of firebending as it is shown in Avatar:

The Last Airbender and The Legend of Korra. So how do we actually control fire with fancy fighting techniques? Naturally, with Arduinos!

This project’s flamethrower component is made up of a solenoid valve and a butane fuel chamber. A modified arc lighter is at the business end.

This project uses an Arduino Pro Mini and an accelerometer for its punch-activated component (in this case an LIS3DH Breakout from Adafruit). A fist making a punch has a somewhat distinctive acceleration profile that appears as a substantial positive acceleration at the start of the punch and an excessive deceleration at the finish of the punch within a brief window of time (100ms). That implies our Arduino can quite readily tell punches apart from regular everyday gesticulations!

When everything is attached to an arm, we have a flamethrower that an Arduino can only activate once the arm has delivered a punch. You’ve turned into a firebender before you can say “sparky boom man”!

This is not a project for beginners, and even for experienced users, throwing fireballs with your fists carries some risk. At your own peril, read!

Energy Chamber

Purchase some pipes! Specifically:

  • 1/4 “quick connect male
  • 1/4 “Full-port NPT ball valve
  • Reducer, 1/2″ to 1/4″, galvanised
  • 1/2″ length 1/2″ to 1/8″ galvanised reducer, black iron nipple,
  • black iron tight nipple solenoid valve with a 1/8″ NPT port and a 2mm aperture
  • 3/16″ barb to 1/8″ NPT

Use pipe and crescent wrenches to tighten everything up after applying teflon paste or tape to the threads. Due to the fact that this will eventually be affixed to a flat piece of wood, make sure the ball valve’s lever and the solenoid valve are in alignment.

Butane Canister

To add butane to your gasoline tank, you’ll need an adaptor. The fast connect is appropriately sized to accommodate a 3/16″ aluminium tube. Close the ball valve, insert the aluminium tube all the way down, then mark the cut line.

Cut your tube to size with a tube cutter. With a ball peen hammer, slightly mushroom one end, then slide an O-ring up to the edge. This will enable your tube to seal by pushing against the fast connect. Also add an O-ring to the nozzle of the butane canister.

I used a benzomatic butane canister, which is more expensive than regular butane for stoves but without the extra rotten stench.

Examine for leaks

Try out the fuel chamber and the unique fill adapter! To check for leaks, submerge your chamber in water or spray it with soapy water. Test the solenoid valve once it has been determined that you are leak-free. The solenoid’s leads should be touched to the battery’s leads and a cold butane mist should be produced. A 2 cell LiPo is ideal for this project. It would probably be okay to spray some teflon paste if you applied it on the pipe threads.

Arm Mount

To mount anything onto, you’ll need something substantial. I utilised 1/4 “Despite not being completely fireproof, thick poplar holds up well enough. The board is 9″ length and 2.5” broad. I designated two zip-tie holes for the fuel chamber such that the fuel chamber nozzle was 0.75 inches away from the end and two holes for the handle about an inch from that “from the conclusion.

Zip tie the fuel chamber to the wood, pull firm, no give there. I hot bonded a 1″ nylon strap to one of the D rings, looped it through the other, and held the end in my hand. I attached some 1″ D rings to the rear end of the wood board using pipe strapping. This acts as a type of emergency release, making it simple to toss away the flamethrower if something horrible were to happen. Simply let go of the strap and toss the dangerous objects a long way!


This kind of arc lighter is a very cool little gadget. Let’s disassemble it! most of the arc lighters I’ve seen have a little screw on the bottom; unscrew it, but MAKE SURE YOU KEEP IT! Get rid of the internals and any hinge-like components (you’ll probably need to stick some rods out of holes). To accommodate wires, remove a portion of the fabric around the buttonhole with your dependable rotary tool.

Lead wires should be soldered to button terminals. Since the lighter has likely been on the entire time, get your go-to multimeter and check the voltage at the wires. 3–4 volts should be displayed. Make a note of which is positive and which is negative so you can connect to the optoisolator using the correct wire. In my situation, yellow was a positive and orange was a ground. Reinstall the internals in the metal casing and tighten the previously saved tiny screw.


The arc lighter is represented by a piezo buzzer in the design.

Concerning Pro Mini regulators not smoking, I lack confidence. Use a 7805 or anything external if you want.

I used an optoisolator because I thought the arc lighter’s ground would be extremely noisy. You could probably get away with just pinning this to a computer pin!

Put a sliding switch on there and use a correct battery hookup. Having to plug and disconnect in order to switch on and off quickly became bothersome.

I love wire nuts, so I used them to attach the solenoid to the circuit board and diode. Perhaps it would be best if you just soldered that.

Completing the Task

Mount the arc lighter and your electronics. Because I needed to finish quickly, I utilised double-sided foam tape and hot glue; however, you might wish to use more secure techniques. Upload the fantastic code that belongs at the page’s bottom. Do a dry test after plugging in your LiPo and turning on the electronics. NOT AT THIS POINT BUTANE. Just check to see if you can deliver a solid punch and obtain a click from the solenoid and a high-pitched arc from the lighter. To make it simpler to trigger for the time being, you may also modify the punch thresholds.

Turn everything off and fill the fuel chamber after you’re relatively certain that you won’t unintentionally catch fire. A decent 20-Mississippi count will, in my experience, provide you with at least six excellent fireballs, or just enough to finish one modified Dancing Dragon. Before turning everything on, make sure the space is sufficiently aired and let the extra butane air out a little. Have a companion nearby, a fire extinguisher at the ready, and a plan in place in case your arm catches fire. Aiming towards anything that you don’t want on fire is a bad idea. Wearing welding gloves is strongly advised until you feel confident throwing fireballs from your hands.

The butane igniter was the thing that I struggled with the most. I discovered that the butane stream readily “blew out” the arc lighter, despite it being useful for numerous reasons. After some tinkering, it appears that mounting the arc more away from and to the side of the stream is preferable for igniting, although it is more difficult to attach. There is certainly an opportunity for improvement!


#include <Wire.h>
#include <SPI.h>
#include <Adafruit_LIS3DH.h>
#include <Adafruit_Sensor.h>

// Used for software SPI
#define LIS3DH_CLK 13
#define LIS3DH_MISO 12
#define LIS3DH_MOSI 11
// Used for hardware & software SPI
#define LIS3DH_CS 10

//software SPI

//A fist experiences significant acceleration during a good punch,
//followed by massive deceleration at the end of the punch.
//This happens within a fairly small window of time, so it's
//pretty easy to distinguish a punch from normal gesticulations.

unsigned long punchStart = 0;//variable for non-blocking punch timeframe check
const long punchInterval = 200;//timeframe of a punch in ms, from max acceleration to max deceleration, 200 is very generous
int punchAccel = 20;//the beginning of a punch in m/s^2, could be over 50m/s^2 depending on the puncher
int punchDecel = -40;//the end of a punch in m/s^2, could be less than -100m/s^2 depending on the puncher
int flameTime = 250;//how long the flame lasts, in ms

void setup(void) {
  //Test to see if accelerometer is communicating
  Serial.println("LIS3DH test!");  
  if (! lis.begin(0x18)) {   // change this to 0x19 for alternative i2c address
    Serial.println("Couldnt start");
    while (1);
  Serial.println("LIS3DH found!");
  lis.setRange(LIS3DH_RANGE_16_G);   //+-16G range for good punch detection
  Serial.print("Range = "); Serial.print(2 << lis.getRange());  
  pinMode(8, OUTPUT); //Solenoid valve
  pinMode(9, OUTPUT); //Arc lighter
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);

void loop() {
  sensors_event_t event; 
 //look for punch starting, at least 20 m/s^2
  if (event.acceleration.x > punchAccel){
     punchStart = millis();
  unsigned long currentMillis = millis();

  //look for punch ending, less than -40 m/s^2
  if (event.acceleration.x < punchDecel && currentMillis - punchStart < punchInterval){

void Fire(int flameTime){
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);


No words can describe feelings


“Less liability and more assets can grow your wealth” – KP

Don’t waste time, Have a timely pivot, Don’t procrastinate


Helping Hands.

About the author


You can download our apps and books for free..
Search - Incognito Inventions

View all posts

Leave a Reply

Your email address will not be published. Required fields are marked *