Arduino WordClock

Very nice!

Regards,
Raj

Hey

Great work! I was more or less inspired by this post and by seeing one for real and started doing it myself as well. All is ready now but I'm facing serieus issues with the light: when using a sticker with a transparante background (so the letters are transparent) than the light is to strong and to much in one bundle (not enough spread) so you can't see the letters any more. Using a sticker with a white background makes it not transparent enough and my leds are almost not getting through... you only see it lighting up a bit... any hints how you handles this part?

Thanks!

Stijn:
All is ready now but I'm facing serieus issues with the light: when using a sticker with a transparante background (so the letters are transparent) than the light is to strong and to much in one bundle (not enough spread) so you can't see the letters any more. Using a sticker with a white background makes it not transparent enough and my leds are almost not getting through... you only see it lighting up a bit... any hints how you handles this part?

Hi Stijn,
Glad I could inspire someone :smiley:
After thinking of lots of possible ways to create the letter mask ranging from etching a copper clad PCB, printing on acetate, cutting letters out of sticky back plastic and getting them laser cut out of card/plastic sheet I settled on a simple and cheap option of using a laser printer to print a reversed negative image on ordinary white printer paper. This piece of paper is cut to size then sandwiched between 2 bits of perspex. One is 3mm thick tinted that you lay the unprinted side of the paper on. Then you lay a 2mm thick clear sheet on top and tape/glue around the edges to keep it all together. I used a 2mm clear sheet because I had roughly calculated the light cone of the LED's would be the right size to illuminate the size of character printed on the paper when it's 2mm away without to much bleed into adjoining characters. This sort of worked when the display was dim but when it was bright I still got some bleed and had to resort to gluing black plastic straws between LED's. By luck more than judgement the printed paper worked very well and I did not have to bother messing around with different weight paper to get the desired effect.
You could try putting a ordinary bit of printer paper behind your transparency and see if it helps.

Hey thanks for the fast response!

I started off with ordering venyl stickers which is rather expensive to 'test' so I feel stuck after ordering a few of them... the next one should be the right one. I'm working on a 50x50cm.

Here you can see the results so far:

Using a transparent sticker:

And a non transparent one:

I tried black 'light' paper between it, I tried white paper, I tried normal white paper, I tried so many things :slight_smile: nothing works so far...

I must have been very lucky the first (and only) thing I tried worked for me.
Are you using MAX7219 chips or multiplexing with shift registers and are the LED's 5mm? I used 5mm high brightness white LED's and a couple of MAX7219 chips to keep the brightness up as multiplexing tends to dim the LED's.

I'm using 2 MAX7221 chips, they work great. Apart from that also 5mm high brightness leds, but just using 2 MAX7221s, they don't dim that much... just have to figure out a better solution...

Hiya

where did you get the big stripboard plates ?

Beta1977:
where did you get the big stripboard plates ?

It was hard to find a suitable large stripboard but I got it from here http://uk.farnell.com/vero/01-0042/veroboard-179-07x454-66mm/dp/1536942?Ntt=stripboard enough to make 2x clock (that I did)

The led looks a bit focused. Did you get the diffuse LEDs or not? Diffuse leds can be viewed from a large range of angles. Their plastic housings look rougher than a smooth plastic surface.

liudr:
The led looks a bit focused. Did you get the diffuse LEDs or not? Diffuse leds can be viewed from a large range of angles. Their plastic housings look rougher than a smooth plastic surface.

If this question is directed at me then no I did not use diffused LED's. I used these http://uk.mouser.com/ProductDetail/Cree-Inc/C535A-WJN-CS0V0151/?qs=%2Fha2pyFadugYYN%2FkEaGd5KoOjGvMC7QxGs05ryBegjRuYV232%2FuYlWKl%252b6XNvG2l to get the desired light cone diameter 1.6mm-2mm above the lens.

Sorry, it was for Stijn. I can see small light spots in the middle of each text so a diffuse LED may help illuminate larger portion of the text stencil and make reading it easier.

Hello again Riva,

I'm having a little trouble understanding some parts of the schematic, I added some notes for the questions that I have. http://cncorpmisc.weebly.com/ It's probably obvious and I don't realize it. the one caption is supposed to read "how does this connect"
Klawd

Attached is an image that should make the connections clear.

Great project with really nice outcome! Congrats!!
=)

Hello Riva and everyone,

After almost a year, I finally got some "extra" time to start to build my word clock.
I was revieweing the code to fit my purposes and when I started to search for the MAX 7219 library that is included in your sketch <MAX7219.h>, I found that there are more than one libraries to work with this IC.
There are libraries that support cascading when others don't...
There are libraries with names like LedControl that are also supposed to work with this IC

Can you (or anyone that knows) please give me the link to the MAX7219 library that I should use in this project?

Thank you for any help.

saturno:
Can you (or anyone that knows) please give me the link to the MAX7219 library that I should use in this project?

The libraries I used for this project are in a file called 'WordClock Libraries.zip' attached to post #4
Good luck with the build, both my clocks are still working nicely. The one with the DS3231 is a lot more accurate than the DS1307 version but with code tweaking I have managed to get it within 2 minutes per year time drift.

Hi Riva!

I did missed that link. Thanks for pointing me out.
Actually, the RTC I have available right now for this project is the DS1307 which from your experience is not the best one for this kind of project. I'll change it...

Another thing that I will have to work is the Font. I need to add some "special" characters like ç, é, í, etc...
From my understanding, I need to add their "design" to the Fonts you already included, in the first place. After this, is there anything else that I need to change to be able to use them in a scrolling message?

Still regarding the Fonts, can you explain to me what's the meaning of the last digit/couple of digits defined after each character?
e.g.:

    B11001100, B00000000,	//"
    B11001100, B00000000,
    B11001100, B00000000,
    B00000000, B00000000,
    B00000000, B00000000,
    B00000000, B00000000,
    B00000000, B00000000,
    8,

    B00110011, B00000000,	//#
    B00110011, B00000000,
    B11111111, B11000000,
    B00110011, B00000000,
    B11111111, B11000000,
    B00110011, B00000000,
    B00110011, B00000000,
    12,

I am referring, in this example to the 8 and 12 in the last line of each character. Other characters have different codes.

Once more, thank you for all your help.
When I get something that worth to show, I'll post some pictures.

saturno:
Actually, the RTC I have available right now for this project is the DS1307 which from your experience is not the best one for this kind of project. I'll change it...
You can get reasonably accurate with a DS1307 given a little time. For me the DS1307 was loosing about 8.5 seconds per day (It take several days to get a good average) so I just put in a bit of code to add 8.5 seconds at midnight each day.

Another thing that I will have to work is the Font. I need to add some "special" characters like ç, é, í, etc...
From my understanding, I need to add their "design" to the Fonts you already included, in the first place. After this, is there anything else that I need to change to be able to use them in a scrolling message?
If you want to add the characters into the correct position to match the extended ASCII table then you will need to define all the characters prior to the last one you need or at least put spaces in the chars you don't define else the loadBufferLong code won't work properly (It will also need altering to accept a larger font tabe as it's current upper limit is 0x7F). You could also define the extra characters to replace un-used characters in the current font (things like {}[]|<>).

Still regarding the Fonts, can you explain to me what's the meaning of the last digit/couple of digits defined after each character?
The last number is used for kerning the font character. It is normally the bit number of the right most bit (start counting from the left of the two bytes) + 2 and defines how wide the character is. I have highlighted the right most bits in both examples and you will see the number is the bit position of the widest point (starting with left byte/bit) plus 2 bits.
e.g.:

B11001100, B00000000, //" Bit position 6 (counting from left) highlighted in red
B11001100, B00000000,
B11001100, B00000000,
B00000000, B00000000,
B00000000, B00000000,
B00000000, B00000000,
B00000000, B00000000,
8, // 6+2

B00110011, B00000000, //#
B00110011, B00000000,
B11111111, B11000000, // Bit position 10 (counting from left) highlighted in red
B00110011, B00000000,
B11111111, B11000000,
B00110011, B00000000,
B00110011, B00000000,
12, // 10+2

I am referring, in this example to the 8 and 12 in the last line of each character. Other characters have different codes.

Once more, thank you for all your help.
When I get something that worth to show, I'll post some pictures.
Will be nice to see someone else's work

Superb explanation!

As for the space reserved for the loadBufferLong, I understand that it needs to be increased to allow loading more characters.
Since there are only few characters that I need to add, maybe I'll take your suggestion to replace some of the unused to the ones that I need to add.

Thank you.

Hello Riva,

After several hours around the build of the matrix (mine is 475 x 475 mm), I've just managed to see the result of half of the matrix (just one MAX completely connected by now).
The result is not what I was expecting. Without thinking or questioning, I used the diagram presented in the file "Clock7.pdf" to wire the first max to the arduino and as I can now see, my assumption was not correct.

Here is what I have done:
Since we usually read from left to right, I supposed that since you placed the IC1 at the right side of IC2, the schematic was drawn as seen from the back, i.e. when you see the watch from the front, the IC1 becomes the left and the IC2 on the right; and I wired my matrix exactly as in the schematic. At the moment, only the IC1 that, seen from the back of the watch, it is on the right side (right half) and when we turn around to see the "lights", it is on the left side.

Well the problem is that I missed something and now I have the initial string appearing from the left to the right (wrong) and, even worse all the characters are backwords (like mirrored). To see the characters correctly, I would need to turn around and see the watch from it's back...
(I hope my explanation make sense).

So, the question is: Can I "fix" my matrix without the need of rewiring everything?
What is the correct way to build the matrix?
(I can upload a little video to show you the problem)

Thank you for any help.

saturno:
After several hours around the build of the matrix (mine is 475 x 475 mm), I've just managed to see the result of half of the matrix (just one MAX completely connected by now).
The result is not what I was expecting. Without thinking or questioning, I used the diagram presented in the file "Clock7.pdf" to wire the first max to the arduino and as I can now see, my assumption was not correct.
The schematic was the one I used to build both clocks so should work. It is based on this article. What you may have done (I did it first time) is forget that when your wiring the back of the board the SegX are reversed.
Here is what I have done:
Since we usually read from left to right, I supposed that since you placed the IC1 at the right side of IC2, the schematic was drawn as seen from the back, i.e. when you see the watch from the front, the IC1 becomes the left and the IC2 on the right; and I wired my matrix exactly as in the schematic. At the moment, only the IC1 that, seen from the back of the watch, it is on the right side (right half) and when we turn around to see the "lights", it is on the left side.
I'm not sure what the effect would be with only one chip as the matrix information is cascaded through one MAX into the next from right to left when LED's viewed from the front.

Well the problem is that I missed something and now I have the initial string appearing from the left to the right (wrong) and, even worse all the characters are backwords (like mirrored). To see the characters correctly, I would need to turn around and see the watch from it's back...
All you need to do is reverse the order of the 8/16 SegX pins and it should come good.