Pong Clock With Case




This clock uses the classic video game Pong to tell the time.
The 2 players automatically win and lose so their scores show the hours and minutes.

This is MrNick1234567 Pong Clock design and this Instructable shows how to fit it into a case and how to add a few extras including a DS3231 AT24C32 I2C Precision Real Time Clock Module, Master Clock Synchronisation PIR activation and IR remote control.

The case is a simple white jewellery box with a glass front. View it on Ebay here. A black display mask printed on inkjet slide film is added behind the glass over the display.

The standard clock has lots of different display modes to choose from:

Pong Clock, Large Digits,Time written in words, e.g. “Ten Past Twelve”, Time and date with seconds,Time and date with seconds and a slide effect, Time and date with seconds and a jumbled character effect, Date display with printed retro flashing cursor effect Options-12/24 hour option, Brightness option, Random clock mode option (changes the display mode every few hours), Daylight saving option to add an extra hour.

Modifications to Nick's clock
I have made the following changes to Nick's code/design.

I have removed one of the modes, Time and date with seconds with jumbled character effect to save space on the Arduino.

I have used a modified remote control instead of the push buttons to set/control the clock.

Added remote controlled quick brightness control without going through the menus.

Instead of the DS1307 RTC I have used a DS3231 AT24C32 I2C Precision Real Time Clock Module.

A PIR is used to turn off the clock display when no one is in the room.

I have also added synchronisation to my Master Clock system so the clock always changes in time to my master clock ticks and stays in sync with the Master Clock chimes. The master Clock is synchronised to the "Atomic" DCF77 Clock in Germany.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Parts Required

Main parts required

For full parts details see individual sections.

Clock case

This is a WHITE WOODEN JEWELLERY & TRINKET BOX DISPLAY CASE GLASS LID and is available on Ebay. The case has a white painted motto on the glass that is easily removed.


I have used a custom built Arduino Uno on vero board but a standard Uno will of course work just as well.


2 off Sure 2416 LED display from Sure Electronics. I have used the 3mm Green for this case size.

Remote Control

Four-way 4-channel IR 12V Remote. This is modified to work on 5volts and has the relays removed.

DS3231 AT24C32 I2C Precision Real Time Clock Module

I have used a DS3231 Real Time Clock instead of a DS1307 Real Time Clock . The DS3231 is much more accurate and in module form it is very cheap. The module is modified to take a non rechargeable battery for safety reasons.

PIR Module

A PIR module is used to turn the displays on when someone enters the room.

Step 2: Case Modifications

fig.2/3 First scrape off the white lettering from the glass lid using your finger nail or a hard piece of plastic.

fig. 4 Then carefully pull out the glued in wooden dividers making sure you do not split the case sides.

fig. 4 Remove the felt ring holders and fit a new base board on top of the existing to hide the glued down lining.

fig. 4 The new base board is painted black

fig. 5 A display mask is printed out on clear ink jet film

fig. 6 The mask is attached behind the glass with 3 screwed on metal clips

fig. 7 Completed case ready for circuit boards.

animation fig. 1 Shows the wooden mounting blocks, the main Arduino vero board, Sure Displays, LED board. IR remote board and RTC module. The PIR is mounted remote from the case on top of a display cabinet.

fig.8 Is the full size template file. I print this onto clear inkjet film at high resolution to make sure the blacks are opaque. The white lettering comes out clear on the inkjet film so I mount a narrow aluminium bar behind the mask lettering to enable it to be read. The small square is left clear as this is where the IR receiver sits.

Step 3: Circuit Boards

There are 2 boards to construct from vero board. You should be able to make the boards from the enclosed layouts and schematic included with this Instructable. The are also details on my web site for this clockhere.

The first board is the Arduino Uno board. A standard Uno board can also be used if you don't want to make up one of the Vero boards.

The second board is the LED board containing the 1 second LED, the 30 seconds LED and the sync LED.

The 1 second LED lights every other 1 second pulse while the 30 second LED lights on receipt of the 30 second pulse from my Master Clock.

The sync LED lights when the clock has been synchronised to the 30 second pulse on the half minute.

Step 4: DS3231 AT24C32 Real Time Clock Modification

The RTC module has built in temperature compensation and an I2C interface and requires no code changes to work.

As supplied the module is designed to charge a LiR2032 Rechargeable Coin Cell Battery. There are many articles on the internet about the design of the charging circuit for these modules and possible fire risk to the battery.

I decided to play safe and cut out the charging circuit by removing R5 and then fit a standard battery. The battery should last many years.

fig.1 shows the module and location of R5 while fig.2 shows R5 removed.

Step 5: Modification of Infrared Module

I have used a modified remote controlled relay board to control/setup the clock.

The relay inputs are used to switch the Arduino. The module toggles so a button has to be pressed twice on each selection, once to operate and again to release. An LED will light if the switch is left operated. The code could be modified to trigger on each state if you find pressing a button twice annoying.

fig.1 shows the original module.

fig.2 shows the relays and screw terminals removed and solder pins inserted into the old relay inputs. The infrared sensor is then extended out and hot melt glued into place under the clear window in the display mask.

The 5v regulator is no longer required so the input and output pins are shorted out and the board is then fed from the same supply as the Arduino.

The IR remote fig.3 is then re-labled as fig.4.

Mode selects the 5 display modes, Slide, Pong, Digits, Words & Normal and then Setup

Date display the date

Sync resets the seconds to 30 ready for initial sync (the clock will only sync if the seconds are between 24 and 36 when the 30 second sync pulse is received from the Master Clock). When real time seconds are in this range press the sync button to set the clock seconds to 30. The clock will wait until the 30 seconds sync pulse is received at 0 seconds and then on the next 30 seconds sync pulse the clock will sync. The clock will then sync on the half minute every minute.

Brightness cycles the display through 5 brightness levels without having to go through the setup menu.

Step 6: Schematic

The Schematic is very simple and is can be built onto vero board in less than an hour.

The circuit is a DIY Arduino Uno with a CP2102 (with DTR for auto reset) to enable programming. You can buy kits from Ebay with the Atmega 328 I/C, quartz crystal and capacitors included. Get them pre programed with the Uno bootloader unless you want to program your own.

I use the same CP2102 module on most of my clocks and just plug it into the circuit board as required.

You can use an off the shelf Arduino Uno and it may work on other Arduino boards as well.

Step 7: Display Mask

The display Mask is used to hide away all the internal components/wiring and give a finishing touch to the case.

fig 1 The mask is printed out on a sheet of inkjet transparency paper. Make sure your print settings are high so the print is dense.

fig 2 remove the top of the glass case and flip it over so the recess for the glass is visible

fig 3 cut the printed out mask to fit in this recess

fig 4 cut some length of bar to hold the mask in place. You can add some double sided foam tape (only remove stick it to the bars not the mask by leaving one side of the backing tape on) to the bars to get a fit to the mask.

Step 8: Mounting the Boards/assembling the Clock

fig 1 shows the assembly animation.

fig 2 start by mounting to blocks of wood in the box. Screw these in from the back of the box using small wood screws. I always screw rather than glue as it makes it easier to remove the clock assembly at a later date.

The wooden blocks are cut so they space the main display boards up almost touching the glass/display mask. This will take a bit of trial and error and you may need some spacers under the blocks to get the correct height.

fig 3 screw the main circuit board in place to the base of the box.

fig 4 the RTC module is then fixed to the top wooden mounting block.

fig 5 before mounting the Sure Display boards join the boards together with a short metal or plastic bar and nuts and bolts on the bottom right corner of left display and the bottom left corner of the right display. If using a metal bar do not short out any metal parts of the PCB. This bar can not be seen on the picture as it is fixed under the display boards.

Now is a good time to connect all the ribbon cables and other connectors to the main Arduino board.

Mount the Sure displays on the wooden blocks. The displays are screwed directly to the top block and via short metal or plastic bars the the lower wooden block.

fig 6 The IR board and LED board are then mounted on the lower block making sure the IR receiver fixed to the IR board is aligned with the blank in the display mask. The LEDs on the LED board should also align with the LED labels on the display mask.

Step 9: PIR Detection Module


Pyroelectric IR Infrared PIR Motion Sensor Detector Module The clock has infrared motion detection and this is detected off a remote sensor fig 1. that is used for a number of clocks in the room.

The PIR is mounted high up on a wall in a face plate and the output goes to all the clocks in the room with a PIR input see fig 2.

The modules has a single output that goes high when motion is detected. The sensitivity and length of trigger can be adjusted on the module to suit.

Step 10: Display Modes

Note the pictures above are animations I had made the real clock is much smoother in operation.

There are 5 display modes on the clock.

1 Rotating digits. Time and date are displayed on an animated display. The digits roll down as they change.

2 Pong. The game of Pong is played and the ball is missed on each minute. The score is then updated to keep time.

3 Word. The time is spelt out.

4 Digits. The time is displayed using large digits.

5 Normal. Time and date is displayed with no effects.

Step 11: Code

You can download a copy of my modified code here

You can add and removed features as required. Don't forget if you don't use the Master Clock sync disable it in code or tie the input so you don't get random 30 second syncs. The same goes with the PIR input.

There are many modified versions of Nick's clock out there all so if my version is not quite what you are looking for you shoud be able to add features from other clocks.

I have zipped up some of the libraries including Nick Hall's modified LED driver

Be the First to Share


    • Made with Math Contest

      Made with Math Contest
    • Multi-Discipline Contest

      Multi-Discipline Contest
    • Robotics Contest

      Robotics Contest

    26 Discussions


    Question 1 year ago


    I have a daft (probably) question, I made the old MrTick clock with V 2.x but now I have updated it to your code it goes back to the time when it was programmed, it is not synced with a master and the inputs are set high.

    On the old code you had to use a line to set the time and date then comment out before reloading. This version of the code doesn't seem to have that function.

    So, am I missing something or will it always default back to a specific time once the power has been turned off?

    Thank you in advance

    5 answers

    Answer 1 year ago

    Thank you for the reply, and this is where I am having the issues, I changed the RTC from the original DS1307 to the DS 3231, I also removed the resistor just in case it made any difference, but once its been powered down it goes back to 16th June 19:56 (when I last updated the code). I have even changed the ATMega to a Micro board to see if that was the issue. On a fresh board with the code installed before adding the components it defaults to 1st Jan 00:00, even if you set the time via the buttons, keeps the time until it is powered down. Re upload the code and it keeps that time.

    This is as confusing to me as it gets! Especially as it worked perfectly with the original PongClock V2.27. Sadly I can't get the old code to work as it compiles with so many errors on the new IDE and even on the older ones.


    Answer 1 year ago

    Hi you should be able to change the RTC from the original DS1307 to the DS 3231 without any code changes. Could it be the SCL and SDA pins on the RTC are reversed?


    Answer 1 year ago

    Well spank my thighs and call me Susan, what a stupid thing can cause days of problems.

    Turns out that the RTC that I ordered from China came with batteries, take the battery out and it showed the correct voltage but once inside the RTC, the voltage dropped. So put a new battery in the RTC and bingo! Working like a charm :-)

    Sorry for taking up your time with irrelevant questions but it goes to show that you shouldn't assume anything!

    (still no idea why it was reverting to the same time I uploaded the code and not 00:00, but now its working that is the least of my worries!)


    Answer 1 year ago

    No problem. Glad you got it sorted.


    2 years ago

    THis looks great. On the new version on your website is the control panel and pir mounted out of the box?

    9 replies

    Reply 1 year ago

    That's correct. The PIR does not work through glass so it would need to be mounted on or outside of the case. The main use of my 2nd clock is a kitchen clock with timer so I have mounted the control panel low down near the worktop. The control panel can be fitted in the case if required.


    Reply 1 year ago

    Thanks for getting back to me. I am only just getting round to making this. I have connected it all up but only one screen is working. I have the switches set. I have swapped over the cs to confirm the screen works. all the pins beep through. Now i am looking at the code but the pins confuse me . the 7.5 code looks like all the pins are set wrong. I assume they are correct as one screen works. I have never used one of these devices. Am i missing something?


    Reply 1 year ago

    Just realised the ide and ic pins are different numbers. Still not sure why the 2nd led screen isn't working


    Reply 1 year ago

    Have you checked the power lead to both displays? I seem to remember power has to go all power connectors?


    Reply 1 year ago

    I just found the tiniest of shorts on track which caused it not to work. I will now continue testing.


    Reply 1 year ago

    Hi nr002542.

    That's good news. Hope it all works OK now.


    Reply 1 year ago

    It starts up and loads the screen with the version number. It then sits there and then turns the screen off. i haven't had time to explore. I had one version i took the pir code out. As a test i put it back with a pir as i thought i missed a bit.


    Reply 1 year ago

    If you don't have a PIR connected mod the code or just connect IC pin 14 high.


    Reply 1 year ago

    Hi Thanks for getting back to me. i have just swapped the power connector and still the same result. Can't really see what is wrong with my hardware or software. Hopefully on the weekend i will have more time to look.


    1 year ago

    Which component makes this clock capable of syncing with the master clock?

    1 reply

    Reply 1 year ago

    The only component required is resistor R8. This presumes your master Clock has a 30 second positive pulse.


    3 years ago

    This project makes me long for the days when I was more tech geek! Like I even had the Battery of the Month card from Radio Shack: