Skip to content


Serge Vakulenko edited this page Aug 26, 2015 · 1 revision


Charlieplexing is a technique of driving a LED matrix by a minimal set of signals with tri-state capability.

Olimex LOL shield is an example of affordable Arduino shield, which uses charliplexing. With only twelve pins D2-D13 you can control a matrix of 9x14 LEDs. It is essential for control signals to have a real tri-state capability. Any extelnal pull-up or pull-down resistors will cause blur on the screen.

For example, to light a top left LED, you need to:

  • Set pin D13 high
  • Set pin D5 low
  • Set all other pins to tri-state

Here is a detailed map:

col 1 col 2 col 3 col 4 col 5 col 6 col 7 col 8 col 9 col 10 col 11 col 12 col 13 col 14
row1 +D13 ~D5 +D13 ~D6 +D13 ~D7 +D13 ~D8 +D13 ~D9 +D13 ~D10 +D13 ~D11 +D13 ~D12 +D13 ~D4 +D4 ~D13 +D13 ~D3 +D3 ~D13 +D13 ~D2 +D2 ~D13
row2 +D12 ~D5 +D12 ~D6 +D12 ~D7 +D12 ~D8 +D12 ~D9 +D12 ~D10 +D12 ~D11 +D12 ~D13 +D12 ~D4 +D4 ~D12 +D12 ~D3 +D3 ~D12 +D12 ~D2 +D2 ~D12
row3 +D11 ~D5 +D11 ~D6 +D11 ~D7 +D11 ~D8 +D11 ~D9 +D11 ~D10 +D11 ~D12 +D11 ~D13 +D11 ~D4 +D4 ~D11 +D11 ~D3 +D3 ~D11 +D11 ~D2 +D2 ~D11
row4 +D10 ~D5 +D10 ~D6 +D10 ~D7 +D10 ~D8 +D10 ~D9 +D10 ~D11 +D10 ~D12 +D10 ~D13 +D10 ~D4 +D4 ~D10 +D10 ~D3 +D3 ~D10 +D10 ~D2 +D2 ~D10
row5 +D9 ~D5 +D9 ~D6 +D9 ~D7 +D9 ~D8 +D9 ~D10 +D9 ~D11 +D9 ~D12 +D9 ~D13 +D9 ~D4 +D4 ~D9 +D9 ~D3 +D3 ~D9 +D9 ~D2 +D2 ~D9
row6 +D8 ~D5 +D8 ~D6 +D8 ~D7 +D8 ~D9 +D8 ~D10 +D8 ~D11 +D8 ~D12 +D8 ~D13 +D8 ~D4 +D4 ~D8 +D8 ~D3 +D3 ~D8 +D8 ~D2 +D2 ~D8
row7 +D7 ~D5 +D7 ~D6 +D7 ~D8 +D7 ~D9 +D7 ~D10 +D7 ~D11 +D7 ~D12 +D7 ~D13 +D7 ~D4 +D4 ~D7 +D7 ~D3 +D3 ~D7 +D7 ~D2 +D2 ~D7
row8 +D6 ~D5 +D6 ~D7 +D6 ~D8 +D6 ~D9 +D6 ~D10 +D6 ~D11 +D6 ~D12 +D6 ~D13 +D6 ~D4 +D4 ~D6 +D6 ~D3 +D3 ~D6 +D6 ~D2 +D2 ~D6
row9 +D5 ~D6 +D5 ~D7 +D5 ~D8 +D5 ~D9 +D5 ~D10 +D5 ~D11 +D5 ~D12 +D5 ~D13 +D5 ~D4 +D4 ~D5 +D5 ~D3 +D3 ~D5 +D5 ~D2 +D2 ~D5

Prohibited combinations: +D4 ~D2, +D4 ~D3, +D3 ~D2, +D3 ~D4, +D2 ~D3, +D2 ~D4.

You can’t perform that action at this time.