Controle um motor DC de verdade: ligue para frente, inverta o sentido, pare e ajuste a velocidade girando um potenciômetro. Com o Motor Shield L293D encaixado no Arduino, você tem a base de carrinhos robôs, esteiras, ventiladores e qualquer projeto com movimento.

O Arduino sozinho não consegue alimentar um motor diretamente — seus pinos fornecem pouca corrente, e o motor exigiria mais do que ele aguenta, podendo danificar a placa. É aí que entra o Motor Shield L293D: ele é uma placa que encaixa por cima do Arduino e contém dois chips L293D, que funcionam como "ponte H". Esses chips recebem o sinal fraco do Arduino e usam uma fonte externa para entregar a corrente que o motor precisa, além de permitir inverter o sentido de rotação. O shield controla até 4 motores DC (ou 2 motores de passo) e 2 servos. Neste projeto, usamos um motor, três botões para comandar (frente, ré e parar) e um potenciômetro para regular a velocidade.
Todos os componentes disponíveis na A2 Robotics — clique em cada item para comprar
Arduino Uno R3
1 unidade
Motor Shield L293D
1 unidade
Motor DC
1 unidade
Potenciômetro 10KΩ
1 unidade
Chave táctil (push-button)
3 unidades
Protoboard
1 unidade
Jumpers (cabos de ligação)
1 kit
Este projeto usa a biblioteca AFMotor (Adafruit Motor Shield). Na IDE do Arduino, vá em Ferramentas → Gerenciar Bibliotecas, procure por "Adafruit Motor Shield library" (a versão para o shield V1, que é o L293D) e instale. Sem ela o código não compila.
O código lê os três botões e o potenciômetro. O botão de frente gira o motor num sentido, o de ré no sentido oposto, e o de parar desliga. O potenciômetro, lido no pino A0, define a velocidade (de 0 a 255). O motor fica conectado ao terminal M1 do shield.
// Controle de motor DC com Motor Shield L293D — A2 Robotics #include <AFMotor.h> // Motor conectado ao terminal M1 do shield AF_DCMotor motor(1); // Pinos dos botões #define BTN_FRENTE 2 #define BTN_RE 3 #define BTN_PARAR 5 #define POT A0 void setup() { pinMode(BTN_FRENTE, INPUT_PULLUP); pinMode(BTN_RE, INPUT_PULLUP); pinMode(BTN_PARAR, INPUT_PULLUP); motor.setSpeed(150); // velocidade inicial motor.run(RELEASE); // começa parado } void loop() { // Lê o potenciômetro e converte para velocidade (0 a 255) int velocidade = map(analogRead(POT), 0, 1023, 0, 255); motor.setSpeed(velocidade); // Botões (com INPUT_PULLUP, LOW = pressionado) if (digitalRead(BTN_FRENTE) == LOW) { motor.run(FORWARD); } else if (digitalRead(BTN_RE) == LOW) { motor.run(BACKWARD); } else if (digitalRead(BTN_PARAR) == LOW) { motor.run(RELEASE); } delay(50); }
O Motor Shield L293D encaixa diretamente por cima do Arduino Uno, alinhando os pinos. Pressione com firmeza até assentar.
Ligue os dois fios do motor DC no terminal M1 do shield (o bornezinho verde com parafusos).
Conecte uma fonte de 4-6V (ex: 4 pilhas AA) no borne de alimentação do shield. Isso é o que dá força ao motor.
Os três botões nos pinos D2, D3 e D5 (o outro lado no GND). O potenciômetro: as pontas em 5V e GND, e o meio no A0.
Instale a AFMotor, carregue o código e teste: aperte frente, ré e parar, e gire o potenciômetro para mudar a velocidade.
Com um motor funcionando, o próximo passo natural é montar um carrinho robô: use dois motores DC (nos terminais M1 e M2), acople-os a um chassi com rodas, e você terá um veículo controlável. Dá para adicionar um sensor ultrassônico para desviar de obstáculos, controle por Bluetooth pelo celular, ou seguir uma linha no chão. O Motor Shield também controla motores de passo e servos, abrindo caminho para braços robóticos e impressoras CNC caseiras.