| Problem | Likely Cause | Solution | |---------|--------------|----------| | Time resets when powering off | No backup battery | Install a CR2032 coin cell in the RTC module | | Wrong time after re-upload | Setting time every boot | Comment out setDS1302Time after first use | | Weird characters on Serial | Baud rate mismatch | Ensure Serial.begin(9600) matches monitor | | Library compile error | Wrong pin order | Check VirtuabotixRTC myRTC(clk, dat, rst) | VirtuabotixRTC vs. RTClib | Feature | VirtuabotixRTC (DS1302) | RTClib (DS1307/DS3231) | |---------|-------------------------|-------------------------| | Interface | 3-wire (any pins) | I2C (A4/A5 on Uno) | | Accuracy | ±2 minutes/month | DS3231: ±2 minutes/year | | Battery life | ~5 years | ~10 years | | Ease of use | Very simple | Simple, more features |
#include <VirtuabotixRTC.h> // Pin connections: CLK, DAT, RST VirtuabotixRTC myRTC(6, 7, 8);
#include <VirtuabotixRTC.h> VirtuabotixRTC myRTC(6, 7, 8); const int ledPin = 13; virtuabotixrtc.h arduino library
void setup() Serial.begin(9600);
// Print the time Serial.print(" – Time: "); Serial.print(myRTC.hours); Serial.print(":"); Serial.print(myRTC.minutes); Serial.print(":"); Serial.println(myRTC.seconds); | Problem | Likely Cause | Solution |
Open the Serial Monitor (9600 baud) and watch the live clock. This is where the RTC shines. Let’s turn an LED on at 8:00 AM and off at 8:00 PM.
| DS1302 Pin | Arduino Pin | |------------|--------------| | VCC | 5V | | GND | GND | | CLK | 6 | | DAT | 7 | | RST | 8 | Let’s turn an LED on at 8:00 AM and off at 8:00 PM
void loop() // Nothing here – this is a one‑time setup