1. ## Is it possible? (MAX7219 Cascaded)

Hello all, I am new to into panel making and just from yesterday I started learning programming Thanks a lot Jim, for making Link2FS

Is it possible to interface 2 MAX7219 8 digit 7 seg module in such a way that both module can be combined as a big 16 digit module?

I am building a MCP, for that I want 3 digits for left CRS, 4 for IAS, 1 digit for HDG(rest 2 digits from second MAX7219) and so on... *I can desolder each 7 segments and put them side by side as per my requirements.

I am just curious :P , I just want to utilize the complete module

2. ## Re: Is it possible? (MAX7219 Cascaded)

Yes. You can Connecticut up to 8 max 7219 by chain

3. ## Re: Is it possible? (MAX7219 Cascaded)

Originally Posted by jollive
Yes. You can Connecticut up to 8 max 7219 by chain
Thats great Can you give me a sample sketch (or a hint) for how to assign the 1st digit value of HDG to LSB of 1st MAX7219 module and the 2nd digit to MSB of 2nd module? I'm new to programming :P

4. ## Re: Is it possible? (MAX7219 Cascaded)

An excerpt from my radio code.
Code:
```                                                    // **** Info on how the Displays work *****
led_Display_1.setDigit(0,7,Com1Active[0],false);    // setDigit(0,7,Com1Active[0],false) The 0 is the first display, 7 is the first character in the
led_Display_1.setDigit(0,6,Com1Active[1],false);    // display, Com1Active[0] is the stored Integer to be displayed, false is no decimal point.
led_Display_1.setDigit(0,5,Com1Active[2],true);     // "true" puts in the decimal point
led_Display_1.setDigit(0,4,Com1Active[3],false);    // setDigit is for putting in numbers
led_Display_1.setDigit(0,3,Com1Active[4],false);    // You can also use setChar for putting in some letters
// character, symbols, and ' ' space.
led_Display_1.setDigit(0,0,Com1StdBy[0],false);     //
led_Display_1.setDigit(1,7,Com1StdBy[1],false);     //NOTE: setChar has to use single quote 'A'
led_Display_1.setDigit(1,6,Com1StdBy[2],true);      // Double quote "A", is for Strings and wont work.
led_Display_1.setDigit(1,5,Com1StdBy[3],false);     //****************** The 300 Level Remarks ****************************************
led_Display_1.setDigit(1,4,Com1StdBy[4],false);     // In the "300 Level Class", you can use setRow to light one of the 7 segment
// displays using binary or hex equivalent. It would look like this:
// led_Display_1.setRow(1,4,B00110000,false) that would display the number 1.
led_Display_1.setDigit(1,3,Nav1Active[0],false);    //
led_Display_1.setDigit(1,2,Nav1Active[1],false);    //          __A_      The segments on my displays are lettered A thru H
led_Display_1.setDigit(1,1,Nav1Active[2],true);     //        F|    |B    However, using the setRow with Binary the H comes first.
led_Display_1.setDigit(1,0,Nav1Active[3],false);    //         |__G_|             If you want an 8 with no decimal...
led_Display_1.setDigit(2,7,Nav1Active[4],false);    //        E|    |C             H A B C D E F G
//         |__D_|.H          B 0 1 1 1 1 1 1 1
led_Display_1.setDigit(2,4,Nav1StdBy[0],false);     //
led_Display_1.setDigit(2,3,Nav1StdBy[1],false);     //*********************************************************************************
led_Display_1.setDigit(2,2,Nav1StdBy[2],true);
led_Display_1.setDigit(2,1,Nav1StdBy[3],false);
led_Display_1.setDigit(2,0,Nav1StdBy[4],false);```
If you bought the widely available MAX7219 tube display modules with 2 sets of 4 digits, the displays are not soldered in so you can pull them out of the sockets and tether them with wire and round pins.

See my tutorial here http://thegeekforge.com/2014/11/17/t...-from-arduino/

~Fess

5. ## Re: Is it possible? (MAX7219 Cascaded)

Originally Posted by Fess_ter
An excerpt from my radio code.
Code:
```                                                    // **** Info on how the Displays work *****
led_Display_1.setDigit(0,7,Com1Active[0],false);    // setDigit(0,7,Com1Active[0],false) The 0 is the first display, 7 is the first character in the
led_Display_1.setDigit(0,6,Com1Active[1],false);    // display, Com1Active[0] is the stored Integer to be displayed, false is no decimal point.
led_Display_1.setDigit(0,5,Com1Active[2],true);     // "true" puts in the decimal point
led_Display_1.setDigit(0,4,Com1Active[3],false);    // setDigit is for putting in numbers
led_Display_1.setDigit(0,3,Com1Active[4],false);    // You can also use setChar for putting in some letters
// character, symbols, and ' ' space.
led_Display_1.setDigit(0,0,Com1StdBy[0],false);     //
led_Display_1.setDigit(1,7,Com1StdBy[1],false);     //NOTE: setChar has to use single quote 'A'
led_Display_1.setDigit(1,6,Com1StdBy[2],true);      // Double quote "A", is for Strings and wont work.
led_Display_1.setDigit(1,5,Com1StdBy[3],false);     //****************** The 300 Level Remarks ****************************************
led_Display_1.setDigit(1,4,Com1StdBy[4],false);     // In the "300 Level Class", you can use setRow to light one of the 7 segment
// displays using binary or hex equivalent. It would look like this:
// led_Display_1.setRow(1,4,B00110000,false) that would display the number 1.
led_Display_1.setDigit(1,3,Nav1Active[0],false);    //
led_Display_1.setDigit(1,2,Nav1Active[1],false);    //          __A_      The segments on my displays are lettered A thru H
led_Display_1.setDigit(1,1,Nav1Active[2],true);     //        F|    |B    However, using the setRow with Binary the H comes first.
led_Display_1.setDigit(1,0,Nav1Active[3],false);    //         |__G_|             If you want an 8 with no decimal...
led_Display_1.setDigit(2,7,Nav1Active[4],false);    //        E|    |C             H A B C D E F G
//         |__D_|.H          B 0 1 1 1 1 1 1 1
led_Display_1.setDigit(2,4,Nav1StdBy[0],false);     //
led_Display_1.setDigit(2,3,Nav1StdBy[1],false);     //*********************************************************************************
led_Display_1.setDigit(2,2,Nav1StdBy[2],true);
led_Display_1.setDigit(2,1,Nav1StdBy[3],false);
led_Display_1.setDigit(2,0,Nav1StdBy[4],false);```
If you bought the widely available MAX7219 tube display modules with 2 sets of 4 digits, the displays are not soldered in so you can pull them out of the sockets and tether them with wire and round pins.

See my tutorial here http://thegeekforge.com/2014/11/17/t...-from-arduino/

~Fess
Wow, you have a very nice blog, really very nicely organized and thank you very very much for the code sample, I'll try tonight.

Thanks again

6. ## Re: Is it possible? (MAX7219 Cascaded)

Hey Fess,

I used your codes, works like a charm. Very clearly understandable method you have opted.

One thing I wonder, can we directly control the "decimal" LED ONLY, ignoring the other 7 LEDs of a digit? Or similarly Can we control only 7 LEDs without touching DP? I mean can we control DP LED independently at all?

For example: I am giving AP HDG value to three digits, but Heading value don't need decimal points. Hence can we use those DP signal to light up other things like: 3 gears down indicators?

(If it is possible then I can make a MAX7219 set by separatly buying the chip and 7-segments and using the DP terminal output from the chip for 8 other purposes)

I tried setDigit, setChar, setRow.. No success! (it works but not simultaneously when both HDG and Gear values goes out to same digit, at a time latest value shows up)

*I tried on MAX7219 single module, I think it is possible when we separately connect the MAX chip and individual 7 seg digits. What do you think?

All these things I just wonder how freely we can control :P

7. ## Re: Is it possible? (MAX7219 Cascaded)

I believe that it is possible but the digits should be 1 to 1 and not a pack of 3 or more digits.
This way you do not connect the DP output from the MAX to the digit. Instead, connect the LG LED.
When sending lc.setDigit (1,4, Digito_5, false) only the HDG turns on and if it sends an lc.setDigit (1,4, Digito_5, true) turn on the digit plus the LG led