I would suggest that you should use a shift-register chip that has decent current-sinking capability for the cathodes, and use a shift-register chip to drive discrete transistors for the anodes. Perhaps wire the matrix as 7x26 and use two TLC5925 chips for the columns, and use a 74HC164 or equivalent to drive seven nice beefy transistors for the rows.
Actually, it may be a good idea to rig up the rows with a counter chip and a 555-timer wired so that they will automatically scan, but the main processor can 'nudge' the timer when it's almost ready for its next count. Such a circuit could ensure that no matter what the processor did, it would not be possible for a row to be energized much more than 1/5 of the time (the processor could strobe six rows quickly, then linger on the seventh, then six rows quickly, linger on the seventh, etc. but the hardware would limit what fraction of the time would be spent on any one row even in a worst-case situation.
In your actual circuit, have you connected the wires and the LED leads at the junctions indicated by the black circles, or have you connected them wherever the lines overlap in your schematic diagram?
The correct reading of the schematic is to only have connections where indicated by the junction indicators (black filled circles). If you do so, then the third scenario in your diagram does not exist - the wires going horizontally and vertically do not actually touch at all.
One way to visualize this: The horizontal wires are all on the plane of your work table, the vertical wires are all in a plane floating an inch above the table, and the LEDs are the only connections between these two sets, and the only connections are the black circles.
You are correct, electricity will follow a path of least resistance to the greatest extent. In the schematic, there is no path of least resistance, i.e. short-circuit, between row and column wires, since no junctions are indicated. If you have interconnected the row and column wires, disconnect them now. Then, as you will see, the only path that allows electricity flow is through the respective diode / LED.
Best Answer
Since each LED is dropping 1.8V, then there will be about 3.2V dropped across each 330 ohm resistor -> 5V - 1.8V = 3.2V.
The current through the resistor is the same as the current through the LED in series. This is calculated as resistor voltage divided by resistance -> 3.2V / 330 ohms = 9.7mA. This is the current through each LED string consisting of one series resistor and LED.
There are 16 LEDs, but using this style of matrix multiplexing, a maximum of 4 should ever be on at one time. That means your maximum current consumption should be found by multiplying the current through one LED string by the total number of strings -> 4 * 9.7mA = 38.8mA.
Power (watts) is simply voltage multiplied by current:
The efficiency is very low because so much voltage is dropped across the series resistors. Since you only need one LED at each matrix point, the best way to increase the efficiency would be to use a lower voltage power supply. For example, if the supply was 3.3V instead of 5V, only 1.5V would be dropped across each resistor. To maintain the same 10mA through each LED, the resistor size would be changed from 330 ohms to 150 ohms (1.5V / 10mA). With less voltage dropped across each resistor with the same amount of current flowing, less power is wasted in the resistors. The new numbers would look like this:
When driving LEDs in this manner, you want the total supply voltage to be as close as possible to the total LED string voltage (one LED or a few LEDs in series) with a bit extra to drop across a series resistor to set the current. If you could use a 2.0V supply, 20 ohm resistors would drop 0.2V for the same 10mA. This would drop the total power consumption to 80mW and increases the efficiency to 90%!
Of course, you would probably have to use a voltage regulator to achieve this irregular voltage supply level which will lower the efficiency (matrix efficiency * regulator efficiency). You'd really need to use a switching regulator which could have greater than 90% regulation efficiency. If you use a linear regulator, it will yield the same low efficiency in the end because it is burning off the extra voltage as heat, similar to the series resistor in your original design.
If you are using multiple LEDs at each matrix point, put as many in series as possible (in your case, 2 is all you can do with a 5V supply and 1.8V LED) rather than in parallel to save on wasted current.
You didn't ask this in the question, but keep in mind that when multiplexing LEDs in this manner, each will only be on 1/4 of the time because you are using an Nx4 matrix. Hence, the LEDs will only appear to be about 1/4 as bright as they would be when driven continuously with the same series resistance (again, not exactly due to the nonlinear light output to current relationship).