Introduction: Make an Old TV Into an 80s Themed Clock
This Instructable shows how you can turn any TV or monitor into an animated 80s themed clock with "melting" digits!
From the Atari color palette, to the use of an analog composite video signal, everything about this clock screams retro! Even the melting digits have quite a bit of history behind them, being first conceived by Steve Capps, a designer of the original Apple Macintosh, in 1976 (the year I was born!). As a kid, I came across a version of this clock for the Mac Plus and I have loved the visual style ever since!
I made my first version for the Arduino several years ago, but this one is an improvement in many ways!
- Uses the way more powerful ESP32 microcontroller
- Fewer components and much easier to put together
- Improved visual design and details
- Four different color themes!
- Web based configuration
- Network time synchronization
A Warning About CRT Burn-In
It was well known in the 80s and 90s that leaving a unchanging image on a CRT would eventually lead to burn-in, which would cause a permanent mark on the screen. This clock displays a fairly static image which will almost certainly cause some degree of burn-in over time. While you can delay the effect by reducing the image brightness, you should be aware that using this clock 24/7 will eventually cause irreversible marking of the display. So I do not recommend you use this on a CRT you want to keep pristine! To avoid this problem, you can consider using an LCD panel with a composite input instead of a vintage CRT.
Supplies
- One Adafruit HUZZAH32 Feather
- If you don't wish to solder, stacking headers are recommended for the jumper wires
- A micro USB cable
- Either:
- Two wires with alligator clips and a RCA composite cable
- RCA terminal block and jumper wires (best!)
- Any device that can show an NTSC or PAL composite signal via a yellow RCA jack
- A vintage CRT television or a modern flat panel TV
- A PC monitor that accepts a composite signal
- A small display from a car backup camera kit
- A video projector
Step 1: Download the Source Code
- Visit the GitHub page for the esp32-dali-clock source code
- Click on the green "Code" button, then "Download ZIP"
- Uncompress the zip file to your hard disk someplace
Step 2: Connect the ESP32 to Your TV or Monitor
- Use an alligator clip to connect the pin labeled "GND" on the Adafruit HUZZAH32 to the outside barrel of the RCA plug
- Use an alligator clip to connect the pin labeled "A1/DAC1" on the Adafruit HUZZAH32 to the central pin of the RCA plug
- Connect the other end of the RCA cable to the yellow jack on your TV or monitor
Step 3: Get and Configure the Arduino IDE
- Download the Arduino IDE from the Arduino web page.
- Select "File -> Preferences" and type "https://dl.espressif.com/dl/package_esp32_index.json" into the "Additional Boards Manager URLs"
- Hit "Okay"
- Select "Tools -> Board: (xxxxxxx) -> Boards Manager..."
- Type "ESP32" in the search bar
- Select the latest version from the dropdown and click "Install"
- Once the installation is over, click "Close" to quit the Boards Manager
Step 4: Compile and Upload the Sketch
- From the Arduino IDE, select "File -> Open..." and find the "esp32-dali-clock.ino" inside the source code folder you unpacked earlier
- Select "Tools -> Board (xxxxx) -> ESP32 Arduino -> Adafruit ESP32 Feather"
- Plug in the ESP32 Feather to your computer using a micro USB cable
- Select "Tools -> Port" and select the serial port for your board
- If your TV only supports the PAL standard, skip ahead to step 7, make the changes, then return here.
- Select "Sketch -> Upload"
Step 5: Configure the Dali Clock Via WiFi
At this point, you should see the clock on your display, but the time will be incorrect.
Using your phone or computer, connect to the wireless point called "ESP32 Dali Clock". This will take you to a configuration webpage.
At this point, enter the information for your wireless network in the "Network Name" and "Network Password" fields. Also select your time zone and whether your location is observing Daylight Saving Time. Click "Submit" to complete the configuration and reboot the board.
Watch the screen for status information as the ESP32 connects to the network. If you need to reconfigure the clock, you will need to use the web address that is indicated on the screen.
Step 6: Selecting the Color Scheme
You can use the "Color Theme" drop down menu to select one of the following choices:
- Time-of-Day Blend: The colors will gradually change throughout the day, giving a visual indication of time of dat.
- Minute Blend: Cycle through all the color variations in a minute, for demonstration purposes.
- Night Theme Only: Always use the night color scheme
- Dawn Theme Only: Always use the dawn color scheme
- Day Theme Only: Always use the day color scheme
- Dusk Theme Only: Always use the dusk color scheme
Step 7: Optional: Changing the Color Mode to PAL
If you are using a TV that only supports the PAL standard, such as might be the case if you live in Europe, you will need to change a few lines of code prior to uploading the sketch, as indicated in the picture.
Step 8: Optional: Triggering the Calendar Display
Add two additional wires to the pins labeled A5/4 and A4/36. If you touch the end of the wires with your finger, it will trigger the display of the calendar date momentarily.

Second Prize in the
Retro Tech Challenge
34 Comments
Question 11 months ago
I like this project very much. I also bought the ESP32 WROOM-32 development board. The source code is compiled and uploaded to the development board. The TV also shows the time, but when I connect to the "ESP32 DALI CLOCK" WIFI through the mobile phone, it prompts "The network access is denied ". I used the laptop to connect to the WIFI again, but there was no prompt, but it was always in a state of being unable to connect. Please help me, thanks! cheers!
Question 1 year ago
Hello again
I wonder if you can make this clock in COMPOSITE version?
https://www.instructables.com/Talking-Tetris-Clock...
Many thanks
Erik Hoffman
1 year ago
I made the clock, and put it in a huge battery as well as putting it in a nice case.
1 year ago on Step 8
How can i get it to display time in 12 Hour format?
2 years ago
Where do you connect the RCA terminal block?
Reply 2 years ago
See step 2 for the hook up guide!
Reply 2 years ago
The
Blink and Wifi test was successful.
I kept getting the message that the
src.compositegrafics.h Lacked.
I installed several libraries but
without the desired result.
Reply 2 years ago
It looks like this problem occurs because the Arduino IDE moves the esp32-dali-clock.ino file into a new directory, but does not move the "src" directory into the same directory. If you manually do this, then it should work. If not, upgrade to the latest version of the Arduino IDE.
Reply 2 years ago
Thank
you for the answers. Now, after successful uploading, I get the message
in the last line: Leaving... Hard resetting via RTS pin... I get the
following text in the serial monitor: etching Jul 29 2019 12:21:46
rst:0x1 (POWERON_RESET),boat:0x13 (SPI_FAST_FLASH_BOOT) configsIP: 0,
SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
Mode:DIO, Clock Div:1 load:0x3fff0018,len:4 load:0x3fff001c,len:1044
load:0x40078000,len:10124 load:0x40080400,len:5856 entry 0x400806a8 no
config file. The sketch can't be seen on my TV.
Reply 2 years ago
This looks normal. You should be abled to connect to it via WiFi using your phone. It should also be generating an image at this point. If not check your wiring and make sure your TV has the correct input source selected.
Reply 2 years ago
Dear
Marciot, I get the sketch on my TV now.
It looked like the alligator
cables weren't right.
I now soldered cables to the composite cable and
it worked.
But now I have a mirror image of time on my TV.
I can change
the image in the GFX library but not take the mirror image out of it.
Is
there a solution for this?
Regards, Pjoterke
2 years ago
Hi Marciot
IT WORKS!!!!!
Thanks so much, I begin to like you!!!
2 years ago
Hi Marciot
Thanks for the code and so much effort but it failed to rotate
I shall continue to play with the forum
Regards
Erik
Reply 2 years ago
It’s occurred to me that maybe you didn’t download all the new code from the repo. Remember how you had to move files around? Maybe there are multiple copies of the files. I suggest deleting all the source code. Everything. Then download a new zip file from the GitHub page, then I comment the #define GFX_UPSIDE_DOWN line, then recompile and reupload. Can you try that?
2 years ago
Love this project but how to include SPIFFS and the rest of the stuff - could not do it
This project is expained in many details but does not say anything about how to include anything, especially the src
Would love Marciot to explain for the benefit of all
Many thanks
Erik
Reply 2 years ago
I just checked my Arduino IDE and it does not appear as if I needed to install any specific libraries for SPIFFS. This seems to be standard once you've selected the correct board according to the Instructions in step 3 and 4. If that does not help, check to see if you are using Arduino IDE 1.8.16 and that you've installed version 1.0.6 of the esp32 package from Espressif Systems in the Boards Manager (Tools -> Board -> Boards Manager)
Reply 2 years ago
Thanks so much for the quick response
I have followed your instructions and it partially works
Now it stops on the first 'src/gfx/CompositeGraphics.h: No such file or directory
It seems that the src folder is missing from the sketch
Where and how you put all the files in the src folder?
Thanks again
Erik
Reply 2 years ago
Hi Marciot
Got it, the src folder has to be inside the sketch folder, the problem is when you double click on the sketch to create it, this happens - see below.
Thanks so much, will connect and let you know
Reply 2 years ago
Ah, this explains why some people were having problems. I now rearranged the files in the repository so that this won't happen anymore.
Reply 2 years ago
I followed the Advanced Configuration by adding the line #define GFX_UPSIDE_DOWN removing the commented lines
in the beginning of the src/gfx/compositegraphic.h but without success
it is still upside down on my display - help needed
Thanks
Erik Hoffman