Hi Marco.
I just saw your font editor. Hey do you ever sleep XD I could not find anything on the Instructions tab. Thanks for another string for the Parola bow.
Hi Pedro - Instructions to come. As usual the documentation plays catchup.
Red area - no editing allowed. Green area - user changeable. Orange area - output for code arrays.
Thanks Marco.
I just thought that I would let you know in case there was a problem
Thank you Marco.
I will do .
Actionally, now im out of my town when i go back to my town i will keep you posted.
Just updated the font builder file in previous post. Should be finished now - including Instructions
The file currently has Katakana (Japanese), Arabic to be checked, standard font and a bunch of symbols. I am looking for a good source for a greek alphabet in dot form - any ideas?
Marco I have some Questions:
when i cut and paste code it show like this:
uint8_t _fontname[] PROGMEM = {
"0, // 0 - Empty Cell"
"5, 62, 91, 79, 91, 62, // 1 - Sad Smiley"
"5, 62, 107, 79, 107, 62, // 2 - Happy Smiley"
"5, 28, 62, 124, 62, 28, // 3 - Heart"
"5, 24, 60, 126, 60, 24, // 4 - Diamond"
"5, 28, 87, 125, 87, 28, // 5 - Clubs"
"5, 28, 94, 127, 94, 28, // 6 - Spades"
"4, 0, 24, 60, 24, // 7 - Bullet Point"
"5, 255, 231, 195, 231, 255, // 8 - Rev Bullet Point"
"4, 0, 24, 36, 24, // 9 - Hollow Bullet Point"
"5, 255, 231, 219, 231, 255, // 10 - Rev Hollow BP"
"5, 48, 72, 58, 6, 14, // 11 - Male"
"5, 38, 41, 121, 41, 38, // 12 - Female"
"5, 64, 127, 5, 5, 7, // 13 - Music Note 1"
"5, 64, 127, 5, 37, 63, // 14 - Music Note 2"
"5, 90, 60, 231, 60, 90, // 15 - Snowflake"
"5, 127, 62, 28, 28, 8, // 16 - Right Pointer"
"5, 8, 28, 28, 62, 127, // 17 - Left Pointer"
"5, 20, 34, 127, 34, 20, // 18 - UpDown Arrows"
"5, 95, 95, 0, 95, 95, // 19 - Double Exclamation"
"5, 6, 9, 127, 1, 127, // 20 - Paragraph Mark"
"4, 102, 137, 149, 106, // 21 - Section Mark"
"5, 96, 96, 96, 96, 96, // 22 - Double Underline"
"5, 148, 162, 255, 162, 148, // 23 - UpDown Underlined"
"5, 8, 4, 126, 4, 8, // 24 - Up Arrow"
"5, 16, 32, 126, 32, 16, // 25 - Down Arrow"
"5, 8, 8, 42, 28, 8, // 26 - Right Arrow"
"5, 8, 28, 42, 8, 8, // 27 - Left Arrow"
"5, 30, 16, 16, 16, 16, // 28 - Angled"
"5, 12, 30, 12, 30, 12, // 29 - Squashed #"
"5, 48, 56, 62, 56, 48, // 30 - Up Pointer"
"5, 6, 14, 62, 14, 6, // 31 - Down Pointer"
"2, 0, 0, // 32 - Space"
"1, 95, // 33 - !"
"3, 7, 0, 7, // 34 - """
"5, 20, 127, 20, 127, 20, // 35 - #"
"5, 36, 42, 127, 42, 18, // 36 - $"
"5, 35, 19, 8, 100, 98, // 37 - %"
"5, 54, 73, 86, 32, 80, // 38 - &"
"3, 8, 7, 3, // 39 - '"
"3, 28, 34, 65, // 40 - ("
"3, 65, 34, 28, // 41 - )"
"5, 42, 28, 127, 28, 42, // 42 - *"
"5, 8, 8, 62, 8, 8, // 43 - +"
"3, 128, 112, 48, // 44 - ,"
"5, 8, 8, 8, 8, 8, // 45 - -"
"2, 96, 96, // 46 - ."
"5, 32, 16, 8, 4, 2, // 47 - /"
"5, 62, 81, 73, 69, 62, // 48 - 0"
"3, 66, 127, 64, // 49 - 1"
"5, 114, 73, 73, 73, 70, // 50 - 2"
"5, 33, 65, 73, 77, 51, // 51 - 3"
"5, 24, 20, 18, 127, 16, // 52 - 4"
"5, 39, 69, 69, 69, 57, // 53 - 5"
"5, 60, 74, 73, 73, 49, // 54 - 6"
"5, 65, 33, 17, 9, 7, // 55 - 7"
"5, 54, 73, 73, 73, 54, // 56 - 8"
"5, 70, 73, 73, 41, 30, // 57 - 9"
"1, 20, // 58 - :"
"2, 128, 104, // 59 - ;"
"4, 8, 20, 34, 65, // 60 - <"
"5, 20, 20, 20, 20, 20, // 61 - ="
"4, 65, 34, 20, 8, // 62 - >"
"5, 2, 1, 89, 9, 6, // 63 - ?"
"8, 32, 32, 32, 32, 160, 32, 40, 48, // 130 - ?"
"8, 0, 48, 40, 32, 160, 32, 48, 32, // 131"
"8, 32, 32, 34, 32, 34, 32, 40, 48, // 132 - ?"
"8, 32, 32, 32, 34, 33, 34, 40, 48, // 133 - ?"
"8, 32, 32, 32, 34, 49, 34, 32, 32, // 134 - ???"
"8, 0, 48, 40, 34, 33, 34, 48, 32, // 135 - ??"
"8, 32, 32, 40, 40, 40, 176, 32, 32, // 136 - ??"
"8, 32, 32, 40, 42, 40, 48, 32, 32, // 137 - ??"
"8, 0, 36, 36, 36, 56, 32, 32, 32, // 138 - ??"
"8, 0, 36, 37, 36, 56, 32, 32, 32, // 139 - ??"
"8, 0, 128, 128, 64, 48, 32, 32, 32, // 140 - ??"
"8, 0, 128, 128, 64, 52, 32, 32, 32, // 141 - ??"
"8, 32, 32, 32, 56, 32, 56, 32, 24, // 142 - ??"
"8, 32, 32, 56, 32, 56, 32, 56, 32, // 143 - ???"
"8, 96, 128, 128, 120, 32, 56, 32, 24, // 144 - ?"
"8, 32, 32, 32, 56, 34, 57, 34, 24, // 145 - ??"
"8, 32, 32, 56, 34, 57, 34, 56, 32, // 146 - ???"
"8, 96, 128, 128, 120, 34, 57, 34, 24, // 147 - ?"
"8, 32, 32, 48, 32, 48, 40, 40, 24, // 148 - ??"
"8, 96, 128, 128, 96, 48, 40, 40, 56, // 149 - ?"
"8, 32, 32, 48, 32, 48, 40, 42, 24, // 150 - ??"
"8, 96, 128, 128, 96, 48, 40, 42, 56, // 151 - ?"
"8, 32, 32, 62, 48, 40, 40, 56, 32, // 152 - ??"
"8, 32, 32, 62, 48, 40, 42, 56, 32, // 153 - ??"
"7, 32, 32, 32, 32, 48, 40, 40, // 154 - ??"
"8, 32, 32, 40, 36, 52, 44, 32, 32, // 155 - ???"
"8, 32, 32, 32, 32, 48, 40, 42, 48, // 156 - ??"
"8, 32, 32, 48, 42, 40, 50, 32, 32, // 157 - ???"
"8, 96, 128, 128, 178, 168, 122, 32, 32, // 158 - ??"
"8, 0, 40, 44, 42, 42, 32, 32, 31, // 159 - ?"
"8, 32, 32, 32, 28, 34, 33, 33, 33, // 160 - ??"
"7, 32, 32, 32, 32, 32, 32, 31, // 161 - ??"
"8, 32, 32, 32, 32, 31, 32, 32, 32, // 162 - ???"
"8, 0, 48, 64, 64, 63, 32, 32, 32, // 163"
"8, 32, 32, 32, 32, 48, 72, 72, 48, // 164"
"8, 32, 32, 48, 72, 72, 48, 32, 32, // 165"
"8, 128, 64, 48, 72, 72, 48, 32, 32, // 166"
"7, 32, 32, 32, 32, 34, 32, 24, // 167"
"8, 32, 32, 32, 32, 26, 32, 32, 32, // 168"
"8, 48, 64, 68, 64, 48, 32, 32, 32, // 169"
"8, 32, 32, 32, 48, 40, 58, 44, 24, // 170"
"8, 32, 32, 48, 40, 58, 44, 56, 32, // 171"
"8, 0, 24, 20, 20, 24, 32, 32, 32, // 172"
"7, 0, 33, 34, 36, 40, 16, 15, // 173"
"8, 0, 176, 168, 120, 32, 32, 32, 32, // 174"
"8, 32, 32, 32, 160, 32, 160, 40, 48, // 175"
"8, 32, 32, 32, 160, 48, 160, 32, 32, // 176"
"8, 0, 96, 128, 128, 160, 80, 16, 32, // 177"
"8, 0, 30, 32, 32, 32, 32, 32, 32, // 178"
"6, 0, 32, 48, 40, 40, 32, // 179"
"8, 0, 4, 2, 2, 58, 2, 2, 1, // 180"
"7, 0, 0, 4, 6, 61, 5, 4, // 181"
"7, 0, 0, 4, 182, 173, 125, 4, // 182"
"7, 0, 0, 128, 192, 191, 160, 128, // 183"
"7, 4, 102, 133, 149, 168, 168, 72, // 184"
"4, 0, 0, 0, 63, // 185"
"8, 0, 48, 40, 32, 160, 32, 40, 48, // 186"
"6, 0, 0, 48, 42, 40, 50, // 187"
"8, 0, 48, 40, 34, 32, 34, 40, 48, // 188"
"8, 0, 48, 40, 34, 33, 34, 40, 48, // 189"
"8, 0, 192, 168, 168, 40, 176, 32, 32, // 190"
"8, 0, 192, 168, 168, 168, 48, 32, 32, // 191"
"8, 0, 192, 168, 170, 40, 48, 32, 32, // 192"
"6, 0, 0, 36, 36, 36, 56, // 193"
"6, 0, 0, 36, 37, 36, 56, // 194"
"5, 0, 128, 128, 64, 48, // 195"
"6, 0, 0, 128, 128, 64, 52, // 196"
"8, 96, 128, 128, 120, 32, 56, 32, 24, // 197"
"8, 96, 128, 128, 120, 34, 57, 34, 24, // 198"
"8, 96, 128, 128, 96, 48, 40, 40, 24, // 199"
"8, 96, 128, 128, 96, 48, 40, 42, 24, // 200"
"6, 0, 34, 20, 8, 20, 34, // 201"
"7, 32, 32, 62, 48, 40, 40, 24, // 202"
"7, 32, 32, 62, 48, 40, 42, 24, // 203"
"7, 0, 0, 64, 160, 176, 40, 40, // 204"
"7, 0, 0, 64, 160, 176, 42, 40, // 205"
"8, 32, 32, 32, 32, 32, 32, 32, 32, // 206"
"8, 0, 24, 32, 32, 48, 40, 42, 48, // 207"
"7, 0, 96, 128, 128, 178, 168, 122, // 208"
"7, 0, 48, 40, 44, 42, 32, 63, // 209"
"6, 0, 64, 169, 170, 168, 240, // 210"
"6, 0, 0, 96, 128, 128, 126, // 211"
"6, 0, 64, 170, 169, 170, 240, // 212"
"8, 0, 0, 192, 32, 48, 40, 40, 48, // 213"
"7, 0, 0, 96, 128, 136, 128, 96, // 214"
"6, 0, 0, 48, 40, 40, 48, // 215"
"6, 0, 0, 0, 176, 168, 120, // 216"
"7, 0, 48, 64, 64, 80, 40, 8, // 217"
"7, 0, 48, 192, 64, 208, 40, 8, // 218"
"5, 0, 0, 2, 121, 2, // 219"
"5, 0, 0, 2, 120, 2, // 220"
"8, 0, 0, 0, 0, 0, 5, 5, 5, // 221"
"8, 0, 0, 0, 4, 3, 11, 6, 6, // 222"
"3, 160, 160, 160, // 223"
"6, 0, 0, 1, 1, 1, 1, // 224 - Beta"
"8, 0, 64, 96, 80, 72, 80, 64, 64, // 225 - Gamma"
"5, 2, 126, 2, 126, 2, // 226 - Pi"
"5, 99, 85, 73, 65, 99, // 227 - Sigma"
"5, 56, 68, 68, 60, 4, // 228 - Theta"
"5, 64, 126, 32, 30, 32, // 229 - mu"
"5, 6, 2, 126, 2, 2, // 230 - Tau"
"5, 153, 165, 231, 165, 153, // 231"
"5, 28, 42, 73, 42, 28, // 232"
"5, 76, 114, 1, 114, 76, // 233"
"5, 48, 74, 77, 77, 48, // 234"
"5, 48, 72, 120, 72, 48, // 235"
"5, 188, 98, 90, 70, 61, // 236 - Zero Slashed"
"4, 62, 73, 73, 73, // 237"
"5, 126, 1, 1, 1, 126, // 238"
"5, 42, 42, 42, 42, 42, // 239 - 3 Bar Equals"
"5, 68, 68, 95, 68, 68, // 240 - +/-"
"5, 64, 81, 74, 68, 64, // 241 - >="
"5, 64, 68, 74, 81, 64, // 242 - <="
"5, 0, 0, 255, 1, 3, // 243 - Top of Integral"
"3, 224, 128, 255, // 244 - Bot of Integral"
"5, 8, 8, 107, 107, 8, // 245 - Divide"
"5, 54, 18, 54, 36, 54, // 246 - Wavy ="
"5, 6, 15, 9, 15, 6, // 247 - Degree"
"4, 0, 0, 24, 24, // 248 - Math Product"
"4, 0, 0, 16, 16, // 249 - Short Dash"
"5, 48, 64, 255, 1, 1, // 250 - Square Root"
"5, 0, 31, 1, 1, 30, // 251 - Superscript n"
"5, 0, 25, 29, 23, 18, // 252 - Superscript 2"
"5, 0, 60, 60, 60, 60, // 253 - Centered Square"
"5, 255, 129, 129, 129, 255, // 254 - Full Frame"
"5, 255, 255, 255, 255, 255, // 255 - Full Block"
};
- where can i paste the code do you mean this file (MD_MAX72xx_font.cpp)
Please explain more
Sorry for disturbing
You need to edit out the " marks at the start and end of each line. I am working on whether I can export from excel without these.
You have the right file name and just need to replace the data contained in the font definition with this new one. You will not need the array PROGMEM statement at the top as this will already be in the file.
My Dear Marco i follow your instruction
uint8_t _sysfont_var[] PROGMEM =
{
5, 124, 18, 17, 18, 124, // 65 - A
5, 127, 73, 73, 73, 54, // 66 - B
5, 62, 65, 65, 65, 34, // 67 - C
5, 127, 65, 65, 65, 62, // 68 - D
5, 127, 73, 73, 73, 65, // 69 - E
5, 127, 9, 9, 9, 1, // 70 - F
5, 62, 65, 65, 81, 115, // 71 - G
5, 127, 8, 8, 8, 127, // 72 - H
3, 65, 127, 65, // 73 - I
};
I wrote down" AB" "CD" in english lunguage just for testing in led matrix but on other word shown in led matrix like number 89 .
uint8_t _sysfont_var[] PROGMEM =
{
5, 124, 18, 17, 18, 124, // 65 - A
5, 127, 73, 73, 73, 54, // 66 - B
5, 62, 65, 65, 65, 34, // 67 - C
5, 127, 65, 65, 65, 62, // 68 - D
5, 127, 73, 73, 73, 65, // 69 - E
5, 127, 9, 9, 9, 1, // 70 - F
5, 62, 65, 65, 81, 115, // 71 - G
5, 127, 8, 8, 8, 127, // 72 - H
3, 65, 127, 65, // 73 - I
};
In your previous post you had the whole ASCII set (all 255 characters). Please confirm that you have copied all of them to the font file, as your next post only shown the letters for A-I (code just above here). As it is shown it will definitely not work because (a) you do not have the whole characters set and (b) the Arabic characters are not there.
As you told me i paste whole 255 words to font file all thing is fine except when i write done text in Arabic or in English i see on Matrix on other text totally except first word .
I am having trouble understanding what you are explaining. Can you post a picture or a video?
Thank you for your prompt replay
the problem is when i write done the following text "Parola for",
"Arduino", - led matrix display on other text like ( Plospmlo 9ps Asevjop) instead of (Parola for
Arduino)
See
All the lower case letters are one letter out (ie, you are getting b instead of a, s instead of r) - Pbspmb gps Asevjop. Try a message in uppercase and see if that works ok. If it does, then check that there are no ASCII characters missing between the end of the upper case and the start of the lower case letters in the table.
uppercase letter working fine
I think there are no mising letter in lowercase but i noticed there are dubelcate letter in Arabic font.
Can you post the font file or pm me with it so I can check? If uppercase is ok then there is definitely a misalignment between the end of upper and start of lowercase.
I have worked it out. Character 92 is '' and putting this at the end of the line in the comment makes the next line part of the line for char 92 (\ is the line continuation character in C++). Please remove the \ from the end of the line and it will fix the problem. I will change the font builder to cope with this.
Hello, I searched this thread for anyone who has tried the example code called MD_MAX72XX_Eyes and it looks like nobody has mentioned it! The sketch features a moving eye animation. The example is cool because the movement of the pupil and the timing of the blinks comes from a random number generated on the Arduino. Perhaps people haven't tried this example because it requires the TrueRandom library (Google Code Archive - Long-term storage for Google Code Project Hosting.) but I encourage you to try it out.
What I'd like to do with the example is to connect more than one MAX7219 & 8x8 matrix and make each one have different pupil movements and blinks. First, I tried changing the number of devices in the code to 5, but each of the eyes was synchronized in the pupil movements. I tried digging a bit deeper into the program's subroutines to make different eyes go to different chips, but I gave up after a few hours of frustration. Would anybody like to take a look at this example and give me some suggestions? It would be greatly appreciated. I'd like to eventually have as many as 50 eyes all blinking away. I understand that only about 24 modules have been successfully linked using the Parola software, so I will need two or three Arduinos to make the 50 eyes come to life.
Thanks for any help or suggestions!
-Terrag
The example was only ever designed for 'normal' 2 eye operation. People normally blink with their eyes in synch, so the eyes work together. Changing MAX_DEVICES will get more eyes but all doing the same thing. Basically the code is written for one eye but does the same thing in 2 matrices. What I did allow for was changing the design of the eyes, how they move and how deeply they blink, which is defined in the header file.
Changing it to do multiple eyes independently should be possible and probably relatively easy given the code that is already there, despite your frustration. I may give it a go in the next few days, *See update -*as you have me intrigued!.
I understand that only about 24 modules have been successfully linked using the Parola software, so I will need two or three Arduinos to make the 50 eyes come to life.
I am sure we can do more than 24, the problem is that for fast animations the data transfer takes more time than is available. The eyes are very slow, so the limit is probably much higher.
UPDATE: Many eyes demo is attached. A bit creepy and for me not as effective as just 2 eyes. The eye should really be a class, but it works as is.
MD_MAX72xx_ManyEyes.zip (3.6 KB)
Hello all,
first i would like to introduce myself as new within this forums and say hello to everyone.
Secondly i wanna to congratulate Pedro and all people involved for this incredible peace of software! Searching the web for weeks i found many DMD code projects - but none could even reach the level of Parola.
Therefore i really would love to use the Parola code together with a (nearly not documented) OLIMEX MOD-LED8x8 Boosterpack and 7 x MOD-LED8x8 Modules, even if they are using 74HC595 chips instead of MAX7219... Looking at parola and olimex schematics both seem to follow the same principle shifting out the same amount of bits using the same pins/ports.
But, unfortunately, either trying SPI and standard digital ports of the arduino the result is kind of strange, even if i can imagine what the software is going to show on the modules - but only on the lower 4 rows. Using LSBFISRT instead of MSBFIRST within the spiTransmit() statement, only the upper 4 rows do work.
For me as new one in coding c, i guess there is not much to change to make it work properly - if one of the professionals please may have a look and hopefully give me a hint what i can change/try!?
Here you may see how it looks like on the modules, using different settings:
• Parola_Display.ino
• #define USE_PAROLA_HW is set to 0
• spiTransmit() is shifting out in MSBFIRST bit order
• Video showing the effect (lower 4 rows, MP4, 8.01MB)
• Parola_Display.ino
• #define USE_PAROLA_HW is set to 0
• spiTransmit() is shifting out in LSBFIRST bit order
• Video showing the effect (upper 4 rows, MP4, 4.18MB)
Some Facts about the OLIMEX MOD-LED8x8 modules i am trying to use:
• Common anode
• two 74HC595 connected in row (pin 9 >> pin 14) on each module
• first 74HC595 connected to ULN2003 on each module
• Boosterpack Schematics (PDF)
• MOD-LED8x8 Schematics (PDF)
Thanks for any reply in advance!
As said before, i am new to this bit-shifting stuff and i wouldn't even ask if the modules would't show recognizeable animations...
Greets, Olaf
P.S. sorry for my amateur english - hopefully it is understandable