This stunning display was made as a countdown for the 2019 New Year, though it can be used to countdown to any event. The wait for birthdays, holidays, trips, and any special event can be hyped up with ease using this project.
The device transitions between data types automatically (Ex. shows days and hours when days remain, but taking up the whole screen with the final seconds). While displaying information, a smooth RGB color cycle is displayed through the text color. When the event arrives, a personalized message and mixing RGB background is displayed.
The device can be unplugged and maintain accurate time thanks to an RTC(real time clock) with an independent battery.
RTC SetupTo use the RTC correctly, we set its time before using it in our project. To do this we will use the Arduino Uno and RTC.
First, insert a 3 volt coin cell battery into the RTC.
Start by making the following connections:
- UNO GND -> RTC GND
- UNO 5V -> RTC VCC
- UNO A5 -> RTC SCL
- UNO A4 -> RTC SDA
Once this is complete, copy the "Accurate RTC Clock setter" code from the repository linked under Code. Paste the code into a new sketch in the Arduino IDE, then click Sketch-> Include Library -> Manage Library. Search for and install the RTClib library. While we are here, do the same for the RGBmatrixPanel library.
In the setup function is a call to the rtc.adjust() method. This sets the rtc clock to the current date and time as of the sketch's compiling.
A TimeSpan() attribute is added to this call which adds a number of seconds to the current time to compensate for how long it takes to compile and upload. Upload the sketch to the Arduino Uno and open the Serial monitor.
Then, go time.gov to get the exact time with seconds, compare this to the Serial monitor and find the difference, if there is any. Apply this difference to the Time Span() call until the times are very close to perfectly in sync.
Once the RTC time is synced, you may move on.
"Building" the DisplayUse this as reference:
https://learn.adafruit.com/32x16-32x32-rgb-led-matrix/featured_products
First things first, the LED matrix uses a good bit of power, so we will start by satisfying that need. Cut and Strip the ends of the power matrix's power cable, it should have metal circles or tabs. Insert and fasten the wires into the female DC jack. Be sure that the bare copper of the wires don't connect to each other, some electrical tape is recommended to ensure this.
Now, plug in the display to ensure the connections worked, as long as nothing sparks, you've successfully provided power to your display.
Now, follow the directions here to locate the input of the display.
Then, complete the wiring outlined here to connect the Arduino. Note that anytime the instructional images show a D pin, it should be replaced with another ground pin.
The finished wiring of the cable should look like this:
The wiring for the RTC should stay the same.
Coding the DisplayCopy the "Arduino Code" from the repository linked to in the description and paste it into your Aduino IDE.
Before uploading, change the date and time information of the event being counted down to as well as the message to display once the event occurs. These can both be found outlined by comments at the top of the sketch.
The RGBPulseSpeed can also be changed to speed up or slow down the RGB text color cycle. Start by keeping it below 10.
Before the code can be uploaded, some libraries need to be added. go to Sketch->include library->manage library. then inport Adafruti GFX library and DS3231 library.
Then to import the Time library, go to https://github.com/PaulStoffregen/Time, download as a Zip file. In the Arduino IDE go to Sketch->include library->add zip library and import the library.
Once these variables are changed and the libraries are added, upload the sketch to the Arduino.
EnclosureI have yet to create a formal enclosure for this device, but my advice is to use the packaging of the LED Matrix to enclose the Arduino, RTC, and extra wiring, and then mount the panel on top using the magnetic screws provided.
I also suggest taping a slip of tracing (or parchment though I haven't tried) paper to the matrix as it softens the irritating light and somewhat conceals the unused LEDs. More paper will produce a more warm, but dulled display.
Use a 5v USB power block (brick) to provide the Arduino with power. I know it is inconvenient for the device to require 2 plugs, and take up an entire outlet, but it is the safest way of construction.
The countdown will automatically change to suit best suit the time left until the event. Once the event has occurred and your acquaintances have been wowed by the message and RGB animation, just unplug both cords to the display.
If the countdown is off, use the RTC setter code to change it until it is more accurate, I cannot stress how important accurate timing is.
FutureI am looking to create more animations to play when the event occurs, such as specialty ones such as fireworks and birthday candles. I am also working on allowing for more customization on messages. This was a quickly put together project (started on New Year's Eve Eve) so it certainly is not the most glorious code. I may work on improving readability and efficiency if I get around to it.
Thanks for checking out this project. If you have any comments questions or concerns please don't hesitate to contact me. I will provide a speedy response.
While your here, you might as well check out :
Be sure to respect if you liked this project and follow me for more projects like this.
Comments