Construction of Word Clock v1
Moderators: pedja089, stojke369, trax, InTheStillOfTheNight
Re: Construction of Word Clock v1
Yes I read it and tried this way but this shifting of bits does not work(moved bits appears in completely different positionn)
That's why i asked for a help.
That's why i asked for a help.
Re: Construction of Word Clock v1
Have you tried the "main()" function for this, as I suggested on the first page?
This mapping is done for rows, and for columns - separately.
I realize that the schematics for the LEDs are missing from the project, and this poses a problem for anyone who wants to build this clock. To solve that, here is the final "max72xx_send_matrix()" function:
and in the attachment you can find schematics of how to connect LEDs to MAX chips. If you don't want to change the code to fit your current wiring, please use this schematics and re-arrange wires you soldered (if you already soldered them) on MAX chips so that it look this way.
Let me know if you need anything else.
This mapping is done for rows, and for columns - separately.
I realize that the schematics for the LEDs are missing from the project, and this poses a problem for anyone who wants to build this clock. To solve that, here is the final "max72xx_send_matrix()" function:
Code: Select all
// send "data matrix" array to all MAXes
void max72xx_send_matrix()
{
uint8_t max_id, j, max_addr;
// since MAXes and LEDs are arranged in a funky way, we need to "transform" the data_matrix array before sending it to MAXes
uint8_t display_matrix_new[MAX72XX_COUNT][8];
// copy and do some transformations because LED matrices are soldered in a funky way onto the MAX chips :)
// MAX7219 RE-MAPPING CODE:
for(max_id=0; max_id<MAX72XX_COUNT; max_id++) // for each MAX chip
{
for(j=0; j<8; j++) // and each MAX accepts 8 bytes
{
// MAX1 and MAX4 are soldered in the same fashion
if(max_id==0 || max_id==3)
{
uint8_t old_byte = display_matrix[max_id][j];
// now rearrange the bits into a new byte
uint8_t new_byte = 0;
new_byte |= (old_byte & 0b00000001) <<6;
new_byte |= (old_byte & 0b00000010) ;
new_byte |= (old_byte & 0b00000100)<<3;
new_byte |= (old_byte & 0b00001000) >>3;
new_byte |= (old_byte & 0b00010000) ;
new_byte |= (old_byte & 0b00100000) >>3;
new_byte |= (old_byte & 0b01000000) <<1;
new_byte |= (old_byte & 0b10000000) >>4;
// now rearrange the indexes
uint8_t new_index = 0; // =0 because of compiler warning
switch (j)
{
/*case 0: new_index=0; break;
case 1: new_index=4; break;
case 2: new_index=6; break;
case 3: new_index=2; break;
case 4: new_index=3; break;
case 5: new_index=7; break;
case 6: new_index=5; break;
case 7: new_index=1; break;*/
case 0: new_index=1; break;
case 1: new_index=5; break;
case 2: new_index=7; break;
case 3: new_index=3; break;
case 4: new_index=2; break;
case 5: new_index=6; break;
case 6: new_index=4; break;
case 7: new_index=0; break;
}
display_matrix_new[max_id][new_index] = new_byte;
}
// and MAX2 and MAX3 are soldered in the same fashion
else
{
uint8_t old_byte = display_matrix[max_id][j];
// now rearrange the bits into a new byte
uint8_t new_byte = 0;
new_byte |= (old_byte & 0b00000001)<<3;
new_byte |= (old_byte & 0b00000010)<<6;
new_byte |= (old_byte & 0b00000100);
new_byte |= (old_byte & 0b00001000)<<1;
new_byte |= (old_byte & 0b00010000)>>4;
new_byte |= (old_byte & 0b00100000);
new_byte |= (old_byte & 0b01000000)>>5;
new_byte |= (old_byte & 0b10000000)>>1;
// now rearrange the indexes
uint8_t new_index = 0; // =0 because of compiler warning
switch (j)
{
/*case 0: new_index=1; break; // ili je 5 ili je 1
case 1: new_index=5; break; // ili je 1 ili je 5
case 2: new_index=7; break;
case 3: new_index=3; break;
case 4: new_index=2; break;
case 5: new_index=6; break;
case 6: new_index=4; break;
case 7: new_index=0; break;*/
case 0: new_index=0; break; // ili je 5 ili je 1
case 1: new_index=4; break; // ili je 1 ili je 5
case 2: new_index=0; break;
case 3: new_index=4; break;
case 4: new_index=6; break;
case 5: new_index=2; break;
case 6: new_index=3; break;
case 7: new_index=7; break;
}
display_matrix_new[max_id][new_index] = new_byte;
}
}
}
// finally send the new display matrix to all MAXes
for(max_id=1; max_id<=MAX72XX_COUNT; max_id++)
{
for(j=0, max_addr=0x01; j<8; j++, max_addr++)
{
max72xx_write(max_id, max_addr, display_matrix_new[max_id-1][j]); // send appropriate data to appropriate MAX :)
}
}
return;
}
Let me know if you need anything else.
- Attachments
-
- LED_matrix_schematics_CADSOFT_Eagle.zip
- (68.03 KiB) Downloaded 787 times
Re: Construction of Word Clock v1
Thank You very much for the help
The matrix works excellent right now:)
Still i have to solve some problems with touch sensor but it is different kind of story:)
The matrix works excellent right now:)
Still i have to solve some problems with touch sensor but it is different kind of story:)
Re: Construction of Word Clock v1
I am glad you solved the problem
Re: Construction of Word Clock v1
For anyone interested in v2 of the clock (minor changes - different pinout and small changes in firmware, nothing worth mentioning) - here is the attachment.
Re: Construction of Word Clock v1
Great clock! I'm planning to make my own although with a few changes because I like to have rgb colors and because I'm Dutch I'll change the language . However I do have a question. You've created this clock some time ago and you glued the back of the clock to the vinyl which is attached to the glass. Does this stay together after all this time? Are there things you would do different when you look back on it?
Re: Construction of Word Clock v1
Hi,
Yes, the clock is still on the wall working super
Things you might consider:
1. I would find someone with CNC to route all the wood.
2. Do not glue the front panel to the wood. Use strong Neodymium magnets and maybe plexiglass (plastic, not glass) because it is lighter for the magnets.
I guess that's it
Regards!
Yes, the clock is still on the wall working super
Things you might consider:
1. I would find someone with CNC to route all the wood.
2. Do not glue the front panel to the wood. Use strong Neodymium magnets and maybe plexiglass (plastic, not glass) because it is lighter for the magnets.
I guess that's it
Regards!
Re: Construction of Word Clock v1
The project page gives some good arguments for using glass instead of plexiglass and says that the front and back were glued to each other. I really like the sleek front of your clock, putting magnets in the plexiglass would change that (a bit) so I'm having some doubts about that. So what disadvantages have you seen in you current design?
Re: Construction of Word Clock v1
And another question, how did you get the inactive characters so dark in your v2 clock? Is it an extra dark foil between the screen and the tracing paper? If so, how has the brightness of the LED's changed?hitch wrote:The project page gives some good arguments for using glass instead of plexiglass and says that the front and back were glued to each other. I really like the sleek front of your clock, putting magnets in the plexiglass would change that (a bit) so I'm having some doubts about that. So what disadvantages have you seen in your current design?
Re: Construction of Word Clock v1
Well, I have no regrets of my design except the ones I statet above No problems whatsoever. Also, I would use whole PCB or 4 larger PCBs to hold the LEDs - I would not use those small PCBs and connect them with wires. That's a lot of work...
Magnets would not affect the design at all, because they would be invisible. You would glue 4 (or more) magnets to the front panel on the inside (actually to the word-foil). After that, you would drill the wood and place accepting magnets deeper (and glue them to the wood). When the front panel joins the wood those magnets would stick together - that's it.
Regarding the darkening - yes, I used car window tinting foil (high quality) with 25% tinting. I glued it directly to the glass, then word-foil to that foil. After that comes the tracing paper which is glued not to the front panel, but to the wood, only above the holes for LEDs.
Magnets would not affect the design at all, because they would be invisible. You would glue 4 (or more) magnets to the front panel on the inside (actually to the word-foil). After that, you would drill the wood and place accepting magnets deeper (and glue them to the wood). When the front panel joins the wood those magnets would stick together - that's it.
Regarding the darkening - yes, I used car window tinting foil (high quality) with 25% tinting. I glued it directly to the glass, then word-foil to that foil. After that comes the tracing paper which is glued not to the front panel, but to the wood, only above the holes for LEDs.
Re: Construction of Word Clock v1
Great, I'm now thinking about using tinted plexiglass like this (https://www.plexiglas-shop.com/GB/en/de ... aql41br8z4). That would also do the job nicely.
Re: Construction of Word Clock v1
Sure, I don't see why not. It says "21.0% Transmission" so I guess it means that it blocks 79% of light. You would probably want the opposite it I am not mistaking. You need it just a little tinted and more transparent.
update:
wow, it is also expensive
update:
wow, it is also expensive
Re: Construction of Word Clock v1
indeed, very expensive and you're correct about the transmission percentage. I've already found a cheaper (Dutch) web shop to get it, however they don't say how much of the light is blocked so I've send them an email about that. I'm glad you can now get all the light strips, magnets and other stuff very cheap from aliexpress . That will keep the costs down.
Re: Construction of Word Clock v1
Bok.
Zanima me dali se DS3232/DS3231 moze zamjeniti sa DS3232MZ+RTC (8pin) pošto ih je teže nabaviti. U spec. piše da je kompatibilan. Ako je ok , osim promjene pin layout dali bi ista bilo potrebno mjenjati u firmwaru?
Zanima me dali se DS3232/DS3231 moze zamjeniti sa DS3232MZ+RTC (8pin) pošto ih je teže nabaviti. U spec. piše da je kompatibilan. Ako je ok , osim promjene pin layout dali bi ista bilo potrebno mjenjati u firmwaru?
Re: Construction of Word Clock v1
Nisam koristio tu verziju, ali ako je kompatibilan (softverski i hardverski) onda slobodno probaj. Nebi trebalo da ista mijenjas.
Ako ima razlika u protokolu onda ces morati prepravljati firmware!
Ako ima razlika u protokolu onda ces morati prepravljati firmware!
Re: Construction of Word Clock v1
Ipak sam uspio naruciti ds3231. Što se tice firmwera mora li biti na cistom atmeg328 bez boot lodera i dodaje se u FLASH ili EEPROM ?
Re: Construction of Word Clock v1
Mozes kupiti kakav god zelis ATmega328P. Njega ces isprogramirati koristeci AVR programator (neki kojeg imas) i prilozeni HEX fajl u projektu kojeg si downloadovao. EEPROM nema potrebe da programiras sa programatorom.
Re: Construction of Word Clock v1
Trax hvala na pomoči. Do sad sam tek uspio napraviti main PCB i jedan Matrix PCB. Pokušao sam uplodat hex file, kombinacija wc1 i koda matrix wc2. testirao sam sa samo jednim matrixom i led-ice samo zabljesnu jedanput i ugase se. Probao sam testirati matrix i sa arduinom uno sa drugim fileom za arduino i ista stvar. jedino sto je drugačije od orginala je otpornik R4 ,14K3.
Početnik sam u oveme pa ako može neki savjet šta bih mogao prvo gledat. Hvala.
Početnik sam u oveme pa ako može neki savjet šta bih mogao prvo gledat. Hvala.
Re: Construction of Word Clock v1
Zdravo,
Ne znam sta si dobio kombinovanjem ta dva fajla
Ja kada ukljucim svoj sat i kod mene sve diode bljesnu kratko i ugase se. Nakon toga krene animacija i nakon nje se prikaze vrijeme. Takodje ne znam sta si radio sa Arduinom, jer ovo nema veze sa Arduinom...
Gledam evo shemu nekoliko puta i ne znam gdje ti je taj R4?
Ne znam sta si dobio kombinovanjem ta dva fajla
Ja kada ukljucim svoj sat i kod mene sve diode bljesnu kratko i ugase se. Nakon toga krene animacija i nakon nje se prikaze vrijeme. Takodje ne znam sta si radio sa Arduinom, jer ovo nema veze sa Arduinom...
Gledam evo shemu nekoliko puta i ne znam gdje ti je taj R4?
Re: Construction of Word Clock v1
LED_matrix_schematics_CADSOFT_Eagle.zip na toj shemi nalazi se R4. Koliko sam shvatio on određuje koji napon i snaga ide na LEDice. moje su max 20mA i 3.5V.
Šta se tiče arduina na netu sam našao kod za matrix 8x8 sa max7219.npr. http://tronixstuff.com/2013/10/11/tutor ... driver-ic/
Mislim da sam definitivno zeznuo sa samim programiranjem i flashanjem u oba slučaja i vjerujem da imam kratki spoj na matrixu. Čekam novi multimetar jer moj je dječja igračka i nepokazuje mi ni približnu točnu vrijednost.
Moje su isto samo zabljesnule kod startanja ali poslije se ništa nije dogodilo.
Zanima me još koja zener dioda ZD1 od 5.1 V mora biti u wattima na wc1 main pcb. Meni je 5.1V 0.5w.
slika matrixa i main PCB.
Šta se tiče arduina na netu sam našao kod za matrix 8x8 sa max7219.npr. http://tronixstuff.com/2013/10/11/tutor ... driver-ic/
Mislim da sam definitivno zeznuo sa samim programiranjem i flashanjem u oba slučaja i vjerujem da imam kratki spoj na matrixu. Čekam novi multimetar jer moj je dječja igračka i nepokazuje mi ni približnu točnu vrijednost.
Moje su isto samo zabljesnule kod startanja ali poslije se ništa nije dogodilo.
Zanima me još koja zener dioda ZD1 od 5.1 V mora biti u wattima na wc1 main pcb. Meni je 5.1V 0.5w.
slika matrixa i main PCB.