LEDMatrix Help

Please post your questions regarding the LEDMatrix on this page.  We will do our best to answer your questions in a timely manner.

LEDMatrix Help Questions:

If you have a question about LEDMatrix Help please post it below. Our team will do our best to respond to all questions as soon as possible.

You must be logged in to post a comment.

Past Questions

  1. dmancan says:

    Hey Morgan,
    Where do I find the MatrixNet Library files? I don’t see them on the site.
    Thanks,
    Dmancan

    • dmancan says:

      Forget it. I see that it’s bundled with the OSX Display Arduino download.

      • dmancan says:

        Forget my forget it :)

        Do you have some documentation about the MatrixNet object? I can see by the example there are begin(), changeLED() but that’s about all.

        Plus, any other documentation for the LEDMatrix would be helpful.

        For example, do I need to provide DPWR along with the RS485 or does the RS485 provide power to the board?

        Thanks for the help.

        • Morgan says:

          We have recently updated the specifications online. Kindly review the page http://mondomatrix.com/info/?page_id=22. There are two separate power supplies to all Mondomatrix expansion boards. One supply that powers the data or ‘board’ power and the other the supplies power to the components. For example, on the LEDMatrix, the board power and LEDs power supplies are different. The RS485 ports have a “+” and “-” next to them – this is for the board power supply.

          We will also be providing YouTube videos in the next week or so with instructions that will hopefully clarify all of these points.

  2. delunachick says:

    How do I daisy chain LEDMatrix boards together?

  3. delunachick says:

    i have 5 LEDMatrix boards daisy chained to a DisplayDuino controller and everything powered up appropriately. each board has LEDs only in ports 0-3. the code i am running should turn each board on, one at a time, then turn each board off in the same order. but what it seems to be doing is flashing everything on at once (when the first board is supposed to go on) and then flashing everything off (again, sync’d to board 0).

    is there something wrong with the logic here? is there any documentation for the MatrixNet functions?

    thanks.

    ***

    #include

    /*
    REFERENCE
    Fx
    myMatrix.changeLED(board, port, R_pin1, G_pin3, B_pin4)
    myMatrix.changeLEDBoard(board, r[], g[], b[])
    */

    MatrixNet myMatrix;
    int NUMBOARDS = 5;
    int i,j = 0;
    unsigned char RedBrightness[4];
    unsigned char BlueBrightness[4];
    unsigned char GreenBrightness[4];

    void setup()
    {
    Serial.begin (9600);
    myMatrix.begin();
    }

    void loop()
    {
    for (j = 0; j < NUMBOARDS; j++) {
    Serial.print("board ");
    Serial.print(j);
    Serial.println(" on");
    //Fills all the LEDs on board j
    for(i = 0; i < 4; i++) {
    RedBrightness[i] = 255;
    GreenBrightness[i] = 255;
    BlueBrightness[i] = 255;
    Serial.print ("i = ");
    Serial.println (i);
    }
    // then the array is sent to the board all at once here
    myMatrix.changeLEDBoard(j, RedBrightness, GreenBrightness, BlueBrightness);
    delay(2000);
    Serial.println("");
    }

    for (j = 0; j < NUMBOARDS; j++) {
    Serial.print("board ");
    Serial.print(j);
    Serial.println(" off");
    //Now turns off all the LEDs
    for(i = 0; i < 4; i++) {
    RedBrightness[i] = 0;
    GreenBrightness[i] = 0;
    BlueBrightness[i] = 0;
    }
    // then the array is sent to the board all at once here
    myMatrix.changeLEDBoard(j, RedBrightness, GreenBrightness, BlueBrightness);
    delay(2000);
    }
    Serial.println("");
    }

    this is what my setup looks like:
    image

    • Morgan says:

      well I would say that the first thing to do is make sure that the adress switches on the expansion boards are set from 0 to 5 (binary)

      the next point is that is is best practice to have 64 values in each of the R – G – B arrays you are sending to the boards however you are only counting up 4 values in your code:
      for(i = 0; i < 4; i++) {
      RedBrightness[i] = 255;
      GreenBrightness[i] = 255;
      BlueBrightness[i] = 255;
      Serial.print ("i = ");
      Serial.println (i);
      }

      instead try:

      for(i = 0; i < 64; i++) {
      RedBrightness[i] = 255;
      GreenBrightness[i] = 255;
      BlueBrightness[i] = 255;
      Serial.print ("i = ");
      Serial.println (i);
      }

      even if a value in the string is 0 it should be sent because the function "myMatrix.changeLEDBoard" changes all of the values at once for a given board.

      the next thing I would have a look at is the board you are sending data to. In your code you are sending data to int "j" for both boards. Try to type in the values 0 – 1 – 2 – 3 – or 4 as correlates to the addresses on your board. For example, your code has:

      myMatrix.changeLEDBoard(j, RedBrightness, GreenBrightness, BlueBrightness);

      try

      myMatrix.changeLEDBoard(0, RedBrightness, GreenBrightness, BlueBrightness);
      myMatrix.changeLEDBoard(1, RedBrightness, GreenBrightness, BlueBrightness);
      myMatrix.changeLEDBoard(2, RedBrightness, GreenBrightness, BlueBrightness);
      myMatrix.changeLEDBoard(3, RedBrightness, GreenBrightness, BlueBrightness);
      or
      myMatrix.changeLEDBoard(4, RedBrightness, GreenBrightness, BlueBrightness);

      please let us know if this helps.

    • Morgan says:

      looks great from the picture – the system appears to be wired correctly.

      The addresses from 0-4 are as follows (in binary)

      0 = off, off, off, off, off, off, off, off (from left to right – oriented such that the LED ports are on top)
      1 = off, off, off, off, off, off, off, on (from left to right – oriented such that the LED ports are on top)
      2 = off, off, off, off, off, off, on, off (from left to right – oriented such that the LED ports are on top)
      3 = off, off, off, off, off, off, on, on (from left to right – oriented such that the LED ports are on top)
      4 = off, off, off, off, off, on, off, off (from left to right – oriented such that the LED ports are on top)

      • delunachick says:

        yay! i hadn’t set the address switches at all (because i didn’t know i had to). the unmodified code runs fine after i changed the switches. hooray!

        for the geeks
        0 = 0000 0000
        1 = 0000 0001
        2 = 0000 0010
        3 = 0000 0011
        4 = 0000 0100

        (corresponding exactly to the switches on the red component on the LEDMatrix board which confusingly is labeled 1-8 [left - right])

        image

        thank you!

  4. luxor says:

    Hey Morgan,
    have you a live Library for the LEDMatrix?
    Example:

    When I press B on my keyboard all go to blue LED.
    When I press G on my keyboard all LEDs go green.

    This is a very simple example but it shows from making what I want.
    I would like to let the LED is controlled by scripts in Linux.

    Sorry for my bad English
    Greetings from Germany

    • Morgani says:

      Unfortunately we can not support code related items at this time but you are in luck. There is a huge community of Arduino coders out there and there are several blogs, sites and support networks available for you.

      What you need to do is setup a serial communication between the Displayduino and your computer similar to the example found here: http://arduino.cc/en/Tutorial/Dimmer

      However, rather than controlling a single LED, use the LEDMatrix code and expansion boards to control the LED(s).

      let us know if this helps you get it figured out.

  5. wexler says:

    Hello, MondoMatrix! I’d like some technical information about the LEDMatrix: how fast can you update it? In more detail:
    - At what frequency can you update all the brightness values?
    - Once you set the brightness values, are they strobed at some high frequency, or are they really on all the time without flicker?
    - Same question, but if you don’t need gray levels or color. Say that you want your LEDs to be either off or at maximum brightness, and send a bunch of 0s and 1s to the LEDMatrix. Are the LEDs that are on really on all the time, or are you strobing?
    - Can you combine several LEDMatrix-es, and if so, how does that affect the refresh rate?

    Thank you very much. Could you please also reply to my e-mail (mark.wexler —AT— gmail.com)?

    Mark

    • 3ricj says:

      Mark, did anyone ever answer your performance question? I’ve been wondering this same thing, and I’ll be damn’d if I can figure it out with the lack of documentation, software, and ‘open hardware’

  6. wildrhombus says:

    Can I use one color LED’s instead of the RGB 4 channel ones? The information is confusing. At the beginning it says that I can use the board for 192 individual LED’s , but later in the information it says that I must use the RGB ones.

    • Morgan says:

      You can use either one 4 pin RGB LED or three single color LEDs per port. Be sure to remember that when you use three single color LEDs you must use the common cathode (negative “-”) for each port. I hope this diagram helps.

      image

  7. kylecronan says:

    Hi,

    I have two LEDMatrix boards connected to a Displayduino. I noticed that if I address all 128 LEDs together using two calls to changeLEDBoard, the command takes 20 milliseconds or so to complete, but I only have to wait about 200 microseconds before I can send another change command.

    But for my application, usually no more than 20 of the LEDs need to change at each update. So I tried using changeLED, but I found that, although the command returns much more quickly, I need to wait 5 milliseconds after this command is sent before it can reliably receive another one. If I send them any faster than this, then some of the LEDs don’t actually change, the colors get corrupted, all kinds of weird stuff.

    So in effect, once I’m updating more than about 6 LEDs at once it becomes faster to update all of them. Why would that be?

    Thanks a bunch,
    Kyle Cronan

    • Morgan says:

      Hi there,

      The commands are sent out as a package that gives instructions to the daughter boards. The changeLEDBoard is actually only one instruction but it carries with it more information (all of the ports on the board – at once). I would advice that you use changeLEDBoard and simply send the same color (numbers) repeatedly to the LEDs that you want to stay the same and only change the numbers for the LEDs that you want changed on each cycle of the main controller (loop).

      So if you wanted to change a set of 20 LEDs then you would make sure that the value for them (in your array) is changed and the values of the other LEDs (that you want to stay the same) are not changed.

      let use know if this helped.

  8. joio says:

    Hello,
    I would like to connect LED Light Bar powered with 12 V. (http://www.sparkfun.com/commerce/product_info.php?products_id=678).

    Can the MondoMatrix power on an LED Light Bar instead of a single LED?

    I was looking for the MondoMatrix schematics and it was difficult, Are it freely to download?

    Thank you.

    • Morgan says:

      Hi there,

      You can certainly control these light bars but not with the LEDMatrix. Instead you will need the PowerMatrix.

      The PowerMatrix can control devices up to 12v and you can have 32 devices per board. Our distributors are in the process of rolling out the PowerMatrix right now and if you want you can simply contact them and ask them if they have stock.

      If you require PowerMatrix help then please let us know by posting on the PowerMatrix Help page.

      Peace.

  9. james says:

    What is the specs on the LED. i am interested in the red led what is its frequency and intensity? what current should i supply to this.

    thanks,
    James

    • Morgan says:

      The LED Break outs can either come with an RGB SMT LED pre-mounted on them or as a kit with a Piranha LED that you would solder on the board yourself.

      The specifications for the Piranha LED are:
      Size: 5mm
      Piranha Super Flux: RGB LED
      Forward Voltage(V): 3.2-3.6
      Forward Current(mA): 25
      Type: Common Cathode
      Reverse Current (uA): Vr = 5V
      MCD at 25mA ~ 8000
      Dominant Wavelength (mm) at 25mA: (R = 610-625 | G = 587-595 | B = 515-520)

      The specifications for the SMT LED are:
      5050 3-CHIPS SMT/SMD: RGB LED
      Forward Voltage(V): 3.4-3.6
      Forward Current(mA): 20
      Reverse Current (uA): Vr = 5V
      Luminous(MCD):Red 2000~2500 Green 4200~4600 Blue 2000~2500
      Dominant Wavelength (mm) at 25mA: (R = 61-625 | G = 587-595 | B = 515-520)

  10. mintysystem says:

    Are there per-port current limits on the LEDMatrix? Is there a total combined current limit on all the ports? Can you mix and match? For instance three 20 mA LEDs on one port but then three 80 mA LEDs on another? If the 5V source can take the load would it be possible to drive power LEDs with current draws of around 350 mA (even just one or two with the rest being low current LEDs)?

    • Morgan says:

      you can have about 25 mA per port.
      Total amps for a maxed out board is just over an amp and a half.
      You can mix and match yes.
      regarding the 350mA per port experiment – I am not sure – no one has tried it – it will heat up the chip(s) significantly for sure.

      you might consider the power matrix for more powerful LEDs – it does 12v 500mA per port for 32 ports.

    • Randy Glenn says:

      The output ports are constant-current and set to about 20 mA. By changing a small resistor on the board – NOT recommended unless you have prior surface mount soldering experience – this can be changed, however the driver chip is only rated to 80 mA. I would not suggest operating it at that level, however, without adding heatsinks.

      It might be possible to use multiple ports in parallel to drive higher-power LEDs, but they would have to be kept at the same brightness at all times, and most importantly, we haven’t tested this so we offer no guarantees.

      Thanks,

      -Randy

  11. caveman says:

    Where can I find a circuit diagram for the LED matrix? – it arrived from Sparkfun with no documentation whatsoever and I need to know what’s on the board to modify it for my needs. Ta.

  12. ggt says:

    Is there a part number for the 4 pin LED connectors on the LEDMATRIX boards and RGB breakout boards?

  13. Frankdj says:

    There are 64 ports for RGB LED’s, but what I can’t figure out from the description is what the possibilities are for using these ports for single color LED’s.

    (1): Can I control 192 individual LED’s separately…, or can I control 192 LED’s in groups of 3 as plugged into the ports? Because the code seems to be written especially for RGB LED’s, does that change much when controlling individual LED’s in an effective way.

    (2): Since the LEDmatrix and DisplayDuino work with Arduino software, does this also mean it can be controlled by using Processing? So interact with your array of LED’s by using Processing on your computer?

    • Morgan says:

      Hi Frankie DJ,

      1) You can use the ports for either one RGB LED or each port can control three separate LED’s. The code will support the control of each LED independently. There is a wiring diagram on the LED help page to show how to do this – if you need farther help on this just let us know.

      2) Yes you can connect through to the LED’s using Processing – our favorite!

      • Frankdj says:

        I see the diagram indeed, I should have looked a little longer myself. Anyway, thanks for the quick reply. I’ll just try to find a reseller who isn’t out of stock, and let you know if I bump into any new problems.

  14. ggt says:

    I recently ordered another LEDMatrix board; however, the headers are a different colour (black as opposed to white) and the board is labelled as Version 1.2 as opposed to Version 1.0

    What are the differences between versions?

  15. 3ricj says:

    Additionally, where can I find the software which is used to operate the displaydunio and the led matrix boards? It’s using GPLV2 software, which has been modified and not distributed. This is in violation of the GPLv2 license.

  16. rnehrboss says:

    I have purchased and am testing your boards for a project involving 1000 rgb leds.

    A couple of questions:
    I believe RS484 only allows 32 devices, correct?

    What is the outlook for your future ability to supply boards?

    It appears that fading is only accomplished by the continual change of the boards array. To accomplish a fade of a 10×100 array, we’d need to update all 16 boards continually? If this is the case it seems like the speed of our fade is limited by the speed at which we can plow the 1000×4 bytes down the line… which is really a RS485 bandwidth issue? how fast is the RS485 in Displayduino running, and am I accurate?

    Thanks!
    Richard

    • Morgan says:

      Actually we are working on updating the firmware code to account for the delays in the RS485 connection. We are a bit behind these days because of some delays during the holidays but we should have it up soon. What it will do is buffer and pre-load the instructions on the expansion board end. This will require a firmware update to your expansion board and we need to get demo videos and instruction up about this – so that will take us a while at our current load.

      • runaway says:

        I’m interesting in if this work has been done. I just purchased 16 LEDMatrix boards from Sparkfun, also for a 1000 LED interactive project. Any details on maximum refresh rate across the RS485 bus would be helpful.

        Also, any guidance on the gauge of leads needed for the LEDs? Each LED will be at most 10 feet away from the LEDMatrix.

        Finally, I believe I was able to source a Displayduino from Australia (everyone else appears to be sold out), but if that falls through, then it may be necessary to drive these through an RS485 interface on another Arduino clone. Have you folks considered offering more details on how we might accomplish this or updated timeframes and availability for Displayduinos themselves?

        Thanks!
        - Troy

  17. Tom says:

    Would it be possible to communicate with the ledmatrix boards with another rs485 device besides the displayduino? If so how and if not why? Any help would be appreciated. I am just trying to figure out how this rs485 comm system works, especially with the ledmatrix boards.
    Thanks

    • Morgan says:

      I think it would be possible yes. Of course we have already build in the hardware profile to the relatively cheap Displayduino boards. Can you be specific (technically) as to what you want to accomplish and I can get our team to look at it?

      • Tom says:

        Well, I am trying to control the LEDs on the matrix boards individually via live video feed broken down to 8×10 pixels and separated into rgb values using the program max/msp. I tried to use maxuino to communicate to the displayduino but didn’t know how to locate the ledmatrix board or how I could talk to them. I then tried to use an arduino UNO which works with maxuino, and an I/O shield- http://www.dfrobot.com/wiki/index.php?title=Arduino_I/O_Expansion_Shield_(SKU:_DFR0014)
        that can input and output rs485 but didn’t know if it would work connected to the ledmatrix. Ideally I would like to be able to have values for the matrix board, led, and red green blue in max and send these through rs485 to the boards.

          • Tom says:

            sorry to keep posting things but I have run into some questions with the components on my two LEDmatrix boards.
            1. there seems to be some excess solder on one of the components near the address dip selector. this doesn’t seem normal and I’m wondering if this will cause harm to the rest of the components on the board
            [IMG]http://img.photobucket.com/albums/v355/tomkogut/ledboard01.jpg[/IMG]
            2. the address dip selectors on both of my boards are differently arranged. one faces one way and has 1-8 on the switch itself and the other one faces the opposite way and is listed on the pcb itself 0-7. which one is correct?
            [IMG]http://img.photobucket.com/albums/v355/tomkogut/ledboard02.jpg[/IMG]

          • Morgan says:

            Sorry we have been backed up. Let us know if there are any lingering questions.

        • Morgan says:

          This would likely require a firmware update in the LED matrix side and a unique software patch on the Arduino side. Please do post any suggestions you have or things you feel would contribute to the project. You can send video feed to the LEDMatrix using Quarts Composer (on Mac) and a bit of code that one of the engineers setup. If you are interested I can try to get it – please e-mail us at: mondomatrix@mondomatrix.com.

    • Morgan says:

      Yes this is theoretically possible, but we don’t have the resources to put together a tutorial on this one.

  18. kriswis says:

    Hi,

    how to use a DMX512-signal to control LEDMatrix-modules? Is there a “ready to use” programcode? And, if yes, how to dip-switch the address?

    Thanks for response!
    kriswis

  19. elephant_cult says:

    Can the LEDMatrix be driven by another type of controller with RS-485 capabilities?

  20. heidrogen says:

    Do libraries exist to be able to change just the red, green, or blue properties of an LED? I’m poking around in the matrixnet.cpp and it looks complicated to inject this task =] love to hear your input — cheers, mike

  21. embsysdev says:

    I just puchased 4 LEDMatrix boards from SparkFun. Actually I bought 3 LEDMatrix and 1 ServoMatrix but they sent me the older v1.0 LEDMatrix instead of the ServoMatrix. But I digress.

    I have evaluated the v1.0 LEDMatrix board, and verified operation using several RGB LEDs and the slowFill sample code. However, I discovered that the LEDs briefly flash other colors. For example, an LED set to blue, will show flickering red and green elements while the other LEDs on the board are being updated This is unacceptable for my application. Can you tell me if this is expected behavior, i.e., a limitation of the hardware/firmware, or should I presume the board is defective?

    The 3 v1.2 LEDMatrix boards failed to verify, using the exact same setup (dropped into the v1.0 wiring). Before I open an RMA with SparkFun, I would like to verify they are programmed correctly. Where can I download the LEDMatrix firmware?

    • Morgan says:

      Kindly check your email for a detailed response to this question.

      • embsysdev says:

        Morgan,

        Thanks so much for providing support on this. As we discovered, the logic power supply was just too small. It was bottoming out on the current peaks that occurred when issuing the changeLED commands. Changing the power supply from 9V@350mA to 12V@1A resolved all the issues. What was particularly confusing was that the v1.0 boards worked, but the v1.2 boards did not respond at all.

        May I suggest that you update the web pages to indicate max current draw for the logic supply. This would allow users to properly size their logic power supply to accommodate their particular combination of boards and hopefully avoid problems.

  22. funvill says:

    Hello

    What is the switching frequency of the LEDs?

    For example how much time would it take to change the color of a (1 or 64) RGB LEDs?
    I was thinking of using one of these boards for a POV globe http://code.google.com/p/povglobe/ style project but i need to make sure that it can switch the LEDs fast enough to keep up with the spinning ball.

    I was hoping to use 120 LEDs or two boards. Will there be an additional slow down when i attached the 2nd board, and if so how much?

    Thank you for your time.
    - funvill -[at]- funvill -{dot}- com

  23. Tom says:

    what is the JP1 connector on the corner of the ledmatrix board for?

  24. lawrencealan says:

    I’ve posted about a source for some compatible connectors here:
    http://r0b0tz.com/2011/04/displayduino-ledmatrix-components/

  25. jeff.nappi says:

    I have a DisplayDuino644 and 4 LEDMatrix boards for sale if anyone is trying to get their hands on these! jeffrey.nappi _at_ gmail.com $80 each… I will also include connectors for all of the LEDMatrix boards!

  26. Morgan says:

    Hi Tom,

    Answer 1. It looks fine, a solder bleed, you can probably lift it off with some solder wick but it looks like it just misses the VIA so it will not affect the board. Have you noticed any adverse affects when you use the board?

    Answer 2. They are both right, it does not matter what way the switch is installed – only that the switch on means 1 and off means 0 in the binary address.

  27. Morgan says:

    It’s funny that you say that – we are actually working on releasing pre-fabricated cables. However, we are swamped these days so it might be a while before we can release them :(

  28. zv470 says:

    hmm, for some reason my code didn’t copy correctly,

    here is the loop function I’m using…

    void loop() {
    for(i = 0; i = 0; i–) {
    memset(blue, i, 64);
    myMatrix.changeLEDBoard(0, red, green, blue);
    delay(DELAY);
    }
    }

  29. zv470 says:

    what?
    try again…
    void loop() {
    for(i = 0; i = 0; i–) {
    memset(blue, i, 64);
    myMatrix.changeLEDBoard(0, red, green, blue);
    delay(DELAY);
    }
    }

  30. zv470 says:

    hmm, there must be a character that wordpress doesn’t like in comments. Can I email you my code?
    I wish I could delete my posts :/

    condition for 1st for loop to fade on:
    for(i = 0; i = 0; i–) {…}

    That code should work, strange. :/

  31. zv470 says:

    ok, I can’t believe this :( how do you post sourcecode with Wordpress? As all my posts so far have been mucked up.

    the conditions for my 2 for loops are:
    for (set “i” to zero; while “i” is less than 256; increment “i” )
    for (set “i” to 255; while “i” is greater than or equal to zero; decrement “i” )

    These loops should work. Weird.

  32. zv470 says:

    Oh my god, I found my problem. My forloop condition should have been less than 255 not less than 256 as “i” is an 8 bit value, when it reached 255 and “i” get’s incremented for the last time it wraps round to 0, so the first loop never finishes. therefore the second loop couldn’t run.

    I need sleep, good night. :/

    Morgan, I’m wondering why you used “unsigned char” in the MatrixNet library instead of “uint8_t”?