Arduino Fencing Scoring Apparatus





Introduction: Arduino Fencing Scoring Apparatus

This is a tutorial on how to build a fencing scoring machine using the Arduino Uno. It supports all 3 fencing disciplines of foil, epee and sabre.

Fencing boxes or scoring machines are normally very expensive and I have, for a long time, been wanting to create an open-source box. Now finally here is it! The hope is that this benefits clubs out there that don't have the money to by scoring boxes for hundreds of dollars and can make this one for around $25.

All the source code, firmware and hardware designs are released under the GPL licence so it is free to use and distribute. It can all be found on the github website here.

Bill of Materials:

  • 1 x Arduino Uno or equivalent (You will need 6 ADC pins and at least 7 digital I/O pins)
  • 6 x 20kR resistors
  • 1 x Green LED Matrix
  • 1 x Red LED Matrix
  • 2 x White Matrix
  • 2 x Yellow LEDs
  • 6 x 220R resistors
  • 1 x Buzzer
  • 7 x Banana Plug Sockets (3 Green, 3 Red, 1 Black)
  • Breadboard or Veraboard

Step 1: Configuring Your Arduino

It is assumed that you already know how to upload code to your Ardruino, if not, Google is your friend.

This instructable uses the all_weapon box Arduino code. The file to be found here. Upload the all_weapon_box code to your Arduino and you are ready for the next step

If you haven't used an Arduino board before, it is really easy and there are plenty of tutorials online. Google is your friend.

I used an Arduino Nano, it is pretty much equivilent to the Uno in terms of IO and the Micro Controller Unit. Now that you have the heart of the scoring box and just need to build the rest of the circuit.

Step 2: Hardware: Scoring LEDs

I have used a couple of RGB matrices for the scoring lights. These are pretty cool because you can use on matrix for both on target and off target hits, you can also use them for the short circuit lights. Getting RGB Matrices to make colours other then RGB requires the use of PWM to control the power to each set of LEDs. Basically turning all the colours on at the same current doesn't give a white light as come colours are brighter then others at the same current.

The LEDs need to be controlled using a transistor switch as the arduino IO pins cant supply enough current to drive the LEDs properly. See the image in this step.

[Show how the LED matrix is connected up]

This is the solution that I have used for the LEDs. Feel free to come up with you own solution and please share it in the comments below if you do.

Step 3: Hardware: Weapon Change Button

The weapon mode button switches the scoring box between foil, epee and sabre. This is easy to connect up and debounce is take care of in software. The Arduino has an internal pull up resistor on most digital pins which leaves us with one less resistor to connect! Yah! Just connect a normally open push button between pin 2 and ground.

Note: Internally the code uses a interrupt to manage the button. The Uno and Nano only have external interrupts on pins 2 and 3.

Step 4: Hardware: Buzzer

The buzzer is also a pretty easy one. Just connect the buzzer between ground and pin 3. A simple piezo buzzer is good enough and can be driven directly from the Arduino IO pins.

Step 5: Hardware: Weapon and Lame Interface

The weapons are connected to the box via 4mm banana sockets. They are spaces 15mm and 20mm apart. These sockets are connected directly to the Arduino's analog pins with pull up and pull down resistors, as per the circuit image.

Note: These resistors should be around 1k ohms, much larger and you will create an RC filter with the capacitance between the 2 long wires and the pull up/down resistor which makes the hit signal from the decay slowly instead of a sharp edge. This will only be measurable with an oscilloscope. But blah. Don't worry about this, just use 1k resistors.

Step 6: Hardware: Power Supply

The power supply solution is dependent on the Arduino that you use. I used the Nano so I need to power it over the mini USB connector. The Uno does have a power jack, so just source a compatible power supply. But I prefer to do it over USB. There are a number of options with USB, power banks, wall plug USB adapters or even a computer or laptop.

A power bank doubles is pretty much a battery so you could just build it into your box if it requires a battery.

Step 7: Enclosure

We have come up with the enclosure that you can see in the images. I hope to upload a template for it at a later stage, but I encourage you to 3D print or design your own enclosure. I would love to see your idea and designs.

Step 8: How the Code Works

The Arduino code samples each of the ADC pins on each loop. It compares the read values to what is expected for the currently selected weapons and checks if it has been depressed for enough time to register a hit. Then the lockout timer is started and if the 2nd hits hasn't occurred before the time-out then the single hit is registers and the correct lights turned on.

On the Uno/Nano the loop runs about at over 2000 times per second. This allows us to easily capture the shortest possible hit, which is foil at 2ms.

For a more details about how the code works see the comments in the source files. It is well commented and it explains what each thing is doing. All_weapon_box

Again any feedback is much appreciated.

Step 9: Testing Your Scoring Box

Well the best way to test the box is to use it. Check things like hits on bell guards don't trigger hits, double hits etc.

If you want to test the timing of the box you will need an oscilloscope which can check out the signals and tell how long a tip was depressed for or the difference in time between hits for lockout. This is a very specialise piece of equipment so properly not worth it. Trust me that I have used my oscilloscope to test it properly and the timings are a function of the code and I am happy that they are FIE compliant.

If you do come across any issues or bugs please let me know and Ill update the code.

Step 10:

Well that is it folks. Please leave your feedback and ideas. Ill try and update this inscrutable with more details in the near future.




  • Space Challenge

    Space Challenge
  • Microcontroller Contest

    Microcontroller Contest
  • Spotless Contest

    Spotless Contest

We have a be nice policy.
Please be positive and constructive.


One other thing you can do is use a power source other than the 5v off the arduino to power the leds. The VIN on the arduino has a voltage regulator on it, and the boxes I have built use a 12v power supply to power both the leds and the board itself.

6 Questions

In the code for a on target hit in foil:

if (400 < weaponA && weaponA < 600 &&
400 < lameB && lameB < 600)

What do the 400 and 600 signify, the rules say:

"The registering of a valid hit must be guaranteed when there is a break of contact
of 13–15 ms, when the exterior resistance is between 0 and 500 ohms."

So I'm struggling to see the correlation. I'm new to arduino and I was looking to build the scoring box.


Hi Alistair,

The 400 and 600 are analog values of the ADC pins on the arduino, there is no correlation between this and the rules, other than that if allows us to tell if a particular pin is in contact with another pin. We read the voltage of our pins as a value between 0 and 1024, which maps to 0 and 5v. I have pull up and pull down resistors on the pins so I can tell when they are in contact this way. Sorry for the explanation, but you need to have an understanding of ADCs, pull up and down resistors and some arduino knowledge to put this in context.

Good luck building the box, please share pictures with us when you do.

better with a file...

Sans titre.png

thank you Westley.

This will work, but you dont need the resistor below the transistor. As the current is already limited by the resistor above it transistor.

Technically is you are only driving a small LED then you dont need the transistor, but if you want to drive a light/LED that draws more current, then you would have to have the transistor otherwise you would destroy the Arduino pin.

Sorry. I would like to send this picture.

Sans titre.png


Is it the good solution?

| R
| |
12 |-----------R---Transistor
| | |

Thank you.

Is it possible to see how the LED matrix is connected up. I'm a begginer in arduino and electronic....
Thank you very much for this very good lesson.


So the wiring of the matrix really depends on the type of matrix display you have, The one used here has tristate LEDs, but I have recently changed to using a matrix based on the ws2812b LEDs, which are programmable. They only use one wire which makes it easier to connect up and also to control.

As a start you could even just use large single LEDs.


What kind of transistor did you use?


This does look like an awesome project. If I get round to making one myself, I will include code and a switch to change the buzzer sound as it's confusing in a club setting with all the boxes making the same noise.

Thank you so much for the shared work very impressive!!

I would like to try build the same but using two simple lamp instead of led matrix.

I didnt able to see the picture [Show how the LED matrix is connected up] and I kindly ask you if can provide more pics and instruction to go step by step avoiding mistakes.


Great work, thanks for sharing.
I am new to this stuff and I wonder if there is an easy method to implement an indicator showing the active weapon, perhaps three LEDs linked to an if-condition with currentMode as variable?

First of all, this is a great project. Thanks for posting!

Just one question... did you try to make it wireless? I was thinking if its possible to use an arduino nano with small cell battery and a nrf24l01 directly installed on the epee cup. Do you think that would work? Thanks!

Hi! this is an awesome project with great instruction. I have wired the arduino according to the diagrams (at least I think I have) with the only differences being that I have used single LEDs rather than a matrix and I am using the Uno rather than the Nano, but it seems to be fairly unresponsive other than both coloured LEDs energizing when I touch one of the guard pins every once in a while. Any ideas on where I am going wrong?

Thanks for the comment. Do you have the pull up and pull down resistors in place? Also enable the serial debug code and see what output that gives you. It should tell if you have a hit or not. Which should tell you if your issue is on the scoring side or the lights side.

Ha! That last line of text is clever. There is not enough information given to complete the project, so it is in fact an "inscrutable." A closer and more complete shot of the wiring would help. The parts list doesn't contain some parts referenced in the text/pics. It also contains some that are not. Please add the missing details to this potentially excellent project.

Hi Mschnie,

It seems that you need to click on the "next" button or even the "view all steps" button. It is all there ready for you to copy.

Can you list the items that I forgot to put into the initial list?


This is a great project! I'm totally new to Arduino. So, can you upload a few pictures to illustrate the hardware connections more clearly? How are different wires connected to the Uno/Nano? How the Uno/Nano is connected to the breadboard, how the wires are connected to the LED lights and so on? Many thanks!!!

Hi Ricky,

If you look at the circuit diagram you can see how the wires are connected. If you browse to the github repository linked in the introduction, there is a hardware folder which contains the full circuit diagram. Hope this helps.