A multiplexação é uma arte que qualquer desenvolvedor de hardware precisa aprender para combinar dois ou mais canais de informação por apenas um meio de transmissão.
O que é Multiplexação?
Multiplexação é uma forma de expandir 2 ou mais sinais individuais, de forma simultânea por um único meio de transmissão.
Exemplos de Multiplexação
Em nosso dia dia nos deparamos a todo momento com este fenômeno inclusive agora. Existem inúmeros exemplos ao nosso redor que podemos usar para entender o que é a multiplexação, mas um dos mais simples de ser explicado é exatamente as telas/displays.
Um display OLED de 128×64 pixel tem no total 8.192px agora imagine o quanto seria necessário de energia para acionar todos eles de uma única vez? Isso iria consumir mais energia do que o normal e envolveria um hardware maior para acender esses 8.192px.
Explicação Cientifica.
O fenômeno que permite criar animações ilusórias está associada a persistência da imagem na retina que tem a capacidade de salvar temporariamente a imagem por uma fração de segundos OLIVEIRA, F. G. (2009). Com a multiplexação é possível aproveitar essa peculiaridade para acionar por exemplo pixel a pixel e assim formar uma imagem completa sem ter que acionar todos os pixels de uma só vez.
O que é Retina e qual sua importância para a Multiplexação?

A Retina é uma das membranas do seguimento posterior do olho, que tem a função de transformar o estímulo luminoso em um estímulo nervoso e enviá-lo ao cérebro, para que as imagens sejam lidas. A membrana nervosa do olho é ligada desde o nervo óptico até a pupila. São dez camadas, dos quais se destacam o epitélio pigmentário que é a camada externa, e a camada sensorial, composta de fotorreceptores.
Fonte: IORJ
Multiplexação de LEDs com Arduino
Por que multiplexar LED’s? Os LED’s são uma ótima porta de entrada para entender o básico de diversas funcionalidades usando o Arduino e a multiplexação não fica para trás. O mesmo exemplo desenvolvido aqui poderá ser usado da mesma forma para inúmeras aplicações como o ligar 2 displays 7 segmentos com números diferentes ao mesmo tempo.
Diagrama

Código
O código é bastante simples, consistindo em um pequeno ciclo de período fixo por 5s usando a biblioteca Waiting Time, depois um ciclo de incremento no período de cada LED com duty cycle de 50% e por fim um decremento equivalente.
#include <Elcereza_Waiting_Time.h>
#define LED1 12
#define LED2 9
#define LED3 6
Waiting_Time time(1);
void setup() {
pinMode(LED1, 1);
pinMode(LED2, 1);
pinMode(LED3, 1);
}
void State_Change(int LED, int p){
digitalWrite(LED, !digitalRead(LED));
delay(p);
digitalWrite(LED, !digitalRead(LED));
delay(p);
}
void loop() {
if(time.wait(5000, 0))
{
for(int i = 5; i < 100; i += 1)
{
State_Change(LED1, i);
State_Change(LED2, i);
State_Change(LED3, i);
}
for(int i = 90; i > 5; i -= 1)
{
State_Change(LED1, i);
State_Change(LED2, i);
State_Change(LED3, i);
}
}
else
{
State_Change(LED1, 5);
State_Change(LED2, 5);
State_Change(LED3, 5);
}
}
Funcionamento
O vídeo abaixo mostra um funcionamento de 3 LEDs que começam fluxo de funcionamento da esquerda para a direita, inicialmente em uma velocidade lenta para demonstrar como a multiplexação funcionaria em “câmera lenta”, depois a frequência vai aumentando até o ponto em que todos os LEDs ficam aparentemente acesos mas na verdade estão piscando um a um.