Skip to the content
PCBKitNew board
2 layers101.6 × 53.3 mmTimer, the printed circuit board in 3D

Arduino Pomodoro timer with LCD, buttons, RGB LED and buzzer. Includes KiCad hardware design; protoshield assembly in progress.

Size
101.6 × 53.3 mm
Copper layers
2
Thickness
1.6 mm
Parts
24
Nets
86
Pads
148
Tracks, vias
0, 0
Routed
Not yet
KiCad
KiCad 10.0 (file 20260206)
Created
7 Sep 2026
Updated
7 Sep 2026

Overview

Timer is an open-source printed circuit board by pycoder08, from the pycoder08/arduino-pomodoro-timer repository on GitHub. It is a 2-layer board of 101.6 × 53.3 mm with 24 parts on 86 nets.

Its parts include 7 connectors, 5 resistors, 3 switches, 1 IC and 1 diode. It belongs with the lEDs and displays boards of this library.

README

README.md

Arduino Pomodoro Timer

A desktop focus timer I built around an Arduino Mega, a 16x2 LCD, three push buttons, a buzzer, and an RGB LED. It runs configurable focus/break cycles and signals each transition with color and sound.

Breadboard prototype with Mega 2560, LCD, buttons, buzzer, and RGB LED

Status

The breadboard prototype works — I've run the timer through its focus and break cycles on it. The schematic and PCB layout are drawn in KiCad and included here. I'm currently soldering the circuit onto an Arduino protoshield.

I have not fabricated the custom PCB yet, so the layout is a work in progress rather than something I'd send to a fab house today. Routing and design-rule checks still need a pass.

Features

  • Three focus/break presets: 25/5, 15/5, and 50/10 minutes
  • Start, pause, and resume, with the remaining time preserved across a pause
  • Tap Reset to skip to the next phase; hold it for a second to cancel the session outright
  • Preset selection with the mode button while idle, remembered in EEPROM across power cycles
  • Count of sessions finished since power-on, shown on the idle screen
  • Countdown on a 16x2 LCD
  • Red RGB LED breathing during focus, solid green during breaks
  • Multi-note buzzer melodies at session transitions

Button handling, the melodies, and the LED breathing are all non-blocking, so the countdown stays accurate and the buttons stay responsive no matter what else is happening.

Hardware

Arduino Mega 2560, 16x2 LCD, three push buttons, a passive buzzer, a common-cathode RGB LED, resistors, breadboard, and jumper wire. LCD contrast comes from a fixed divider (roughly 8.5k to 5V and 1k to ground) rather than a trim potentiometer, so no pin is spent on it.

The sketch drives the RGB LED on pins 44–46. Those are PWM-capable on the Mega, which the breathing effect needs, and they don't exist on a Uno — remap them if you build this on a smaller board. I still need to document exact component models and resistor values.

Pin assignments

FunctionArduino pin
LCD RS12
LCD enable11
LCD D4–D75, 4, 3, 2
Start / pause6
Reset7
Mode8
Buzzer9
RGB red44
RGB blue45
RGB green46

Buttons are wired active-low using INPUT_PULLUP and are debounced in software. This table covers the software pin assignment only — check LCD contrast wiring, your RGB LED's common pin, and current-limiting resistors against your own build.

Running it

  1. Open timer.ino in the Arduino IDE, letting it create the enclosing timer folder if prompted.
  2. Make sure the LiquidCrystal library is installed. EEPROM ships with the IDE.
  3. Select your board and port, confirming the pins above exist on it.
  4. Compile and upload.

KiCad files

Timer.kicad_pro is the main project, with Timer.kicad_sch for the schematic and Timer.kicad_pcb for the layout. Arduino_MountingHole.pretty holds the custom mounting-hole footprints the board references.

focus_timer_schematic.kicad_sch is an earlier sheet covering just the Arduino header connections, kept for reference.

A note on the code

I wrote this project's firmware with AI assistance. The circuit design, breadboard build and testing, schematic capture, PCB layout, and protoshield assembly are my own work.

To do

  • Finish the protoshield soldering and retest every control
  • Document component models and resistor values
  • Run design-rule checks on the PCB before fabricating
  • Test all three presets, pause/resume in both phases, tap and hold Reset, and the full focus-to-break transition
  • Persist the session count across power cycles, or roll it over on a real clock rather than at power-on

Parts

24
QtyValueFootprintReferences
6MountingHole_3.2mmArduino_MountingHole:MountingHole_3.2mmMH1, MH2, MH3, MH4, MH5, MH6
3220Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R2, R3
3SW_PushButton_Switch_THT:SW_PUSH_6mmSW1, SW2, SW3
2AnalogConnector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJ3, J5
110kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR4
11kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR5
1BuzzerBuzzer_Beeper:MagneticBuzzer_ProSignal_ABT-410-RCBZ1
1CommunicationConnector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJ6
1DigitalConnector_PinSocket_2.54mm:PinSocket_2x18_P2.54mm_VerticalJ7
1LED_RGBLED_SMD:LED_RGB_5050-6D1
1PWMConnector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJ4
1PWMConnector_PinSocket_2.54mm:PinSocket_1x10_P2.54mm_VerticalJ2
1PowerConnector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJ1
1RC1602ADisplay:RC1602AU1

Questions

How big is the Timer PCB?

It measures 101.6 × 53.3 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Timer use?

24 parts. 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.

Where can I download the Timer KiCad files?

From the pycoder08/arduino-pomodoro-timer repository on GitHub, at the commit this page was made from: the board is Timer.kicad_pcb and its schematic Timer.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Timer design in my own project?

Its repository states no licence, so its author keeps all rights: ask pycoder08 before reusing the design.

Similar boards

  • 2 layers56 × 65 mmSeaTalk1, the printed circuit board in 3D

    SeaTalk1

    dotnet/iot

    This repo includes .NET Core implementations for various IoT boards, chips, displays and PCBs.

    24 parts2.4kMIT
  • 2 layers26.2 × 45.5 mmPL18 multiprotocol, the printed circuit board in 3D

    PL18 multiprotocol

    pascallanger/DIY-Multiprotocol-TX-Module

    Multiprotocol TX Module (or MULTI-Module) is a 2.4GHz transmitter module which controls many different receivers and models.

    24 parts1.9kGPL-3.0
  • 2 layers58 × 35.5 mmHat, the printed circuit board in 3D

    Hat

    menloresearch/asimov-1

    v1 of Asimov, an open-source humanoid robot

    24 parts1.4kCERN-OHL-S-2.0
  • 2 layers21.6 × 19.5 mmMicron Logo LED, the printed circuit board in 3D

    Micron Logo LED

    DraftShift/StealthChanger

    Tool changing system for Vorons and other front mount printer motion systems, not just stealthburner.

    24 parts1.2kGPL-3.0
  • 2 layers158 × 11 mmRainbow Matchstick, the printed circuit board in 3D

    Rainbow Matchstick

    VoronDesign/Voron-Hardware

    Cool Hardware designed by the Voron Design group

    24 parts1.1kGPL-3.0
  • 2 layers85.6 × 54 mmTRACED wio1262-carrier, the printed circuit board in 3D

    TRACED wio1262-carrier

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    24 parts915
  • 2 layers36 × 20 mmCombined, the printed circuit board in 3D

    Combined

    adamb314/ServoProject

    Getting the most out of your hobby servo

    24 parts545