Arduino - Multi-Function Shield
Este tutorial ensina como usar o Arduino com o Multi-Function Shield. Em detalhes, vamos aprender:
- Como conectar o Multi-Function Shield ao Arduino.
- Como programar o Arduino para mostrar números e texto no display de 7 segmentos de 4 dígitos.
- Como programar o Arduino para detectar o pressionamento de botões.
- Como programar o Arduino para controlar LEDs (acender, apagar, piscar).
- Como programar o Arduino para fazer o buzzer apitar.
- Como programar o Arduino para ler o valor do potenciômetro.
- Como programar o Arduino para ler a temperatura do sensor LM35.

Assista a este tutorial em vídeo passo a passo que demonstra todos os exemplos do Multi-Function Shield. Observe que o vídeo mostra o Arduino Uno R4, mas funciona da mesma forma para o Arduino Uno R3:
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Multi-Function Shield
O Multi-Function Shield é um shield tudo-em-um para aprendizado e prototipagem, projetado para as placas Arduino Uno e Mega. Ele reúne vários componentes comuns em uma única placa, eliminando a necessidade de ligações complexas.
O shield inclui os seguintes componentes:
- Display de 7 Segmentos de 4 Dígitos: Controlado por um registrador de deslocamento 74HC595. Mostra números, texto (A–Z) e caracteres especiais como o símbolo de grau (°).
- 3 Botões de Pressão (S1, S2, S3): Ativos em LOW, com resistores de pull-up internos. Úteis para entrada do usuário e navegação em menus.
- 4 LEDs (D1, D2, D3, D4): Ativos em LOW. Podem ser acesos, apagados, alternados ou piscar de forma independente ou todos juntos.
- Buzzer: Ativo em LOW. Pode produzir bipes com duração configurável e com atraso opcional.
- Potenciômetro: Conectado ao pino analógico A0. Lê um valor de 0 a 1023 (ou porcentagem de 0–100%).
- Sensor de Temperatura LM35: Conectado ao pino analógico A4. Lê a temperatura em Celsius. É necessário remover o jumper J1.
Para placas no formato do Arduino Uno (como o Arduino Uno ou o Mega), o Multi-Function Shield encaixa diretamente na placa, sendo uma solução realmente plug-and-play — sem protoboard ou fios jumper. Para placas no formato Uno, mas com nomes de pinos diferentes (como o DIYables ESP32-S3 Uno), a biblioteca suporta mapeamento de pinos personalizado.
Mapeamento de Pinos
| Função | Pino do Arduino | Função | Pino do Arduino |
|---|---|---|---|
| LED D1 | 13 | Botão S1 | A1 |
| LED D2 | 12 | Botão S2 | A2 |
| LED D3 | 11 | Botão S3 | A3 |
| LED D4 | 10 | Potenciômetro | A0 |
| Buzzer | 3 | Sensor de Temperatura LM35 | A4 |
| Display LATCH | 4 | ||
| Display CLOCK | 7 | ||
| Display DATA | 8 |

Diagrama de Ligação
Conectar o Arduino ao Multi-Function Shield é simples. Basta encaixar o Multi-Function Shield no Arduino, garantindo o alinhamento correto com os pinos de conexão, como mostrado na imagem abaixo.

This image is created using Fritzing. Click to enlarge image
Instalação da Biblioteca
- Conecte a placa Arduino ao seu computador com um cabo USB.
- Abra o Arduino IDE, selecione a placa e a porta corretas.
- Vá até o ícone Libraries na barra esquerda do Arduino IDE.
- Pesquise "DIYables_MultiFuncShield" e encontre a biblioteca DIYables_MultiFuncShield da DIYables.
- Clique no botão Install para instalar a versão mais recente da biblioteca.

Observação: Esta biblioteca é independente e não tem dependências externas.
Estrutura Básica
Todo sketch que usa o Multi-Function Shield segue esta estrutura básica:
MFS.begin() inicializa todos os componentes (display, botões, LEDs, buzzer). MFS.loop() atualiza a multiplexação do display, o debounce dos botões, o piscar dos LEDs e o tempo do buzzer. As duas chamadas são obrigatórias.
Código Arduino - Display de 7 Segmentos
O código a seguir demonstra como mostrar números inteiros, decimais, texto e caracteres especiais no display de 7 segmentos de 4 dígitos.
Passos Rápidos
- Encaixe o Multi-Function Shield na placa Arduino.
- Conecte a placa Arduino ao seu computador com um cabo USB.
- Abra o Arduino IDE, selecione a placa e a porta corretas.
- Copie o código acima e cole no editor do Arduino IDE.
- Clique no botão Upload no Arduino IDE para carregar o código no Arduino.
O display passa por 7 modos a cada 3 segundos: inteiro, zeros à esquerda, decimal, texto, texto com ponto, símbolo de grau e traços.
Resumo da API do Display
| Método | Descrição | Exemplo | ||
|---|---|---|---|---|
| print(int) | Mostra um número inteiro | MFS.display.print(42) | ||
| print(int, true) | Inteiro com zeros à esquerda | MFS.display.print(42, true) → 0042 | ||
| print(float, dp) | Decimal com casas decimais | MFS.display.print(3.14, 2) | ||
| print(text) | Mostra texto (A-Z, 0-9, -, _) | MFS.display.print("HELP") | ||
| setNumber(pos, val) | Define um único dígito (pos 1-4) | MFS.display.setNumber(1, 5) | ||
| setChar(pos, ch) | Define um caractere na posição | MFS.display.setChar(2, 'A') | ||
| setChar(pos, SegChars) | Define um caractere especial | MFS.display.setChar(3, SegChars | DEGREE) | |
| setDot(pos) | Adiciona um ponto na posição | MFS.display.setDot(2) | ||
| clear() | Limpa todos os dígitos e pontos | MFS.display.clear() | ||
| show() | Aplica as alterações manuais | MFS.display.show() |
Observação: Os métodos print() chamam show() automaticamente. Use clear(), setNumber(), setChar(), setDot() e depois show() para controle manual.
Caracteres especiais disponíveis via SegChars: DASH (-), UNDERSCORE (_), C, E, F, DEGREE (°).
Código Arduino - Botões
O código a seguir detecta quando os botões são pressionados e soltos, e imprime os eventos no Serial Monitor.
Passos Rápidos
- Copie o código acima e cole no editor do Arduino IDE.
- Clique no botão Upload no Arduino IDE para carregar o código no Arduino.
- Abra o Serial Monitor.
- Pressione e solte os botões S1, S2 e S3 no shield para ver a saída.
Resumo da API dos Botões
| Método | Descrição | |
|---|---|---|
| isPressed() | Retorna true uma vez quando o botão é pressionado | |
| isReleased() | Retorna true uma vez quando o botão é solto | |
| setDebounceTime(ms) | Define o tempo de debounce (padrão | 50 ms) |
Os botões têm debounce embutido e usam lógica ativa em LOW com resistores de pull-up internos. Você pode acessar os botões pelo nome (MFS.button1, MFS.button2, MFS.button3) ou pelo índice (MFS.button(1) a MFS.button(3)).
Código Arduino - LEDs
O código a seguir acende os LEDs um por um e depois faz todos piscarem juntos.
Passos Rápidos
- Copie o código acima e cole no editor do Arduino IDE.
- Clique no botão Upload no Arduino IDE para carregar o código no Arduino.
Os LEDs acendem em sequência com um atraso de 500 ms, e depois os 4 LEDs piscam juntos.
Resumo da API dos LEDs
| Método | Descrição |
|---|---|
| turnON() | Acende o LED |
| turnOFF() | Apaga o LED |
| toggle() | Alterna o estado do LED |
| blink(interval) | Pisca com tempos iguais de ligado/desligado |
| blink(onTime, offTime) | Pisca com tempos de ligado/desligado separados |
| isOn() | Retorna true se o LED estiver aceso no momento |
Métodos de conveniência em MFS:
| Método | Descrição |
|---|---|
| allLedsOn() | Acende os 4 LEDs |
| allLedsOff() | Apaga os 4 LEDs |
| allLedsBlink(interval) | Faz todos os LEDs piscarem juntos |
| allLedsBlink(onTime, offTime) | Faz todos piscarem com tempos de ligado/desligado separados |
Os LEDs são ativos em LOW. Acesse pelo nome (MFS.led1 a MFS.led4) ou pelo índice (MFS.led(1) a MFS.led(4)).
Código Arduino - Buzzer
O código a seguir faz o buzzer apitar a cada 2 segundos.
Passos Rápidos
- Copie o código acima e cole no editor do Arduino IDE.
- Clique no botão Upload no Arduino IDE para carregar o código no Arduino.
Você vai ouvir um bipe curto a cada 2 segundos.
Resumo da API do Buzzer
| Método | Descrição |
|---|---|
| beep(ms) | Apita pela duração especificada |
| beep(ms, delayMs) | Espera delayMs e depois apita por ms |
| stop() | Para o buzzer imediatamente |
| isBeeping() | Retorna true se o buzzer estiver ligado no momento |
Código Arduino - Potenciômetro
O código a seguir lê o potenciômetro e imprime o valor e a porcentagem no Serial Monitor.
Passos Rápidos
- Copie o código acima e cole no editor do Arduino IDE.
- Clique no botão Upload no Arduino IDE para carregar o código no Arduino.
- Abra o Serial Monitor.
- Gire o botão do potenciômetro e observe o valor mudar no Serial Monitor.
Resumo da API do Potenciômetro
| Método | Retorna | Descrição |
|---|---|---|
| readPot() | int | Valor bruto do ADC (0–1023 no Uno) |
| readPotPercent() | float | Porcentagem (0.0 – 100.0) |
Código Arduino - Sensor de Temperatura (LM35)
O código a seguir lê o sensor de temperatura LM35 e mostra o valor em Celsius no display e no Serial Monitor.
Importante: Você deve remover o jumper J1 do shield para usar o sensor de temperatura LM35 (o pino A4 é compartilhado com o SDA do I2C).
Passos Rápidos
- Remova o jumper J1 do Multi-Function Shield.
- Copie o código acima e cole no editor do Arduino IDE.
- Clique no botão Upload no Arduino IDE para carregar o código no Arduino.
- Abra o Serial Monitor.
- Observe a leitura de temperatura no display e no Serial Monitor.
A leitura de temperatura usa uma média móvel de 4 amostras para obter valores estáveis. O buffer é preenchido automaticamente na primeira leitura para evitar erros de partida a frio.
Arduino Multi-Function Shield - Demonstração Completa
Abaixo está um tutorial em vídeo passo a passo que demonstra todos os exemplos do Multi-Function Shield. Observe que o vídeo mostra o Arduino Uno R4, mas funciona da mesma forma para o Arduino Uno R3:
Plataformas Suportadas
A biblioteca suporta todas as plataformas Arduino (architectures=*).