You can build a visible Arduino countdown timer by pairing a compatible SSD1306 OLED with an Arduino board, then calculating the remaining time from millis() rather than pausing the program for a second at a time. This guide uses an I2C display and a pushbutton as a practical design; it explains the board-specific wiring, library setup, timer logic, and how to decide what happens at zero.
Choose a compatible board and OLED
The example below assumes an Arduino Uno Rev3, a monochrome SSD1306 I2C OLED, and a pushbutton. The Adafruit SSD1306 library supports compatible I2C and SPI displays, including 128×64 and 128×32 variants when used with Adafruit_GFX. Check the exact module documentation before wiring: resolution, I2C address, voltage tolerance, and pinout vary by product. The library’s supported interfaces and setup are documented in the Adafruit SSD1306 library documentation and Adafruit monochrome OLED guide.
| Choice | What to consider |
|---|---|
| I2C OLED | Uses SDA and SCL signals, plus power and ground; the module may also expose reset. It is the simpler wiring option described here. |
| SPI OLED | Requires additional module-specific signal wires, including clock, data, chip select, and data/command. Use the matching library constructor and wiring. |
| 128×32 or 128×64 SSD1306 | Both resolutions are supported by the cited Adafruit SSD1306/GFX combination; configure the sketch for the actual display size. |
For an Uno Rev3, connect OLED SDA to A4/SDA and SCL to A5/SCL. Connect power and ground only as allowed by the board and display module. Other Arduino families can use different I2C pins; consult the Uno Rev3 pinout or the documentation for your specific board rather than assuming this mapping applies universally.
Install the display libraries and verify the screen
- In the Arduino IDE Library Manager, install
Adafruit SSD1306andAdafruit GFX Library. The SSD1306 driver depends on Adafruit_GFX. - Set the display width and height in the sketch to match the module, such as 128 and 64 or 128 and 32.
- Run a basic text or splash example before adding timer logic. This isolates display wiring, address, and driver setup from countdown bugs.
If the screen remains blank, confirm its address and interface from the module documentation, verify SDA/SCL and power, and check that the selected display dimensions match the code. Do not assume every breakout accepts the same supply voltage.
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
Use elapsed time instead of a blocking delay
millis() returns the elapsed time since the board began running. Record its value when the timer starts, then derive the remaining duration from the elapsed time. This keeps the loop available to read buttons and update the screen; a long delay(1000) can make controls feel unresponsive. Arduino documents millis() among its time functions at Arduino millis() reference.
const unsigned long durationMs = 2UL * 60UL * 1000UL;
unsigned long startedAt;
unsigned long lastShownSecond = 0xFFFFFFFFUL;
bool running = false;
void startTimer() {
startedAt = millis();
running = true;
}
void updateTimerDisplay() {
if (!running) return;
unsigned long elapsed = millis() - startedAt;
unsigned long remaining = elapsed >= durationMs ? 0 : durationMs - elapsed;
unsigned long secondsLeft = (remaining + 999UL) / 1000UL;
if (secondsLeft != lastShownSecond) {
lastShownSecond = secondsLeft;
unsigned int minutes = secondsLeft / 60;
unsigned int seconds = secondsLeft % 60;
display.clearDisplay();
display.setCursor(0, 0);
display.print(minutes);
display.print(':');
if (seconds < 10) display.print('0');
display.print(seconds);
display.display();
}
if (elapsed >= durationMs) {
running = false;
// Optional: trigger a buzzer or show a completion message here.
}
}
This is the timing core, not a complete uploadable sketch: it assumes a correctly initialized display object and a button handler that calls startTimer(). The expression rounds remaining milliseconds up to the next displayed second, so a newly started 2-minute timer shows 2:00 and does not display zero until the chosen duration has elapsed. For a different duration, change durationMs.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
Define controls and timer states
A simple pushbutton can start or reset the timer. Use a pull-up or pull-down arrangement appropriate to the circuit, and account for switch bounce so one press does not register multiple times. Arduino’s registry describes a debouncing library for pushbuttons at Gemelon Pushbutton library. A capacitive touch input is another option, used in an individual Nano timer project; it is not required for this build (Arduino timer with touch sensors).
| State | Behavior to implement |
|---|---|
| Idle | Show the preset duration. A start press records the current millis() value. |
| Running | Recalculate and redraw only when the visible second changes; continue checking inputs on each loop. |
| Paused (optional) | Store the remaining time at pause, then use it as the new duration when resumed. This requires separate pause/resume logic. |
| Complete | Latch at zero, display a completion message, or sound an optional buzzer. Choose one behavior rather than allowing the countdown to roll into an unintended restart. |
For a first version, a start button and a reset action are enough. Reset should stop the countdown and restore the displayed preset; starting again should set a fresh start timestamp. A buzzer is optional: one individual Nano project combines a piezo buzzer and capacitive touch controls, but those parts are not requirements for a visual timer.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
Test the timer in stages
- Confirm the display can show text with the intended resolution and driver configuration.
- Test the button independently and verify that a single press produces one action.
- Start the countdown and watch the seconds change without relying on a one-second blocking pause.
- Observe the transition to zero and verify the chosen completion behavior remains latched until reset or an explicit restart.
- Test on the final board and OLED module; board pin mapping, module voltage tolerance, and display address are hardware-specific.
A portable power bank can sometimes shut down when a project draws too little current. An individual project describes a workaround for its own setup, but that behavior and fix should not be generalized; verify the chosen power source with the assembled timer.
Quick Recap
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

