Table Tennis Scoreboard

Simple table tennis scoreboard operated with buttons mounted under the table. Indicates whose serve it is, plays a jingle when the game is over.

My fiancée and I got a table tennis table, and quickly found we are (read: I am) terrible at keeping score in our heads. I figured it would be a fun project to design a scoreboard.

When I made this, I felt quite well-versed in everything needed to build it, so it was a relaxing project to work on. The only thing particularly new to me was driving a piezo speaker. The speaker was a pretty late addition, added only because there was some left-over program memory on the microcontroller, and I felt a happy jingle would really rub it in for the loser. ;-)


  • Arcade-style buttons mounted under the table on each side, pressed to give add a point to that side
  • 4-digit 7-segment display indicating score in the current game
  • Button to toggle display between current game score, number of games won since powerup, and total number of games won (stored in EEPROM)
  • Reset function to clear games won since powerup, or all time
  • LEDs indicating whose turn it is to serve
  • “Undo” function by pressing and holding a player’s button, if the player mistakenly gave themself a point
  • “Swap sides” function by pressing and holding both player buttons (swaps scores in all 3 counters)
  • Audio feedback for button press, long press
  • Game over jingle when a player wins the game
  • 11 Point game with 2 points difference win condition (or however many points it takes to get 2 points difference beyond 11)
  • Powered via micro-usb connection

The device is built around the lightweight Microchip ATTiny84 microcontroller and Maxim Integrated MAX7219 display driver, which also drives 5 indication LEDs. I managed to fill up virtually all of the program memory; I had to optimize the code a bit to make it all fit after adding the audio portion of the firmware.

Work Involved

  • Circuit design / breadboarding prototype
  • Firmware development (plain AVR-C, built with a Makefile, avr-gcc, flashed with AVRDUDE)
  • Schematic capture (KiCad)
  • PCB design (KiCad)
  • PCB assembly (through-hole soldering)
  • 3D-printable case design (FreeCAD)
  • 3D-Printable button case design (FreeCAD)
  • Wiring and assembly of button units

Additional Images

The breadboarded prototype, simple enough to fit on a small breadboard:

The finished PCB, powered up:

Board, and buttons in their 3D printed cases:

Circuit/PCB designs and firmware code can be found on GitHub: pingpong-scoreboard