Introduction: Arduino Fencing Scoring Apparatus

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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:

Picture of

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



sbraitbart made it! (author)2017-12-18

Great work!

I have built it for foil and it works. I just had to change the buzzer command to:

tone(buzzerPin, 1500);

instead of digitalWrite(...)

since the buzzer needs a modulated signal. I used a transistor to switch the buzzer instead of directly connecting to D3 pin because the sound was too weak and I wanted it to be loud.

Thanks for sharing! You saved us lots of money and I actually understand how it works now.

vspadaro (author)2017-05-17

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.

pmdu (author)2016-09-26

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?

CarlosL155 (author)2016-09-05

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!

thecranetech (author)2016-02-17

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?

aireal (author)thecranetech2016-03-01

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.

mschnie (author)2015-12-29

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.

aireal (author)mschnie2016-01-04

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?


RickyL7 (author)2015-12-15

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!!!

aireal (author)RickyL72016-01-04

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.

gogoguy (author)2015-11-28


DIY Hacks and How Tos (author)2015-11-28

Awesome fencing tool

About This Instructable



More by aireal:Arduino Fencing Scoring Apparatus
Add instructable to: