Hello Godzisz,
I had to get myself read into this BLM stuff just some weeks ago.
Perhaps it helps to think about the basic concept of a scan or display matrix first:
“Matrix” here has nothing to do with the position of the buttons and led’s on your panel!
It is a concept to handle a large amount of buttons and led’s with a smaller amount of
in and outputs of shiftregisters:
Think of 100 buttons e.g. without a matrix you will need 100 DIN pin’s so each button is
connected to one pin.
By using a e.g. 10x10 scanmatrix you will only need 10 output pins and 10 input pins, while the outputs
are connected to the rows of your matrix and the inputs are connected to the columns of your matrix.
But you will have to use a technique called multiplexing, that means, only one output and therefore
row will be active at one time and current will “flow” thru the matrix so that the inputs can read the information from this active row. Then the next row is activated by next output and scanned by the inputs, then the third… this switching is done faster than anyone can push a button and has to be realized by your software. Basically the same with a LED display matrix, but here you use outputs for columns and rows, switching is faster than your eye can realize.
Two problems come along with a BLM matrix, on the scan matrix you could have some undetermined states where the input could not “know from which button the current came from” this can be avoided
by adding a diode to each button which restricts current flow to only one direction.
On the display matrix you have the problem that output connected to one row has to “take” the current of all LED’s in one row (if all are on) there is a workaround by using low current led’s but the propper way to do it is to use a special IC thru which the curent will flow and which can take it. The shiftregister output will only drive this so called sink driver. Also as a Row is only active when scanned the LED gets less current
in average compared to a permanent on one, so to get the same brightnes you have to drive it with higher current.
So this is what i have sorted out, if i wrote something wrong, please anyone correct me.