Hello World! This project is an Arduino-based clock that repurposes an Ender-3 Pro printer display and rotary encoder into a permanent, appliance-style timepiece. The ST7920 LCD is driven over hardware SPI using U8g2, and the encoder is handled through interrupts for responsive and accurate input. Timekeeping is provided by a DS3231 RTC module, ensuring long-term accuracy and retention across resets and power loss, while EEPROM is used to store user settings so configuration persists without reentry. The interface uses a 12-hour time format with a clear AM and PM indicator and provides audible feedback through a piezo buzzer using tone variation rather than simulated volume control. The system is designed to be stable, predictable, and capable of running unattended for extended periods, treating reclaimed hardware as functional hardware rather than a novelty or demonstration project.
Components
1×
Elegoo Uno R3
Arduino R3 Clone
1×
ST7920 Display
Spare Stock Ender 3 LCD Display
1×
Ender Clock-Duino Stand
See links to download .stl file
This DS3231 RTC module includes a charge path intended for a rechargeable LIR2032, implemented using a small series resistor and a glass diode feeding the VBAT node. Since I am using a standard CR2032 (non-rechargeable), I disabled the charging path.
To do this, I identified the resistor located directly next to the glass diode associated with the battery circuit (both resistors on this board are marked “102”). I lifted one leg of the resistor that feeds the diode, effectively opening the VCC → VBAT charging path while leaving the battery connected to the DS3231’s VBAT pin.
After lifting the resistor, I installed a CR2032 coin cell, set the time, unplugged the clock for several minutes, and then re-applied power. The RTC retained the correct time, confirming that VBAT backup is functioning normally and that the coin cell is no longer being charged from VCC.
This modification prevents unintended charging of a non-rechargeable coin cell while preserving full RTC backup operation.