Build a Desk Focus Timer with Waveshare Pico-LCD-1.3

Use a compact color screen and its buttons to make a timer with predictable start, pause, and reset behavior.

PineMux Editorial 29 Sep 2026 3 min read

E-Paper & Displays

Pico-LCD-1.3 + Raspberry Pi Pico — source hardware reference
Reference photo: Waveshare. Hardware or source project shown; see the guide for the proposed build.

01 / Project overview

This build adapts the Pico-LCD-1.3 display example into a desk timer. The module has a 240 × 240 IPS panel driven through SPI. Keep the manufacturer’s display initialization and input mapping intact while you develop the timer as a separate piece of application logic.

02 / Materials & software

ItemWhat to check
Pico-LCD-1.3Use the Pico module, not the similarly named Pi HAT.
Raspberry Pi PicoFit headers suitable for the module.
USB data cablePower and program the first prototype by USB.
Computer with development toolsUse the environment required by the selected official demo.

03 / Connections & first setup

Align the Pico’s header orientation with the module’s labels before applying power. Start from the exact Pico-LCD-1.3 demo so its SPI and button pins are correct. Avoid assigning an extra peripheral to a GPIO already used by the screen or controls.

04 / Build the project

  1. Prove screen and buttons

    Run the official display demo and its input test. Verify every button you intend to use. Record the demo version before editing; a known-good display program is your quickest recovery point.

  2. Define three actions

    Use one button to start or pause, one to reset, and one to change the preset while idle. Write these rules down before coding. A reset should require a deliberate action rather than happen on every repeated key event.

  3. Track elapsed time

    Calculate remaining time from a monotonic clock and stored elapsed time. Do not decrement a counter merely because a screen redraw completed. A slow frame or a long button press must not change the meaning of one minute.

  4. Design one simple screen

    Keep the remaining time large, add a small state label, and show the preset only when useful. Draw only changed regions if the driver supports your chosen method. Keep touchless buttons easy to operate beside the display.

  5. Verify a short cycle

    Use a ten-second development preset to test completion, then compare a longer cycle with a separate clock. Pause halfway through and check that resumed time excludes the pause.

Application logic — pseudocode

remaining = duration - accumulated_running_time
START: store monotonic start time
PAUSE: add elapsed interval to accumulated time
RESET: clear accumulated time and return to IDLE

05 / Check the result

CheckExpected behavior
PauseThe displayed remaining time stops changing.
ResumeThe timer continues from the paused value.
CompletionOne completion event occurs; time does not become negative.

Troubleshooting. If the timer drifts, inspect timekeeping before optimizing graphics. If inputs repeat unexpectedly, handle press transitions and debounce them. Keep the manufacturer’s pin definitions in one place so changing application states cannot accidentally reconfigure the display.

06 / Sources & build notes

Prepared by PineMux from the official sources above. These are editorial build instructions; this project has not been bench-tested by PineMux. The cover shows reference hardware or a source project; image credit is provided above. Use the manufacturer’s revision-specific diagrams for exact wiring.

Shopping Cart
Scroll to Top