Great-Grandparents' Digital Dream Alarm Clock

The digital LED clock that your (great-) grandparents would have used without difficulties!

Public Chat
Similar projects worth following
I remember I always had to set all digital clocks for my grandparents in the 80s - these clocks and watches always required some complicated button juggling! So, here it is: a DIY LED alarm clock that my grandparents would have been able to set and use without my help!

An Arduino-based LED clock with 7 individual alarms, highly intuitive user interface, temperature display, and display of days / hours / minutes passed since a special date, e.g., your birthday. An active / ringing alarm can be disabled by making a loud noise, e.g., by clapping your hands. Timer-based PWM sound output for alarm melodies.

The Arduino's EEPROM is being used to store the alarms of course, and the DS3231 RTC is battery backed up, so it survives a temporary power outage and you won't be late for work the next morning.

This was put together rather quickly, thanks to off the shelf components, Velcro and existing Arduino libraries for them! The clock can be built for about 30 - 40 $.

These are all off the shelf components. It is inexpensive and easy to assemble; I just soldered things on an Mega 2560 Arduino prototype board. Note that you can also use the Uno R3; but then, some pins change obviously. Just find the right places in the code. 

The following ATmega / Arduino pins are being used:

  • Analog TMP36 Temperature: A0
  • Strobes for TM1638 modules: 31, 33, 35
  • Clock for TM1638 modules: 27
  • Data for TM1638 modules: 29
  • I2C Clock for DS3231: SCL1 = 50
  • I2C Data for DS3231: SDA1 = 52
  • Speaker / toneAC output: 11 (12)

The ino sketch is in the files section of this page. Please make sure you have the corresponding standard Arduino libraries installed; the clock is using:

  • DS3231.h
  • toneAC.h
  • TM1638.h
  • EEPROM.h

and of course stdio.h

The code is a bit sloppy.... sorry for that. If you want to change the special date which is being used in the clock to show the number of days (hours, minutes) that passed since that special date, e.g., your date of birth, graduation or marriage, just change the hardcoded date in showStatus(), in the call to the "days" function (see the assignment to unsigned long diff in the showStatus() function). That should really be a constant and not be hardcoded - something for you to change and improve in the code ;-) 

Please watch the YouTube video for some details regarding usage and the intuitive user interface:


Arduino Sketch for Arduino Mega 2560.

ino - 14.28 kB - 06/13/2019 at 06:26


  • 1 × Arduino Mega 2560
  • 1 × Arduino Mega Prototyping Board
  • 1 × USB Power Supply
  • 4 × Nuts and bolts
  • 1 × DS3231 RTC I2C Battery-Buffered Clock Module

View all 13 components

  • 1
    Program Arduino with provided .ino sketch
  • 2
    Assemble Components on Prototyping Board
  • 3
    Get metal steel plates from Ace, and join then with small bent L brackets and metal screws and nuts such that it gives a wedge shape.​

View all 4 instructions

Enjoy this project?



Craig wrote 04/18/2020 at 23:00 point

Nice.  Having grown up on analog alarm clocks and then split flap clocks, I still get excited with 7-segment clocks.  All the benefits of split flap without that tiny little noise of the flaps mocking me that another minute has passed and I am still awake.

  Are you sure? yes | no

Ken Yap wrote 06/14/2019 at 02:49 point

Funny how red LED displays come out pink or salmon in digital photos. I had the same effect in my photos of LEDs. The sensors must have a different curve from the human eye. Or perhaps the automatic white balance is affecting it. I should learn about chromatics some day.

  Are you sure? yes | no

Michael Wessel wrote 06/14/2019 at 06:13 point

Right, it doesn't come out as nicely as they really look. The glowing red is missing from the pictures.

  Are you sure? yes | no

Michael Wessel wrote 06/13/2019 at 13:59 point

Thanks Ken, yes indeed, it is TM1638 of course. Corrected the typos. Right, you can get the LED + Buttons board for 6 $, and the other 2 LED "tubes" for 2 to 3 $. And the DS3231 and other components are all below 5 $ as well. So, that clock can be built for ~30 $, the most expensive part being the Arduino, USB PSU, and the industrial strength Velcro that holds it together :-D

Cheers Michael

  Are you sure? yes | no

Ken Yap wrote 06/13/2019 at 08:30 point

Very nice. 👍

Component list: TM1683 or TM1638? Those displays (and onboard buttons and LEDs) are so cheap, only require a couple of lines to drive, and are easily integrated into projects. 👏

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates