4-Stroke Digital Clock




Introduction: 4-Stroke Digital Clock

The "4-Stroke Digital Clock" driven by Arduino is a fun emulator of an internal combustion engine in a digital clock.

Hours and minutes digits represent the pistons moving and with a precise RPM control (100 to 800).

The RPM are shown by two columns in the center of display.

Another interesting visual information is the firing sequence "1-3-4-2" of cylinders.

Spark starts when the piston is at the top of cylinder in the compression cycle.

The code is a good exercise for managing dot matrix pixels and for introducing a simple animation feature.


Step 1: The 4-Stroke Internal Combustion Engine

The engine model used in this project is an I4 (four cylinders in line) in 4-Strokecycle.

The 4-stroke internal combustion engine works in 4 steps (Intake-Compression-Combustion-Exhaust) as illustrated in the diagram:

  1. Intake
  2. Compression
  3. Combustion
  4. Exhaust

C=Crankshaft / R=Conrod / P=Piston / V=Valves / S=Spark Plug

Note: More basic information of Internal Combustion Engines can be find at Wikipedia.

Step 2: The Clock

In this project the digits of Hours and Minutes simulate the pistons moving and the spark is highlighted in correct time for all cylinders.

The rotation is accurately calculated to represent the actual speed and the value is adjusted by a rotary potentiometer from 100 to 800 RPM (Revolutions Per Minute).

Step 3: Material List & Assembly

  • Arduino UNO R3
  • LED Dot Matrix with MAX7219
  • DS1307 RTC (Real Time Clock)
  • Rotary Potentiometer - 10K Ohms
  • Breadboard
  • Print Template
  • Jumpers

The assembly is very simple but you must follow the attached breadboard diagram with attention.

Epilog Challenge 9

Participated in the
Epilog Challenge 9

2 People Made This Project!


  • Make It Bridge

    Make It Bridge
  • For the Home Contest

    For the Home Contest
  • Big and Small Contest

    Big and Small Contest



3 months ago

Hello. What happened to the code? Seems to be gone. I've done this project few years ago, wanted to get back to it. Will You upload code again, please?


5 years ago

Your innovation towards using various ideas to show time impresses me! well done. Only 1 suggestion: At higher RPMs is there any better way to show time so that it is clearly visible?


Reply 5 years ago

Hello, ravijag !!

Thank you for the comments!

I think your wish is out of the scope of this project.
My idea is to reproduce a real combustion engine working in unusual way: as a digital clock!
The RPM is calculated to show the real speed starting in 100 RPM.
I defined the maximum 800 RPM because it is the idle speed of a regular street car.
I could have done a filled retangle to represent the pistons moving, but the funny is to use the hour and minutes for that !!