Controlando Motores DC e Servo Motores com Arduino
O Arduino é uma plataforma de prototipagem eletrônica muito popular entre os entusiastas de robótica e automação. Ele permite controlar vários tipos de componentes eletrônicos, incluindo motores DC e servo motores. Neste artigo, mostraremos como controlar esses tipos de motores com o Arduino, fornecendo exemplos simples para ajudar os alunos iniciantes e leigos a compreender o processo.
Começaremos com motores DC. Um motor DC (corrente contínua) é um tipo de motor que funciona com uma corrente elétrica contínua. Eles são comumente usados em projetos de robótica e automação devido à sua simplicidade e facilidade de controle. Para controlar um motor DC com o Arduino, é necessário usar um driver de motor, como o L298N. Ele permite controlar a velocidade e direção do motor.
Biblioteca utilizada no exemplo:
O código abaixo mostra como controlar um motor DC com o Arduino usando a ponte H L298N:
/*
Author : Andrea Lombardo
Site : https://www.lombardoandrea.com
Source : https://github.com/AndreaLombardo/L298N/
Here you can see how to work in a common configuration without the needed of Enable pin.
Make sure your module has a jumper in place.
When L298N has a jumper instead of Enable pin, the speed is always 255.
Wiring schema in file "L298N - Schema_without_EN_pin.png"
*/
// Include the library
#include <L298N.h>
// Pin definition
const unsigned int IN1 = 7;
const unsigned int IN2 = 8;
// Create one motor instance
L298N motor(IN1, IN2);
void setup()
{
// Used to display information
Serial.begin(9600);
// Wait for Serial Monitor to be opened
while (!Serial)
{
//do nothing
}
}
void loop()
{
// Tell the motor to go forward (may depend by your wiring)
motor.forward();
// Alternative method:
// motor.run(L298N::FORWARD);
//print the motor status in the serial monitor
Serial.print("Is moving = ");
Serial.println(motor.isMoving());
delay(3000);
// Stop
motor.stop();
// Alternative method:
// motor.run(L298N::STOP);
Serial.print("Is moving = ");
Serial.println(motor.isMoving());
delay(3000);
// Tell the motor to go back (may depend by your wiring)
motor.backward();
// Alternative method:
// motor.run(L298N::BACKWARD);
Serial.print("Is moving = ");
Serial.println(motor.isMoving());
delay(3000);
// Stop
motor.stop();
Serial.print("Is moving = ");
Serial.println(motor.isMoving());
delay(3000);
}

Agora, vamos aplicar os conceitos já aprendidos na aula de comunicação serial (https://youtu.be/3Xv14Ru-N34) e aprender um conceito novo, o switch case. Veja abaixo um exemplo com uso da mesma biblioteca L298N.h:
#include <L298N.h>
const unsigned int IN1 = 7;
const unsigned int IN2 = 8;
L298N motor(IN1, IN2); //define a ponte H L298N com os pinos de controle
void setup() {
//inicializa a comunicação serial com o monitor serial
Serial.begin(9600);
Serial.println("Programa iniciado");
}
void loop() {
if(Serial.available() > 0){
char comando = Serial.read();
switch(comando){
case 'f': //gira para frente
motor.forward();
Serial.println("Motor gira para frente");
break;
case 'b': //gira para trás
motor.backward();
Serial.println("Motor gira para trás");
break;
case 's': //para o motor
motor.stop();
Serial.println("Motor parado");
break;
default: //caso não tenha nenhum comando válido
Serial.println("Comando inválido");
break;
}
}
}
Em seguida, vamos falar sobre servo motores. Um servo motor é um tipo de motor que permite controlar a posição precisa de uma carga. Eles são comumente usados em projetos de robótica para controlar braços robóticos, rodas e outros componentes mecânicos. Para controlar um servo motor com o Arduino, é necessário usar a biblioteca Servo.h. Ela permite controlar a posição do servo através do método write().
O código abaixo mostra como controlar um servo motor conectado ao pino 9 do Arduino. Ele faz com que o servo gire para a posição 0 graus, aguarde 1 segundo, gire para a posição 180 graus e aguarde outro segundo.
#include <Servo.h> //importa a biblioteca Servo
Servo meuServo; //declara o objeto servo
void setup() {
meuServo.attach(9); //define o pino do servo como 9
}
void loop() {
meuServo.write(0); //gira para a posição 0 graus
delay(1000); //aguarda 1 segundo
meuServo.write(180); //gira para a posição 180 graus
delay(1000); //aguarda 1 segundo
}
Lembre-se de adicionar a biblioteca Servo antes de carregar o código no Arduino. Para fazer isso, vá em Sketch -> Incluir Biblioteca -> Servo.
É importante lembrar que esses são exemplos simples e que existem muitas outras formas de controlar motores DC e servo motores com o Arduino. É recomendado que os alunos iniciantes experimentem com diferentes códigos e conectores para entender melhor como esses componentes funcionam e como eles podem ser utilizados em seus projetos futuros. Além disso, é importante sempre tomar precauções de segurança ao lidar com componentes elétricos, como desligar a fonte de alimentação antes de fazer qualquer conexão ou manutenção. Ao seguir essas dicas e praticar com os exemplos apresentados, os alunos iniciantes estarão preparados para controlar motores DC e servo motores com o Arduino de forma eficiente e segura.