Daily Reminder Button / Calendar With Arduino
by defwheezer in Circuits > Arduino
1069 Views, 1 Favorites, 0 Comments
Daily Reminder Button / Calendar With Arduino
Multi-colored LED Arcade switches to record activity for each day of the week.
Supplies
The following times will be needed:
- Arduino Pro Mini (5v) microprocessor
- RBG addressable LEDs (Neopixels)
- Lighted arcade buttons like these.
- 7-Segment display w/I2C backback
- Chronodot (or similar) real-time-clock (RTC)
- Enclosure (I used a wooden one from a thrift store, but 3D-printing would provide many more options!)
- Arduino code: Github
Note, many of these items can be purchased on eBay for just a few $ if you are willing to wait 4-8 weeks for delivery.
General idea was to make an interactive (multicolored LED) wall hanging daily reminder thingus using some nice mechanical arcade-style pushbuttons.
Basically, every day a corresponding button would be indicated (by color) if the daily activity was done or not. Manually reset lights each week.
First, we need to gather our parts. Many of the small things (wires, resistors, capacitors, reset switches) should be available in your misc drawer, if not, then now is as good a time as ever to stock up.
For this project, I made a custom carrier board for the Arduino and Chronodot, but this is totally optional and I will not cover the etching process in this Instructable.
The basic wiring is shown in the picture.
Bread-board is wired up with all the Neopixels and buttons. This really helps to make sure that everythign works before you start soldering, but also once it is all working, you can transfer each component one-at-a-time to the soldering station for the final 'Kragle'.
Adding the Chronodot RTC and 7-Segment LED to the bread-board (note most of the Neopixels have been soldered up already). Both the Chronodot RTC and 7-Segment LED are controlled via I2C, so both of them only take up two wires total on the Arduino: the SDA and SCL lines (pins A4 and A5 on the Pro Mini).
For a slightly cleaner final interior, I made a carrier board for the Chronodot and Arduino.
An exploded view of the lighted arcade switch. We need to replace the white LED with our fancy addressable Neopixs!
Each button will get a custom mask to indicate the day fo the week. These are simply made by laser printing onto clear sheets (I double them up to make the black background darker). I have included a sample mask you can use as is, or use the dimensions for your own design.
Each Neopixel is soldered with yellow (data in), green (data out), red (5V), and black (gnd). The Neopixel is then mounted in the switch housing (see exploded switch diagram in Step 5) that had the original white LED in it.
Each Neopixel and capacitor is wired up from the breadboard starting from the far end and working back. Neopixels are "daisy-chained" such that the data IN line from the first LED comes from Arduino, the data OUT line then goes to the data IN line of the next LED, and so on. The last LED just leaves the data OUT line NC (not connected).
Close up of one full assembly before putting the button housing on.
The first image shows the front assemblies of the switches with corresponding day mask added.
These are then mounted on the enclosure (I was aiming for around 12" Tall by 3" Wide by 2.5" Deep to accommodate the 7 buttons and display). The wired-up switch/Neopixel assemblies simply twist-snaps onto the front assemblies.
The final interior is still a bit of a rats nest, but the carrier board, 7-segment display, power in and reset button all fit!
The final thingus worked out pretty well!
Final working thingus! The 7-segment display is only displaying the current date (month and day), though it can alternate between that and the time of day easilly enough, or even to display additional info on button pushes.
I have the color set so that the current day is orange, when pressed on that day it turns blue, and when pressed for previous days it is green (if not pressed on that day it stays off, not light).
Since each button can display virtually any color, they could be programmed for multiple pushes per day, for instance.