Arduino UNO R4 - DC Motor Sield
O Arduino Uno R4 - disponível nas versões Minima e WiFi - traz mais poder de processamento, mais memória e um ADC de 14 bits, mantendo o layout clássico de conectores do Uno. Isso significa que o Motor Shield Rev3 encaixa direto no Uno R4 sem nenhuma ligação extra.
Neste guia você vai:
- Encaixar o Motor Shield Rev3 em uma placa Arduino Uno R4.
- Ligar um motor DC e um pack de baterias externo.
- Escrever um código que gira o motor para frente e para trás.
- Ajustar a velocidade do motor com valores PWM (0-255).
- Aplicar e soltar o freio eletrônico.
- Monitorar a corrente consumida pelo motor por meio do pino de medição analógico.
- Operar dois motores ao mesmo tempo usando o Canal A e o Canal B.

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V4 IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables STEM V4B IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Visão Geral do Motor Shield Rev3
No coração do Motor Shield Rev3 está o driver de dupla ponte completa L298P. Esse chip dá a você controle independente de dois motores DC - cada um com sua própria linha de sentido, linha de velocidade PWM, linha de freio e entrada analógica de medição de corrente.
Veja o que cada linha de controle faz:
- Sentido - uma saída digital que define o sentido de giro. Escrever HIGH gira para um lado; LOW gira para o outro.
- PWM - uma saída analógica (PWM) que define o ciclo de trabalho. Os valores vão de 0 (parado) a 255 (velocidade máxima).
- Freio - uma saída digital. Colocá-la em HIGH trava o eixo do motor; colocá-la em LOW deixa o motor girar livremente.
- Medição de Corrente - uma entrada analógica que informa quanta corrente o motor está consumindo.
Como o Uno R4 usa exatamente as mesmas posições de conectores do Uno R3 original, todos os pinos se alinham automaticamente:
| Função | Canal A | Canal B |
|---|---|---|
| Sentido | D12 | D13 |
| PWM (Velocidade) | D3 | D11 |
| Freio | D9 | D8 |
| Medição de Corrente | A0 | A1 |
Alimentando os Motores
Os motores precisam de mais corrente do que o USB pode fornecer. Conecte uma fonte externa de 6-12 V (como duas células de lítio 18650 em série) aos bornes de parafuso de alimentação do shield. O próprio Arduino pode continuar funcionando pelo USB.
Diagrama de Ligação
Encaixe o Motor Shield Rev3 nos conectores do Uno R4, garantindo que todos os pinos estejam bem encaixados.
Conecte os fios do motor DC aos bornes de parafuso do Canal A - os nomes dos canais estão impressos na placa.
Ligue o pack de baterias externo aos bornes de parafuso de alimentação.

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
- Conecte o Arduino Uno R4 ao seu computador usando um cabo USB Type-C.
- Na Arduino IDE, verifique se a placa correta (Arduino Uno R4 Minima ou WiFi) e a porta serial estão selecionadas.
- Clique no ícone Libraries na barra lateral esquerda.
- Digite "DIYables_DC_Motor" na caixa de busca e localize a biblioteca publicada pela DIYables.
- Clique em Install para adicionar a biblioteca à sua IDE.

Nenhuma dependência adicional é necessária - a biblioteca é totalmente independente.
Estrutura Mínima do Sketch
Todos os sketches de controle de motor compartilham este esqueleto:
motor.begin() configura os pinos de sentido, PWM e freio. Chamar motor.run() define o sentido, solta o freio e aplica a velocidade solicitada. motor.brake() aciona o freio e corta o PWM para zero.
Um Motor no Canal A
Faça um motor funcionar no Canal A, alternando entre frente e trás a cada dois segundos, com uma parada completa entre eles.
Como Executar
- Encaixe o shield no Uno R4 e conecte o motor ao Canal A.
- Conecte o pack de baterias aos bornes de alimentação.
- Conecte o cabo USB Type-C.
- Cole o código na Arduino IDE, escolha a placa e a porta corretas e clique em Upload.
- Abra o Serial Monitor para acompanhar as mudanças de sentido.
O motor alterna entre frente e trás na velocidade 30, fazendo uma pausa de 2 segundos a cada mudança de sentido.
Referência Rápida dos Métodos
| Método | O Que Faz | Uso |
|---|---|---|
| run(dir, speed) | Gira o motor no sentido dado, na velocidade dada | motor.run(MOTOR_FORWARD, 100) |
| setSpeed(speed) | Muda a velocidade sem mexer no sentido nem no freio | motor.setSpeed(200) |
| setDirection(dir) | Muda o sentido sem mexer na velocidade nem no freio | motor.setDirection(MOTOR_BACKWARD) |
| brake() | Aciona o freio e leva a velocidade a zero | motor.brake() |
| release() | Solta o freio | motor.release() |
| readCurrent() | Retorna o valor bruto do ADC do pino de medição de corrente | motor.readCurrent() |
Um Motor no Canal B
Comportamento idêntico, mas no Canal B - basta trocar a constante do canal.
Como Executar
- Ligue o motor aos bornes de parafuso do Canal B.
- Faça o upload do sketch e abra o Serial Monitor.
Tudo funciona da mesma forma; só os pinos usados por baixo mudam.
Dois Motores - Ambos os Canais
Acione dois motores de forma independente: mesmo sentido, sentidos opostos e frenagem sincronizada.
Como Executar
- Conecte um motor ao Canal A e outro ao Canal B.
- Faça o upload e abra o Serial Monitor.
O sketch percorre três padrões: os dois para frente, os dois para trás e os motores girando em sentidos opostos.
Lendo a Corrente do Motor
Monitore o consumo de corrente de um motor em tempo real.
Como Executar
- Ligue um motor ao Canal A.
- Faça o upload do sketch e abra o Serial Monitor.
- O valor bruto do ADC é atualizado a cada 500 ms.
Sobre a Medição de Corrente
Os pinos analógicos A0 e A1 carregam uma tensão proporcional à corrente do motor no Canal A e no Canal B, respectivamente. readCurrent() retorna a leitura bruta do ADC - no Uno R4 esse é um valor de 14 bits (0-16383), graças ao ADC do Renesas RA4M1. Converta para miliamperes usando o fator de sensibilidade documentado do shield.
Atribuição Personalizada de Pinos
Se você precisa substituir o mapeamento de pinos padrão - por exemplo, ao usar uma placa de driver de motor de terceiros - passe os pinos diretamente ao construtor.
Como Executar
- Atualize os números dos pinos no construtor para corresponder ao seu hardware.
- Faça o upload e verifique o funcionamento do motor.
Solução de Problemas
- O motor fica parado - Confirme que os fios do motor estão firmes nos bornes de parafuso e que o canal corresponde ao do código (MOTOR_CH_A vs. MOTOR_CH_B).
- Sem torque - Aumente o valor da velocidade. Valores de PWM muito baixos podem não vencer a inércia do motor.
- Fonte externa sem energia - Recarregue ou troque as baterias. Verifique se a polaridade está correta nos bornes de alimentação.
- O sentido parece errado - Troque os dois fios do motor no borne de parafuso, ou inverta a constante de sentido no software.
- A leitura de corrente é sempre zero - Certifique-se de que você usou o construtor com canal ou o construtor de 4 pinos que inclui o pino de medição de corrente.
Arduino Uno R4 DC Motor Shield - Demonstração Completa
O vídeo abaixo é um tutorial passo a passo que demonstra todos os exemplos do DC Motor Shield:
Suporte de Plataformas
A biblioteca depende exclusivamente das APIs padrão do Arduino (pinMode, digitalWrite, analogWrite, analogRead) e funciona em todas as plataformas compatíveis com Arduino.