Showing posts with label dual LED matrix. Show all posts
Showing posts with label dual LED matrix. Show all posts

Saturday, February 23, 2019

Mondrian clock software release

Unbelievably, there is still demand for the Dual LED matrix shield for Arduino, which also pressures me to maintain and upgrade the supporting software, usually on client's request.
And that is how the Mondrian clock got a couple of new display modes: one picked directly from the Cube clock, showing just hours and minutes, the other one an improvement of the same, with the addition of a red dot moving around the rectangular clock face to indicate the seconds.
The display mode changes when both buttons are pressed simultaneously.

Here is the clock in action.


The Mondrian clock uses the Dual LED matrix shield and wsduino (as an RTC-equipped and XBee-supporting Arduino-compatible).
The code is available here. There is no GPS support, but that can be copied and adapted from the previous version of Mondrian software.

Note that the LED matrix shield was designed to accommodate either the common-anode or the common-cathode LED matrices, by soldering the correct LED driver, either A2982 or ULN2803 respectively. In the software, use either one of these defines:
#define _COMMON_ANODE_
//#define _COMMON_CATHODE_

The only user interface on the shield is the pair of buttons. Pressing the left one will increment the hours, the right one will increment the minutes, while the seconds are always reset.
By pressing both buttons at once, the display mode cycles through Mondrian mode (red hours, green minutes, orange seconds), 24-hour mode (HH:MM in green), 12-hour mode (HH:MM in orange), and moving second red dot (12-hour, HH:MM in green, more square font).

Saturday, March 26, 2016

GPS-synchronized Mondrian clock

The challenge was to add GPS to this "basic LED matrix clock".


Since I don't see the point of a GPS clock that does not show seconds, I had to figure out how to fit 6 digits on the 8x16 LED matrix. One way to do it is this:


as used by the "Matrix Clock V1.0". Kind of hard to distinguish between 0 and 8 though.

Another way is based on MixiClock, where 4 digits are crammed in a 8x8 (tri-color) matrix. (This was more than 4 years ago. Incredible how little progress I made since.)

As for the name, I settled for "Mondrian" because Kandinsky was already taken :)



The hours are shown in red, the minutes in green and the seconds in orange. After power up, the seconds blink until the GPS time is received (less than 5 minutes in my house, more than 3 meters away from the nearest window). Only the minutes and the seconds are synchronized (but not the hours).

The Mondrian clock is made of 2 boards: the wsduino with the GPS Bee plugged in (and the antenna affixed on the back with double sided tape, as shown in the next photo), and the LED-mini-display shield.


The GPS Bee module is connected on the hardware serial port (there are only a couple of pins left available, D2 and D17).
The clock has two buttons (on the LED matrix shield) used for incrementing the hours and the minutes respectively. The GPS synchronization occurs every 10 hours. That should be more than enough, considering that the highly accurate DS3231 on the wsduino board is responsible for timekeeping.
The clock, powered by 5V, consumes less than 200mA.
The sketch can be found here (compiles on Arduino IDE 1.0.6 and has dependencies on TinyGPS and DS1307 libraries).


Friday, November 4, 2011

CubeClock

This would make a nice replacement for the original glass-domed WiseClock.


















I named it CubeClock for the simple reason that it is encased in a baseball display case, found on ebay for about $5.
It includes Wiseduino (with on-board RTC), a LiPo battery shield (I used the one from seeedstudio, but others should work too), a prototype shield with the cheap "orientation sensor" introduced here, and the bi-color LED mini-display shield.

The bottom board is the Wiseduino, secured to the box with 2 screws. The other shields are just stacked on top of each other. The battery shield from seeedstudio, discussed here, uses a 1,000mAh LiPo battery (did not come with the shield), attached to the shield itself with plastic ties. The clock can be turned on or off (to save the battery) from the power switch on the Wiseduino.

CubeClock can also be powered through the USB cable plugged into the battery shield (which also charges the LiPo battery), as shown below.















A closer look is shown in the next photo. The 2 buttons on the mini display shield and the power switch are on the opposite side. They are accessible after the top of box is removed, as is the FTDI connector.















The current sketch running on CubeClock is almost identical to the one on SillyClock (and IllyClock, for that matter), since the mini display shield uses almost the same schematic as the dual bi-color LED matrix shield.
The next release of the software should involve the "2-axis tilt sensor" (already connected on pin A3) to change the display according to its orientation. It could also include the displaying of messages from the 32KB EEPROM on the Wiseduino board (as does the glass-domed WiseClock).

Other ideas:
  • add infrared receiver (on D2, with interrupt; code picked from WiseClock);
  • add buzzer (on D16/A2, the only pin left unused at this point) for alarm clock functionality (half-implemented in the software already).

Tuesday, November 1, 2011

From the "fan club" - LindorClock

Fellow Arduino enthusiast Anjan sent me these photos of his own interpretation of IllyClock, encased in a "compatible" Lindor chocolate case. I think it looks great.

From the email:
I put this one in a Lindor chocolate case and so the name. I had to cut the Lindor case to almost 2/3 rd the height to make it fit and look nice. The front design is still not complete, as you can see the  components and wires inside.





































He used his own LED matrices with my Dual bi-color LED matrix shield, hence the wires and the prototyping board in the next two photos.




























Keep up the great job Anjan. You are an inspiration to others.

Thursday, August 25, 2011

New in store: Bi-color LED mini-display shield

This is my third and newest LED display shield for Arduino. It features two 8x8 RG (red/green/orange) 3mm LED matrices and it has the Arduino form factor, so it stacks perfectly on top of an Arduino 2009/Uno.

This Bi-color LED mini-display shield uses a similar schematic as my other Dual LED matrix shield, based on four 595 shift registers and a driver, in SMD package. The two 8x8 RG LED matrices plug into the machined (round) female headers.















The photo below shows all 3 LED shields together for size comparison, along with an Wiseduino. The "LED mini-display shield" introduced here is in the top-right corner. (All other shields in the photo are sold out.)















This LED mini-display shield also features 2 right-angle micro push buttons.















The LED mini-display shield comes fully assembled and tested.


  (US$35, free shipping to North America)


  (US$40, free shipping outside North America)


The LED mini-display shield can be seen in this video, plugged into an Arduino running a test sketch.



The source code used in this demo can be found here.

Images of the schematic (download Eagle file) and board (download Eagle file) can be seen below.














Wednesday, August 3, 2011

IllyClock revisited - the minimalist look

Remember IllyClock, the Arduino-alarm-clock-in-a-coffee-can (featured on Instructables.com)?

We now have a new streamlined version, featuring rechargeable battery shield, tilt switches, infrared receiver, buzzer.
Although some of the "cool factor" is lost, this version is easier to build, a bit more practical (it is "portable") and smarter (with new, extended, software).
















It was just a matter of time until someone would prefix the name IllyClock with an S. I wanted to be the first one on the record to do that; so from now on, we'll name this new version SillyClock.

NOTE: One more reason to call it "silly". I wrongly assumed that the previous IllyClock sketch, referencing a rotary encoder, would work without modifications with the new dualRG LED matrix shield, which has the rotary encoder replaced by two buttons. My apologies to anyone whom I misled with my assumption. The modified code can be downloaded from here. This file contains the sketches for both IllyClock (with rotary encoder; identical with the old code) and SillyClock (with 2 push buttons).

SillyClock is built using:
  • Wiseduino+ (Arduino-compatible, with ATmega328, has on-board DS3231 real time clock and 256KB of EEPROM);
  • dual RG LED matrix shield (has on-board tilt switch, two push buttons and infrared receiver);
  • Li-Ion battery shield (third party, there are many out there to chose from);
  • a second tilt switch and a piezo buzzer, both placed in the proto-area of Wiseduino+;
  • two laser-cut plexiglass plates (plus standoffs, screws and nuts) as enclosure.















Here is a (TODO) list of  features I will add to the software in the next few days:
  • take advantage of the tilt switches to display scrolling time and quotes when the clock is placed horizontally, as in BookClock;
  • make use of the Infrared receiver for remote control;
  • hourglass;
  • kitchen timer.
On the hardware side, I would add, under the back transparent plate, a solar panel for recharging the battery (this feature is supported by the battery shield, I believe). Stay tuned.

Saturday, December 18, 2010

New and improved "Dual LED matrix shield"

Updated June 12/2011
Added schematic and board images, and provided the Eagle files.

The latest revision of the "Dual LED matrix shield" is shown in the photos below.















This board is a bit longer so that it can be fitted with standoffs on both sides.
It also features an on-board tilt switch (white cylinder in the photo above), two push buttons and an infrared receiver.















The two RG (Red, Green, Yellow) LED matrices are inserted in the machined headers (round pins), after the components are soldered to the board.

The schematic and board (also available as Eagle files here and here, respectively) are shown in the images below.















(Click on the image to get a bigger size.)











Related posts:

Sunday, March 14, 2010

Scrolling text on the Dual RG matrix shield

As one may recall, the "Dual RG matrix shield" was introduced as the display for IllyClock. In that case, it showed the time (hour and minutes) statically.

Earlier, I wrote a sketch for this shield that displays moving (scrolling) text. Somebody may find it useful, and that is why I thought of sharing it.

The demo sketch, tested with Arduino IDE 18, can be downloaded here.
This is how it looks in action.


Friday, February 12, 2010

Assembling the "Dual Bi-color LED matrix shield" kit

This kit contains the following parts:
  • PCB (compatible with Arduino shields);
  • two 8x8 bi-color bright LED matrices (side is 47mm or 1 7/8" in length, 5mm LEDs);
  • 4 x 74HC595 shift registers;
  • ULN2803 transistor array;
  • 4 x 16-pin IC socket;
  • 32 current-limiting resistors;
  • 4 x 100nF decoupling capacitors (color may vary);
  • 4 x 12-pin machined female headers;
  • 40-pin male header;
  • rotary encoder with push button and knob.

To assemble the kit, follow the step-by-step process below.
  1. insert the four 16-pin IC sockets, making sure that their notches match those in the silkscreen; their orientation is important (errors are not fatal though), since it will indicate the orientation of the ICs which will be later plugged into them; solder the sockets, making sure that they are close to (touching) the board;



  2. cut the 40-pin male header in 4 pieces, two 8-pin and two 6-pin, then solder them in their corresponding places; these are the pins which will plug into Arduino's (female) extension headers; as always with the shields, it is advisable to have them plugged into the Arduino extension connectors while soldering them to the shield;



  3. solder the four 12-pin female headers; these are the connectors for the LED matrices;



  4. solder each resistor after placing it vertically (bend one terminal 180 degrees);



  5. solder the decoupling capacitors;



  6. place the ULN2803 chip, paying attention to its orientation (notch on chip must match notch on silkscreen) and solder it;
  7. carefully insert the integrated circuits into their respective sockets, matching the notches (socket-chip); to make sure they can be inserted, bend the pins on both sides just a tad (as shown here, courtesy of adafruit), so they become parallel;



  8. insert the LED matrices, paying attention to their orientation: pin 1 of the matrix must match pin 1 on the board (the pin numbers are hand-written by me on the back).



    The assembled shield should look like the one below.




    Related posts:

Sunday, February 7, 2010

Introducing the "Dual bi-color LED matrix shield"...

Updated Sep 29, 2011
Check out the newest LED matrix shield here


Updated Dec 18, 2010
A newer and better revision of the "Dual LED matrix shield" is available. Check it out here.
As of today, instead of the rotary encoder, the kit includes an infrared receiver, a tilt switch and two right-angle push buttons (see photos here).


... or, in other words, an Arduino shield that has two side-by-side, red-and-green 8x8 LED matrices. As probably everybody in the Arduino community knows by now, the most straightforward way to drive all these LEDs is through shift registers, specifically 74HC595. Which is exactly the way this shield is built: it has 4 of the 595 chip, each driving 8 columns of the same color. The 8 rows are connected to 8 output pins of Arduino (3, 7-13) through the ULN2803 transistor array.

The schematic is shown below (download Eagle file here).


This is the layout of the board (download Eagle file here).


The two LED matrices cover the components on the board and they get plugged into machined female headers for sturdy and reliable contact.

The LED matrix is UVP-2788 (datasheet here) and its internal circuit diagram looks like this:



This shield is used as part of the IllyClock. Originally it was designed to accommodate a push button and an infrared receiver, but these two components were dropped for an external (not on-board, but connected through wires) rotary encoder with push button.

You can buy the dual matrix shield here, as a kit containing the following parts (as seen in the photo below):

  • PCB;
  • two 8x8 bi-color bright LED matrices (side is 47mm or 1 7/8" in length, 5mm LEDs);
  • 4 x 74HC595 shift registers;
  • ULN2803;
  • 4 x 16-pin socket;
  • 32 resistors;
  • 4 decoupling capacitors (100nF);
  • 4 x 12-pin machined female headers;
  • 40-pin male header;
  • rotary encoder with push button and knob (not pictured).

(US$35, free regular shipping to North America)

(US$40, free regular shipping outside North America)



Creative Commons License
This work by FlorinC is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.


Related postings:

Friday, February 5, 2010

Introducing IllyClock - alarm clock in a coffee can

Updated Aug 3/2011
Check out the "minimalist" version here.




Borrowing from Ladyada's idea of encasing the MintyBoost in an Altoids tin box, I thought that a coffee can, Illy in particular, would make a good enclosure for an alarm clock.

The electronics is based on Wiseduino (Arduino clone with DS1307 real time clock on board), with a LED matrix shield sitting on top. The shield is built with 74HC595 shift registers that drive two bi-color (red, green, and orange by subtraction) 8x8 LED matrices.

The clock uses a rotary encoder with button as the only user input.
The functionality is simple and intuitive:
  • time is shown as hour and minutes;
  • clicking the button will show, using the symbol of a bell, the state of the alarm (enabled or disabled);
  • double clicking the button will show the alarm time and allow the user to set the alarm hour and alarm minutes (toggle between the two by clicking the button); increment the numbers by rotating the knob;
  • holding down the button will allow the user to set the time;
And here is an original feature: three hours before the alarm will sound, the time is shown in orange; one hour before the alarm will sound, the time is shown in red. So just by squinting at the clock, one can realize how much longer one can sleep.

Here it is in action:


A few details on the dual matrix shield can be found below.
(I will dedicate another post to this shield though.)





The shield was originally designed (as it is shown in the schematic above) to be equipped with an infrared receiver and a push button. "Hacking" it to take a rotary encoder instead is trivial.

The diagram below shows how the user can change the clock's state by either rotating the encoder or pushing the button.





Related:

Tuesday, January 26, 2010

What a difference...

... can a header/connector make.
Until today I used to plug the 8x8 LED matrices into these cheap and ubiquitous 40-pin female headers:
The round and thin pins of the LED matrices won't fit snugly the wide gaps of the above female headers. These headers are designed to work best, I strongly suspect, with the thick rectangular pins of the, also ubiquitous and cheap, 40-pin male header:


My LED matrices did not make firm contact when plugged into the above pictured female headers. Even scarier, every little touch seemed to affect the contacts, regardless of my efforts to find an easy solution (bend outwards the matrix pins a bit, thicken them with solder, insert them as deep as I could etc).

The final and permanent solution was to replace those headers altogether, with these round machined female pins:

They are a bit more expensive, but make a huge difference in terms of firmness of the contact.
They are also shorter, bringing the LED matrix closer to the board. That requires some attention when sockets are to be used: they should be either inside or outside the matrix package itself.
(Unfortunately I am talking from experience, since I had to remove a socket which was spread under two matrices.)


A different topic, but under the same umbrella of lessons learned: buying and using USB adapter power sources.
To shorten the story, this is the conclusion: when you buy such an USB adapter, never assume the output is 5V and just plug it into your expensive device!
Out of about 10 I bought on ebay, shipped from their manufacturers in China, 2 of them output 9V, way above the expected 5V. Although not statistically accurate (is there such a thing?), this is a 20% failure rate. Before plugging it on, always measure the output voltage to make sure it is what you expect.

Monday, May 11, 2009

Wise Clock version 3, aka "Wide Clock"

The case, bought for a song from a photo shop, was designed for storing 4x6 photo prints. It has a hinged glass door (initially painted black), held in place with little magnets. The nice thing beside the good look is that there is room for expansion (XBee, battery charger, SD card etc).

Watch it in action (video) here.

Saturday, May 9, 2009

Arduino display shield with two 8x8 LED matrices


Apparently, the single 8x8 LED matrix in Wise Clock is not big enough to properly read scrolling messages, so my friends suggested I should make the display bigger.
With minimal changes (hardware and software), I was able to meet their "requirement". So, instead of a bi-color (red/green) matrix, I connected 2 single color (red) matrices to the same shield. Next step was to modify the sketch to use the bigger field.