Simple timer system created using Arduino UNO, with countdown functionality, pause/resume, LED and buzzer alerts, and LCD display for user feedback.
• Countdown timer with configurable time
• Add 30 seconds increments before starting
• Pause and resume functionality
• LCD 16x2 (I2C) real-time display
• Green LED indicates countdown is running
• Red LED + Buzzer alerts when timer ends
• Button debounce handling
• Serial Monitor logging (optional)
• Arduino UNO
• LCD 16x2 with I2C module
• 3x push buttons
• 1x Buzzer
• 1x Green LED and 1x Red LED
• Resistors (220Ω for LEDs, optional 10kΩ for pull-downs)
• Breadboard and jumper wires
• Arduino IDE
You can view the schematic in the file:
📄 timer-schematic view.pdf
The image below shows the circuit assembled on the Tinkercad platform:
| Component | Arduino Pin |
|---|---|
| Start Button | D2 |
| +30s Button | D3 |
| Stop Button | D4 |
| Green LED | D5 |
| Red LED | D6 |
| Buzzer | D7 |
| LCD SDA | A4 |
| LCD SCL | A5 |
All buttons are connected to GND on one side and use
INPUT_PULLUPon the Arduino.
- Connect components following the schematic.
- Open the
.inofile in Arduino IDE. - Select the correct board (Arduino UNO) and port.
- Upload the code.
- Interact with the buttons:
- Press +30s to increase the timer
- Press Start to begin
- Press Stop to pause
- Press Start again to resume
setup() // Initializes LCD, pins, and state
loop() // Handles button presses and countdown logic
startTimer() // Starts countdown from configured time
resumeTimer() // Resumes countdown from paused time
stopTimer() // Pauses countdown and stores time left
endTimer() // Ends countdown, triggers buzzer/LED
updateDisplay() // Shows time set before startingThis project is licensed under the MIT License — see the LICENSE file for details.
Albertina Rodrigues - albertinacrodrigues@gmail.comProject Link: https://github.com/albiecr/arduino-timer-project • Add rotary encoder for time configuration
• RTC (Real-Time Clock) integration
• OLED support • EEPROM time save
• Multiple timer modes (count up / intervals)
• Web interface via ESP8266
Contributions are welcome! Please open an issue or submit a pull request. - Fork the project
- Create your feature branch
git checkout -b feature/AmazingFeature - Commit your changes
git commit -m 'Add some AmazingFeature' - Push to the branch
git push origin feature/AmazingFeature - Open a pull request
