We started experimenting with “row/column scanning”. This term refers to how the columns of shared anodes(+) and rows of shared cathodes(-) in an LED matrix can be quickly turned on and off to control a single LED within the matrix. Because the number of LEDs with in a matrix will always be fewer than the total number of rows and columns, it is more efficient to quickly address the columns and rows than each individual LED.
We first soldered a 4×4 matrix of LEDs by hand.
By sharing the cathodes of LED in a row and the anodes of each LED in a column we were able to address the 16 LEDs by connecting only the 4 rows and 4 columns to my microcontroller. By quickly changing the states of the pins on the microcontroller from high(+) to low(-) we could create animations and motion across the LED matrix. An individual LED could be lit and its neighbors darkened by quickly turning that LED’s anode(+) column pin high and its cathode(-) row low, then grounding the surrounding anode(+) columns by bringing them low and shunting the surrounding cathode(-) rows by bringing them high.