# Multiplex in a multiplex?

**URL:** <https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959>\
**Category:** General Guidance\
**Created:** [May 27, 2025, 9:49pm UTC](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959 "2025-05-27T21:49:56Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![pcblue](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/pcblue/32/1219495_2.png) [@pcblue](https://forum.arduino.cc/u/pcblue)\
**Post date:** [May 27, 2025, 9:49pm UTC](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959/1 "2025-05-27T21:49:56Z")

</div>

I've been pondering on a project involving my Analog keyboard(digital piano) and Arduino which involves having LEDs on each key and lighting up whenever a key should be pressed. My keyboard currently has 61 keys and the idea was to have 4 multiplexes to link up every key, the problem is that the Arduino itself simplify does not have enough pins to link up 4 multiplexes. Is there a way to link a multiplex to another multiplex?

---

<div class="post-metadata">

**Author:** ![LarryD](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/larryd/32/215550_2.png) [@LarryD](https://forum.arduino.cc/u/LarryD)\
**Post date:** [May 27, 2025, 9:54pm UTC](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959/2 "2025-05-27T21:54:08Z")

</div>

- Let’s see your current proposed schematic.

---

<div class="post-metadata">

**Author:** ![anon94801460](https://avatars.discourse-cdn.com/v4/letter/a/278dde/32.png) [@anon94801460](https://forum.arduino.cc/u/anon94801460)\
**Post date:** [May 27, 2025, 9:54pm UTC](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959/3 "2025-05-27T21:54:52Z")

</div>

Consider I2C port expanders, for example [the MCP23017](https://www.best-microcontroller-projects.com/arduino-port-expander.html), which supports 8 different I2C addresses. Two I2C lines can control up to 128 outputs..

---

<div class="post-metadata">

**Author:** ![camsysca](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/camsysca/32/1015228_2.png) [@camsysca](https://forum.arduino.cc/u/camsysca)\
**Post date:** [May 27, 2025, 9:57pm UTC](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959/4 "2025-05-27T21:57:37Z")

</div>

4 16x1 mixes will need 8 outputs to select 1 of 64 inputs. All 4 address lines of each mix are driven by the same 4 outputs; the other 4 outputs are used to select any one mux.

The mux outputs all tie to the same input on the Arduino.

Alternatively, all 4 muxes could be left enabled, and a 1x4 mux used to select one of the 4 mux outputs; that would reduce you to 6 outputs and 1 input.

---

<div class="post-metadata">

**Author:** ![Railroader](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/railroader/32/274550_2.png) [@Railroader](https://forum.arduino.cc/u/Railroader)\
**Post date:** [May 27, 2025, 10:14pm UTC](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959/5 "2025-05-27T22:14:57Z")

</div>

> [@anon94801460](#):
>
> 128 outputs

127..... One is the master...

---

<div class="post-metadata">

**Author:** ![Railroader](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/railroader/32/274550_2.png) [@Railroader](https://forum.arduino.cc/u/Railroader)\
**Post date:** [May 27, 2025, 10:16pm UTC](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959/6 "2025-05-27T22:16:40Z")

</div>

> [@pcblue](#):
>
> the Arduino itself

There are some 20 different "Arduino".......

---

<div class="post-metadata">

**Author:** ![anon94801460](https://avatars.discourse-cdn.com/v4/letter/a/278dde/32.png) [@anon94801460](https://forum.arduino.cc/u/anon94801460)\
**Post date:** [May 27, 2025, 10:17pm UTC](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959/7 "2025-05-27T22:17:10Z")

</div>

> [@Railroader](#):
>
> 127..... One is the master...

Don't confuse I2C addresses with I/O pins. In the port expander mentioned there are 16 I/O pins, all separate. 8 port expanders with 8 I2C addresses control 128 pins.

---

<div class="post-metadata">

**Author:** ![pcblue](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/pcblue/32/1219495_2.png) [@pcblue](https://forum.arduino.cc/u/pcblue)\
**Post date:** [May 27, 2025, 11:28pm UTC](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959/8 "2025-05-27T23:28:51Z")

</div>

Don't have one yet, still pretty new to this so everythings in planning phase.

---

<div class="post-metadata">

**Author:** ![pcblue](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/pcblue/32/1219495_2.png) [@pcblue](https://forum.arduino.cc/u/pcblue)\
**Post date:** [May 27, 2025, 11:30pm UTC](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959/9 "2025-05-27T23:30:00Z")

</div>

I have an Arduino uno currently

---

<div class="post-metadata">

**Author:** ![LarryD](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/larryd/32/215550_2.png) [@LarryD](https://forum.arduino.cc/u/LarryD)\
**Post date:** [May 27, 2025, 11:58pm UTC](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959/10 "2025-05-27T23:58:32Z")

</div>

- Have no idea what you are using for a keyboard.  
This might stimulate some neurons.

 ![2025-05-27_18-27-04](https://europe1.discourse-cdn.com/arduino/original/4X/0/4/5/04586ab2ecaf28312f221e0fe8e62d4de16fd324.jpeg)

---

<div class="post-metadata">

**Author:** ![pcblue](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/pcblue/32/1219495_2.png) [@pcblue](https://forum.arduino.cc/u/pcblue)\
**Post date:** [May 28, 2025, 12:16am UTC](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959/11 "2025-05-28T00:16:22Z")

</div>

Cool! That was the rough idea I had in my head. Trying to see what sensor I should use to detect when the keys are pressed. The model of the keyboard I'm using is this:

> **[Amazon.com: Arturia KeyLab Essential mk3 — 61 Key USB MIDI Keyboard Controller...](https://www.amazon.com/Arturia-KeyLab-Essential-mk3-Controller/dp/B0C4G6PCQ1)**
>
> Buy Arturia KeyLab Essential mk3 — 61 Key USB MIDI Keyboard Controller with Analog Lab V Software Included: MIDI Controllers - Amazon.com ✓ FREE DELIVERY possible on eligible purchases

Maybe some kind of distance sensor?

---

<div class="post-metadata">

**Author:** ![anon94801460](https://avatars.discourse-cdn.com/v4/letter/a/278dde/32.png) [@anon94801460](https://forum.arduino.cc/u/anon94801460)\
**Post date:** [May 28, 2025, 12:45am UTC](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959/12 "2025-05-28T00:45:01Z")

</div>

> [@pcblue](#):
>
> Trying to see what sensor I should use to detect when the keys are pressed.

Most people use a specialized keyboard decoder IC, generic ICs are shown in post #10.

There is almost certainly one in the keyboard you linked above.

---

<div class="post-metadata">

**Author:** ![david\_2018](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/david_2018/32/1013044_2.png) [@david\_2018](https://forum.arduino.cc/u/david_2018)\
**Post date:** [May 28, 2025, 1:14am UTC](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959/13 "2025-05-28T01:14:54Z")

</div>

Are you using just the keyboard out of that midi controller, or do you intend to use the midi controller itself?

The manual states the keys are velocity sensitive, usually that is accomplished by having two switch contacts per key.

Have you considered using shift registers to read the key switch states into the arduino?

---

<div class="post-metadata">

**Author:** ![pcblue](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/pcblue/32/1219495_2.png) [@pcblue](https://forum.arduino.cc/u/pcblue)\
**Post date:** [May 28, 2025, 1:19am UTC](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959/14 "2025-05-28T01:19:44Z")

</div>

Not quite, whats a shift register?

---

<div class="post-metadata">

**Author:** ![david\_2018](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/david_2018/32/1013044_2.png) [@david\_2018](https://forum.arduino.cc/u/david_2018)\
**Post date:** [May 28, 2025, 1:30am UTC](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959/15 "2025-05-28T01:30:40Z")

</div>

First, can you clarify what you are trying to do?

> [@pcblue](#):
>
> which involves having LEDs on each key and lighting up whenever a key should be pressed.

Do you want to light up an LED at each key, or are you wanting to read the key switches with the Arduino?

---

<div class="post-metadata">

**Author:** ![pcblue](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/pcblue/32/1219495_2.png) [@pcblue](https://forum.arduino.cc/u/pcblue)\
**Post date:** [May 28, 2025, 1:38am UTC](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959/16 "2025-05-28T01:38:07Z")

</div>

> [@david\_2018](#):
>
> shift registers

I want it to light up to show what key to press. When pressed, it moves on to the next set of keys. Does that make sense?

---

<div class="post-metadata">

**Author:** ![pcblue](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/pcblue/32/1219495_2.png) [@pcblue](https://forum.arduino.cc/u/pcblue)\
**Post date:** [May 28, 2025, 1:38am UTC](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959/17 "2025-05-28T01:38:57Z")

</div>

Do you know where to find specialized decoder ICs? Do I have to make it myself or is there a place particularly that sells them?

---

<div class="post-metadata">

**Author:** ![david\_2018](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/david_2018/32/1013044_2.png) [@david\_2018](https://forum.arduino.cc/u/david_2018)\
**Post date:** [May 28, 2025, 1:40am UTC](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959/18 "2025-05-28T01:40:51Z")

</div>

Ah, that makes it easier, since the actual key press is sent out over midi, instead of having to detect that directly with the Arduino. You just need a way to drive 61 LEDs.

---

<div class="post-metadata">

**Author:** ![anon94801460](https://avatars.discourse-cdn.com/v4/letter/a/278dde/32.png) [@anon94801460](https://forum.arduino.cc/u/anon94801460)\
**Post date:** [May 28, 2025, 2:39am UTC](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959/19 "2025-05-28T02:39:52Z")

</div>

All the major electronics suppliers sell keyboard decoder ICs, like Digikey, Mouser, etc. but...

> I want it to light up to show what key to press.

Then the keyboard decoder is irrelevant. Sorry, I misunderstood the project. There are [keyboards for teaching beginners](https://www.musicianwave.com/best-lighted-keyboard-pianos/) that already do what you want.

---

<div class="post-metadata">

**Author:** ![pcblue](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/pcblue/32/1219495_2.png) [@pcblue](https://forum.arduino.cc/u/pcblue)\
**Post date:** [May 29, 2025, 6:50pm UTC](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959/20 "2025-05-29T18:50:55Z")

</div>

Oh noted. This is mainly for me to get a better understanding of wiring and coding. Learning electrical engineering and want to learn as much as possible.

[Next page](https://forum.arduino.cc/t/multiplex-in-a-multiplex/1384959.md?page=2)
