A fun, interactive 2-minute toothbrush timer designed to make brushing teeth enjoyable for kids. Features 16 colorful LEDs and 10 randomized celebration animations to reward good brushing habits!
This Arduino-based toothbrush timer uses an ATtiny88 microcontroller to create an engaging brushing experience. Press the button to start a 2-minute countdown visualized by progressively lighting up LEDs. When time's up, enjoy a random celebration animation as a reward!
- 2-Minute Timer: Precisely timed for the dentist-recommended brushing duration
- Visual Progress Bar: 16 LEDs (Green → Yellow → Red) fill up as you brush
- 10 Celebration Animations: Random reward animation after each session
- No Repeat Logic: Never shows the same animation twice in a row
- Low Power Idle Mode: Gentle pulsing LEDs when waiting for button press
- USB Powered: Runs on any standard USB power bank
[G] [G] [G] [G] [G] [G] [G] [G] [G] [Y] [Y] [Y] [Y] [Y] [R] [R]
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
- Green LEDs (0-8): First 60 seconds
- Yellow LEDs (9-13): Next 40 seconds
- Red LEDs (14-15): Final 20 seconds
After completing the 2-minute timer, one of these animations plays for 15 seconds:
- Strobe - Fast flashing all LEDs
- Confetti - Random LEDs popping like fireworks
- Scanner - "Knight Rider" style back-and-forth sweep
- Curtain - LEDs close in from edges to center
- Fill & Drain - Sequential fill and empty pattern
- Meteor - Light trail falling from top to bottom
- Breathing - Smooth fade in/out effect
- Middle-Out - Explosion effect from center outward
- Marquee - Theater-style chasing lights
- Bouncing Ball - Single LED bouncing between edges
- Microcontroller: ATtiny88
- LEDs: 16x (9 Green, 5 Yellow, 2 Red)
- Button: Momentary push button (active low)
- Power: USB power bank (5V)
- Case: 3D printed enclosure (STL file included)
- Button: Pin 8 (INPUT_PULLUP)
- LEDs: Pins 0-7, 16-23 (see code for mapping)
ToothBrushTimer.ino- Main Arduino sketchToothBrush Timer.stl- 3D printable case designWire List.ods- Component wiring diagramCktbd Atmel Side.jpg- Circuit board photo (ATtiny88 side)Cktbd LED Side.jpg- Circuit board photo (LED side)Pinout_x8.jpg- ATtiny88 pinout reference3d case back.jpg- Photo of assembled case
- Install Arduino IDE
- Add ATtiny board support:
- Go to
File > Preferences - Add to "Additional Board Manager URLs":
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json - Go to
Tools > Board > Boards Manager - Search for "attiny" and install
- Go to
- Select
Tools > Board > ATtiny88 - Upload
ToothBrushTimer.ino
- 3D print the case using
ToothBrush Timer.stl - Wire components according to
Wire List.ods - Program the ATtiny88 using an ISP programmer
- Assemble in case and connect USB power
- Power On: Connect USB power bank
- Startup: LEDs sweep back and forth
- Idle: LEDs gently pulse waiting for button press
- Start Timer: Press the button
- Brush: LEDs fill up over 2 minutes
- Celebrate: Enjoy the random animation!
- Repeat: Timer automatically returns to idle mode
- Total Duration: 120 seconds (2 minutes)
- Per LED: 7.5 seconds (120s ÷ 16 LEDs)
- Celebration: 15 seconds
- Idle Pulse: 300ms cycle per LED
- Random Seeding: Uses
micros()for true randomness on each button press - No Repeat Logic:
do...whileloop ensures different animation each time - Time-Based Animations: All animations accept duration parameter for consistency
- Software PWM: Breathing effect uses fast switching for smooth fading
Check out the included images to see the circuit board assembly and 3D printed case!
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Feel free to:
- Add new celebration animations
- Improve the timing or LED patterns
- Enhance the 3D case design
- Submit bug fixes or improvements
Created with ❤️ for making toothbrushing fun for kids!
- Inspired by the need to make dental hygiene fun
- Knight Rider scanner animation pays homage to the classic TV show
- Thanks to the Arduino and maker community for inspiration
Happy Brushing! 🦷✨