Arduino Uno R4 - Multi-Function Shield

O Multi-Function Shield é um ótimo companheiro para o Arduino Uno R4 — seja a versão Minima ou a WiFi. Neste guia, você vai aprender a:

O Arduino Uno R4 tem o mesmo formato do Uno R3 clássico, então o Multi-Function Shield encaixa direto, sem nenhuma ligação extra. O Uno R4 usa o microcontrolador Renesas RA4M1 (Minima) ou RA4M1 + ESP32-S3 (WiFi), oferecendo mais memória, clock mais rápido e um ADC de 14 bits em comparação com o Uno original.

Multi-Function Shield com Arduino Uno R4

Assista a este tutorial em vídeo, passo a passo, que demonstra todos os exemplos do Multi-Function Shield:

Sobre o Multi-Function Shield

O Multi-Function Shield reúne vários componentes em uma única placa que encaixa direto em qualquer conector compatível com o Uno. Veja o que está incluído:

  • Um display de 7 segmentos e 4 dígitos controlado por um registrador de deslocamento 74HC595 — capaz de mostrar inteiros, decimais, letras A–Z e símbolos como o sinal de grau (°).
  • Três botões de pressão (S1, S2, S3) ligados em lógica ativa em LOW com resistores de pull-up integrados — prontos para detectar pressionamentos e liberações com debounce.
  • Quatro LEDs (D1–D4), também ativos em LOW — controláveis individualmente para ligar/desligar/alternar/piscar, além de uma função prática para piscar todos de uma vez.
  • Um buzzer ativo em LOW — programável para bipes únicos ou sequências temporizadas.
  • Um potenciômetro no pino analógico A0 — retorna contagens brutas do ADC ou uma leitura de 0–100%.
  • Um sensor de temperatura LM35 no pino analógico A4 — fornece leituras em Celsius (remova o jumper J1 para habilitá-lo).

Como o Uno R4 mantém o layout de pinos clássico do Uno, todo o mapeamento de pinos é idêntico ao do Uno original:

Função Pino Função Pino
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
LATCH do Display 4
CLOCK do Display 7
DATA do Display 8
Pinagem do Multi-Function Shield

Diagrama de Ligação

Não são necessários fios jumper nem protoboard — basta alinhar o Multi-Function Shield com os conectores do Uno R4 e pressioná-lo no lugar. O shield se encaixa na placa exatamente como no Uno R3 clássico.

Diagrama de ligação do Multi-Function Shield com Arduino Uno R4

This image is created using Fritzing. Click to enlarge image

Veja A melhor forma de alimentar o Arduino Uno R4 e outros componentes.

Como Instalar a Biblioteca

  1. Conecte o Arduino Uno R4 ao seu computador usando um cabo USB Type-C.
  2. Na Arduino IDE, verifique se a placa correta (Arduino Uno R4 Minima ou WiFi) e a porta serial estão selecionadas.
  3. Clique no ícone Libraries na barra lateral esquerda.
  4. Digite "DIYables_MultiFuncShield" na caixa de busca e localize a biblioteca publicada pela DIYables.
  5. Clique em Install para adicionar a biblioteca à sua IDE.
Biblioteca do Multi-Function Shield para Arduino

Nenhuma dependência adicional é necessária — a biblioteca é totalmente independente.

Estrutura Mínima do Sketch

Todos os sketches que usam o Multi-Function Shield compartilham este esqueleto:

#include <DIYables_MultiFuncShield.h> void setup() { MFS.begin(); // Set up display, buttons, LEDs, buzzer } void loop() { MFS.loop(); // Refresh display, poll buttons, update LEDs & buzzer }

Chamar MFS.begin() configura todos os componentes do shield. Chamar MFS.loop() a cada iteração mantém funcionando sem problemas a multiplexação do display, o debounce dos botões, a temporização do piscar dos LEDs e o agendamento do buzzer.

Exemplo do Display de 7 Segmentos

Este exemplo mostra como colocar números, floats, textos e símbolos especiais no display de 4 dígitos.

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-multi-function-shield */ /* * Multi-Function Shield - Display Example * * Cycles through display features every 3 seconds: * 1. Integer number * 2. Integer with leading zeros * 3. Float number * 4. Text string with letters * 5. Text string with dot * 6. Degree symbol + C (special chars) * 7. Dashes * * Hardware: DIYables Multi-Function Shield * * COMPATIBLE Multi-Function Shield: * - https://diyables.io/products/multi-function-shield-for-arduino-uno-mega * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4 Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - DIYables ESP32 S3, Uno-form factor: https://diyables.io/esp32-s3-uno * - It is expected to work with other boards */ #include <DIYables_MultiFuncShield.h> uint8_t step = 0; unsigned long lastUpdate = 0; void setup() { MFS.begin(); } void loop() { MFS.loop(); if (millis() - lastUpdate >= 3000) { lastUpdate = millis(); switch (step) { case 0: // Integer: " 42" MFS.display.print(42); break; case 1: // Integer with leading zeros: "0042" MFS.display.print(42, true); break; case 2: // Float with 2 decimals: "3.14" MFS.display.print(3.14, 2); break; case 3: // Text string: "HELP" MFS.display.print("HELP"); break; case 4: // Text with dot: "Ab.Cd" MFS.display.print("Ab.Cd"); break; case 5: // Degree + C using special chars: "25°C" MFS.display.clear(); MFS.display.setNumber(1, 2); MFS.display.setNumber(2, 5); MFS.display.setChar(3, SegChars::DEGREE); MFS.display.setChar(4, SegChars::C); MFS.display.show(); break; case 6: // Dashes: "----" MFS.display.print("----"); break; } step = (step + 1) % 7; } }

Como Executar

  • Coloque o Multi-Function Shield sobre o Arduino Uno R4.
  • Conecte a placa ao seu PC com um cabo USB Type-C.
  • Abra a Arduino IDE e selecione a placa e a porta.
  • Cole o código acima no editor.
  • Pressione Upload.

O display vai passar por sete apresentações diferentes — um inteiro, um inteiro preenchido com zeros, um número de ponto flutuante, um texto, um texto com ponto decimal, um símbolo de grau e traços — trocando a cada 3 segundos.

Métodos do Display em Resumo

Método O Que Faz Exemplo de Uso
print(int) Mostra um valor inteiro MFS.display.print(42)
print(int, true) Mostra um inteiro com zeros à esquerda MFS.display.print(42, true) → 0042
print(float, dp) Mostra um número de ponto flutuante MFS.display.print(3.14, 2)
print(text) Mostra um texto (A-Z, 0-9, -, _) MFS.display.print("HELP")
setNumber(pos, val) Coloca um dígito em uma posição (1–4) MFS.display.setNumber(1, 5)
setChar(pos, ch) Coloca um caractere em uma posição MFS.display.setChar(2, 'A')
setChar(pos, SegChars) Coloca um símbolo especial MFS.display.setChar(3, SegCharsDEGREE)
setDot(pos) Acende o ponto em uma posição MFS.display.setDot(2)
clear() Apaga o display inteiro MFS.display.clear()
show() Envia as alterações manuais ao display MFS.display.show()

As sobrecargas de print() chamam show() internamente. Ao montar um display manualmente com setNumber(), setChar() ou setDot(), chame clear() primeiro e show() no final.

Caracteres especiais suportados por meio de SegChars: DASH, UNDERSCORE, C, E, F, DEGREE.

Exemplo dos Botões

Detecte quando cada botão é pressionado ou solto e imprima o evento pela Serial.

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-multi-function-shield */ /* * Multi-Function Shield - Buttons Example * * Detects button presses and releases, prints to Serial Monitor. * * Hardware: DIYables Multi-Function Shield * * COMPATIBLE Multi-Function Shield: * - https://diyables.io/products/multi-function-shield-for-arduino-uno-mega * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4 Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - DIYables ESP32 S3, Uno-form factor: https://diyables.io/esp32-s3-uno * - It is expected to work with other boards */ #include <DIYables_MultiFuncShield.h> void setup() { Serial.begin(9600); MFS.begin(); } void loop() { MFS.loop(); if (MFS.button1.isPressed()) Serial.println("Button 1 pressed"); if (MFS.button1.isReleased()) Serial.println("Button 1 released"); if (MFS.button2.isPressed()) Serial.println("Button 2 pressed"); if (MFS.button2.isReleased()) Serial.println("Button 2 released"); if (MFS.button3.isPressed()) Serial.println("Button 3 pressed"); if (MFS.button3.isReleased()) Serial.println("Button 3 released"); }

Como Executar

  • Cole o código na Arduino IDE e pressione Upload.
  • Abra o Serial Monitor.
  • Tente pressionar e soltar S1, S2 e S3 — cada evento é impresso assim que acontece.

Métodos dos Botões em Resumo

Método O Que Faz
isPressed() Retorna true no momento em que o botão é pressionado
isReleased() Retorna true no momento em que o botão é solto
setDebounceTime(ms) Ajusta a janela de debounce (50 ms por padrão)

Cada botão tem debounce automático e usa lógica ativa em LOW com pull-up interno. Referencie cada botão com MFS.button1 / MFS.button2 / MFS.button3, ou use o acesso por índice MFS.button(1) até MFS.button(3).

Exemplo dos LEDs

Acenda os quatro LEDs em sequência e depois faça todos piscarem juntos.

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-multi-function-shield */ /* * Multi-Function Shield - LEDs Example * * Demonstrates turn on, turn off, and blink for each LED. * * Hardware: DIYables Multi-Function Shield * * COMPATIBLE Multi-Function Shield: * - https://diyables.io/products/multi-function-shield-for-arduino-uno-mega * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4 Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - DIYables ESP32 S3, Uno-form factor: https://diyables.io/esp32-s3-uno * - It is expected to work with other boards */ #include <DIYables_MultiFuncShield.h> void setup() { Serial.begin(9600); MFS.begin(); // Turn on all LEDs one by one Serial.println("Turn ON LEDs one by one"); for (uint8_t i = 1; i <= 4; i++) { MFS.led(i).turnON(); delay(500); } delay(1000); // Turn off all LEDs one by one Serial.println("Turn OFF LEDs one by one"); for (uint8_t i = 1; i <= 4; i++) { MFS.led(i).turnOFF(); delay(500); } delay(1000); // Blink individual LED (LED 1 only) Serial.println("Blink LED 1 individually"); MFS.led(1).blink(300); unsigned long start = millis(); while (millis() - start < 3000) MFS.loop(); MFS.led(1).turnOFF(); delay(1000); // Blink all LEDs together Serial.println("Blink all LEDs together"); MFS.allLedsBlink(500); } void loop() { MFS.loop(); }

Como Executar

  • Cole o código na Arduino IDE e pressione Upload.

Veja os LEDs acenderem um de cada vez com um intervalo de meio segundo e depois os quatro começarem a piscar em uníssono.

Métodos dos LEDs em Resumo

Método O Que Faz
turnON() Liga o LED
turnOFF() Desliga o LED
toggle() Inverte o estado atual
blink(interval) Pisca com duração igual ligado e desligado
blink(onTime, offTime) Pisca com durações personalizadas ligado e desligado
isOn() Retorna true quando o LED está aceso

Atalhos para o grupo todo disponíveis em MFS:

Método O Que Faz
allLedsOn() Acende os quatro LEDs
allLedsOff() Apaga os quatro LEDs
allLedsBlink(interval) Pisca os quatro LEDs juntos
allLedsBlink(onTime, offTime) Pisca todos com tempos personalizados

Os LEDs operam em modo ativo em LOW. Use MFS.led1 até MFS.led4 ou a forma indexada MFS.led(1) até MFS.led(4).

Exemplo do Buzzer

Toque um bipe curto em intervalos regulares.

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-multi-function-shield */ /* * Multi-Function Shield - Buzzer Example * * Beeps the buzzer every 2 seconds. * * Hardware: DIYables Multi-Function Shield * * COMPATIBLE Multi-Function Shield: * - https://diyables.io/products/multi-function-shield-for-arduino-uno-mega * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4 Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - DIYables ESP32 S3, Uno-form factor: https://diyables.io/esp32-s3-uno * - It is expected to work with other boards */ #include <DIYables_MultiFuncShield.h> unsigned long lastBeep = 0; void setup() { MFS.begin(); } void loop() { MFS.loop(); if (millis() - lastBeep >= 2000) { lastBeep = millis(); MFS.buzzer.beep(100); } }

Como Executar

  • Cole o código na Arduino IDE e pressione Upload.

Um bipe breve soa a cada 2 segundos.

Métodos do Buzzer em Resumo

Método O Que Faz
beep(ms) Produz um bipe com a duração indicada em milissegundos
beep(ms, delayMs) Espera delayMs e depois toca por ms
stop() Silencia o buzzer imediatamente
isBeeping() Retorna true enquanto o buzzer está ativo

Exemplo do Potenciômetro

Leia o potenciômetro e imprima o valor e a porcentagem pela Serial.

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-multi-function-shield */ /* * Multi-Function Shield - Potentiometer Example * * Reads the potentiometer and shows the percentage on the display. * * NOTE: The potentiometer on the shield is a multi-turn trimmer. * You need to rotate it MANY turns to go from 0% to 100%. * If the value stays at 0% or 100%, rotate in the opposite direction. * * Hardware: DIYables Multi-Function Shield * * COMPATIBLE Multi-Function Shield: * - https://diyables.io/products/multi-function-shield-for-arduino-uno-mega * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4 Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - DIYables ESP32 S3, Uno-form factor: https://diyables.io/esp32-s3-uno * - It is expected to work with other boards */ #include <DIYables_MultiFuncShield.h> unsigned long lastUpdate = 0; float lastPct = -1; void setup() { Serial.begin(9600); MFS.begin(); Serial.println("Rotate potentiometer knob (multi-turn trimmer)."); Serial.println("It requires many turns to go from 0% to 100%."); } void loop() { MFS.loop(); if (millis() - lastUpdate >= 500) { lastUpdate = millis(); int raw = MFS.readPot(); float pct = MFS.readPotPercent(); Serial.print("Raw: "); Serial.print(raw); Serial.print(" Percent: "); Serial.print(pct, 1); Serial.print("%"); if (pct <= 0.1) Serial.print(" ← MIN (rotate clockwise to increase)"); else if (pct >= 99.9) Serial.print(" ← MAX (rotate counter-clockwise to decrease)"); Serial.println(); lastPct = pct; } }

Como Executar

  • Cole o código na Arduino IDE e pressione Upload.
  • Abra o Serial Monitor.
  • Gire o botão do potenciômetro e veja o valor ser atualizado no monitor.

Métodos do Potenciômetro em Resumo

Método Tipo de Retorno O Que Faz
readPot() int Leitura bruta do ADC (0–16383 no ADC de 14 bits do Uno R4)
readPotPercent() float Porcentagem escalada de 0.0 a 100.0

Exemplo do Sensor de Temperatura (LM35)

Leia o sensor LM35 e mostre a temperatura em Celsius no display e no Serial Monitor.

Lembre-se: O jumper J1 deve ser removido do shield antes de usar o sensor LM35, porque o pino A4 é compartilhado com a linha SDA do I2C.

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-multi-function-shield */ /* * Multi-Function Shield - Temperature Example * * Reads the LM35 temperature sensor and shows Celsius on the display. * Note: Requires jumper J1 removed (pin A4). * * Hardware: DIYables Multi-Function Shield * * COMPATIBLE Multi-Function Shield: * - https://diyables.io/products/multi-function-shield-for-arduino-uno-mega * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4 Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - DIYables ESP32 S3, Uno-form factor: https://diyables.io/esp32-s3-uno * - It is expected to work with other boards */ #include <DIYables_MultiFuncShield.h> unsigned long lastUpdate = 0; void setup() { Serial.begin(9600); MFS.begin(); MFS.display.print(0); } void loop() { MFS.loop(); if (millis() - lastUpdate >= 500) { lastUpdate = millis(); float temp = MFS.readTemperature(); MFS.display.print(temp, 1); Serial.print("Temp: "); Serial.print(temp, 1); Serial.println(" C"); } }

Como Executar

  • Retire o jumper J1 do Multi-Function Shield.
  • Cole o código na Arduino IDE e pressione Upload.
  • Abra o Serial Monitor.
  • A temperatura atual aparece no display e é impressa pela Serial.

Os valores de temperatura são suavizados com uma média móvel de 4 amostras. Na primeira leitura, o buffer é preenchido previamente para que você tenha um valor estável imediatamente.

Multi-Function Shield com Arduino Uno R4 - Demonstração Completa

Abaixo está um tutorial em vídeo, passo a passo, que demonstra todos os exemplos do Multi-Function Shield:

Suporte de Plataformas

A biblioteca suporta todas as plataformas Arduino (architectures=*).

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!