Part 1: Introduction

Parts / Skills Required

To get this demo up and running, you'll need the parts listed below. We'll assume you have some basic Arduino coding experience, but actually, we've included complete code examples - As long as you know how to upload an Arduino sketch and open a serial terminal window, you can copy and paste all the way to a working demo, if you'd like.


  • 16x10 ThruMode MatrixArray
  • Arduino (Ideally an Uno, but any will work)
  • 74HC595 Shift Register (x2)
  • 74HC4051 Analog Multiplexer (x2)
  • 20k resistor (x1)
  • Solderless Breadboard
  • Jumper Wire

Could this be done with less hardware?

If you're looking at the parts list and thinking that the Arduino has enough IO pins to drive 16 columns and read 10 rows with only one external multiplexer, you're right. There are two reasons we chose to use 2 shift registers and 2 multiplexers to avoid mixing onboard and external IO:

1. It keeps the design and code clean. This project is an example, so we wanted to maximize clarity.

2. It's highly scalable! Following the same pattern of connection, and changing just 2 lines of code, this example could be expanded to scan a 96 x 96 (9216 cell) matrix.

So with that said, let's take a look at how the circuitry is connected...