
Analclock v1
sahko123/Analog-Watch
A watch that tells time using an analog voltmeter needle driven by a DAC. No screen. No hands. Just vibes and a carefully calibrated lookup table.

A watch that tells time using an analog voltmeter needle driven by a DAC. No screen. No hands. Just vibes and a carefully calibrated lookup table.
Analclock v2 is an open-source printed circuit board by sahko123, from the sahko123/Analog-Watch repository on GitHub. It is a 2-layer board of 42.3 × 28 mm with 51 parts on 61 nets, routed with 394 tracks and 62 vias.
It is built around the RP2040 and W25Q32JVSSIQ. Its parts include 15 capacitors, 9 resistors, 7 ICs, 4 switches and 1 connector. It belongs with the RP2040 boards of this library.
A watch that tells time using an analog voltmeter needle driven by a DAC. No screen. No hands. Just vibes and a carefully calibrated lookup table.
Featured in: I Built a Digital Watch With No Screen (YOUTUBE LINK)
It's a watch. Technically. A Raspberry Pi Pico reads the time and drives an MCP4726 DAC, which pushes a voltage to a panel meter whose needle sweeps to represent whatever time-related concept you've most recently asked it about.
By default it shows seconds. Because why would you want to know the hours.
Press a button.
| Button | Single Press | Double Click |
|---|---|---|
| Top | Hours | Date |
| Mid | Month | Seconds |
| Low | Day of week | — |
The needle will swing to the correct position. Stare at it. Contemplate what you've built.
| Path | What's in it |
|---|---|
ANALCLOCK_REV0_5.ino | Arduino sketch (RP2040) |
analclock v1/ | KiCad PCB project — main board revisions 1 & 2 |
analclock v1/analog_dial/ | KiCad PCB project — the meter dial board |
analclock v1/gerberv1/ | Gerber files for the main board |
analclock v1/analog_dial/analogdial1gerbers/ | Gerber files for the dial board |
*.svg / *.dxf | Watch face artwork |
*.step / *.stl / *.f3d | 3D printed parts |
The meter needle is non-linear, so the firmware uses a cubic polynomial LUT to correct for this. You can tune it over serial:
dac <value> — hold needle at a fixed DAC value
max <value> — set full-scale and rebuild the LUT
set <idx> <val> — manually poke a LUT entry
lut — print current LUT
tz <offset> — set UTC offset in hours
<unix timestamp> — set the time| Qty | Value | Footprint | References |
|---|---|---|---|
| 11 | C | Capacitor_SMD:C_0201_0603Metric_Pad0.64x0.40mm_HandSolder | C3, C4, C5, C6, C7, C10, C11, C12, C13, C14, C15 |
| 6 | ~ | TestPoint:TestPoint_Pad_D1.0mm | E6, E7, E8, E9, E10, E11 |
| 3 | SW_Push | Custom:EVQP7A | SW1, SW3, SW4 |
| 3 | ~ | Package_TO_SOT_SMD:TSOT-23-5 | U4, U5, U6 |
| 2 | 15pF | Capacitor_SMD:C_0201_0603Metric_Pad0.64x0.40mm_HandSolder | C1, C2 |
| 2 | 27 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R1, R2 |
| 2 | 36k | Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder | R7, R9 |
| 2 | C | Capacitor_SMD:C_0402_1005Metric | C8, C9 |
| 2 | R | Resistor_SMD:R_0603_1608Metric | R4, R5 |
| 2 | ~ | Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder | R6, R8 |
| 1 | B+ | TestPoint:TestPoint_Pad_2.0x2.0mm | E1 |
| 1 | B- | TestPoint:TestPoint_Pad_2.0x2.0mm | E2 |
| 1 | C+ | TestPoint:TestPoint_Pad_2.0x2.0mm | E3 |
| 1 | Crystal_GND24 | PCM_Crystal_Handsoldering_AKL:Crystal_SMD_Abracon_ABM8G-4Pin_3.2x2.5mm | Y2 |
| 1 | MCP4726 | Package_TO_SOT_SMD:SOT-23-6 | U2 |
| 1 | PROG | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R3 |
| 1 | RP2040 | Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mm | U1 |
| 1 | SW_Push | Custom:PTS636 | SW2 |
| 1 | USB_C_Receptacle_USB2.0 | Connector_USB:USB_C_Receptacle_GCT_USB4085 | J1 |
| 1 | V+ | TestPoint:TestPoint_Pad_2.0x2.0mm | E4 |
| 1 | V- | TestPoint:TestPoint_Pad_2.0x2.0mm | E5 |
| 1 | W25Q32JVSS | Custom:uson8 | U7 |
| 1 | ~ | Custom:BMM350 | U3 |
The 48 most common of 51 parts.

sahko123/Analog-Watch
A watch that tells time using an analog voltmeter needle driven by a DAC. No screen. No hands. Just vibes and a carefully calibrated lookup table.



murexrobotics/electrical
Highly integrated electronics design and printed circuit boards (PCBs) for the MATE ROV Competition. Attempt the impossible.


KaiPereira/Overglade-Badges
NFC hackathon badges for the Overglade game jam in Singapore!

NikodemBartnik/StarTrckr
Open source star tracker for deep sky astrophotography


It measures 42.3 × 28 mm and has 2 copper layers, 1.6 mm thick.
51 parts, built around the RP2040 and W25Q32JVSSIQ. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the sahko123/Analog-Watch repository on GitHub, at the commit this page was made from: the board is analclock v1/analclock v2.kicad_pcb and its schematic analclock v1/analclock v1.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask sahko123 before reusing the design.