// Controlador de Motores DC (y velocidad PWM)
// Conexiones y guía con: https://www.youtube.com/watch?v=63aitq3KTaI&ab_channel=BitwiseAr
// Fundamental para proyectos de robótica y automatización que requiere el control de
// motores de continua y paso a paso. Permite el control de dos motores DC.
// Pines ENA y ENB son los pines que permiten habilitar a los motores.
// Estos dos vienen con un jumper cada uno. Nosotros los controlaremos desde arduino. Entonces se deben quitar esos jumpers y guardarlos.
// IN1 e IN2 permiten establecer el sentido de giro del motor A. IN4 e IN3 igual para el motor B.
// Revisar bien las tablas que detallan el funcionamiento de los pines de control.
// ENA IN1 IN2 controlan el motor A. ENA debe tener un 1 lógico para que el motor ande. Para que no ande 0 lógico.
// Luego, según como sean los valores de IN1 e IN2 el motor girará en uno u otro sentido.
// Cuando se trata de motores, el consumo de corriente suele ser elevado. Por esto, este módulo no debe ser alimentado desde arduino.
// Este módulo requiere una alimentación independiente.
// La tensión de alimentación al módulo debe ser igual a la tensión nominal del motor o ligeramente superior.
// En el video se alimenta un motor que anda bien con tensiones de entre 3 y 6 V.
// Entonces se puede alimentar con baterías de forma de generar 6 V.
// Motores más potentes funcionan con 12 o 24 volts. Variedad de tensiones perfectamente cubierta por este módulo.
// El módulo tiene una salida de 5V para desde el propio módulo alimentar otros dispositivos.
// Regulador de tensión no anda con tensiones mayores a 12V.
// La bornera no tiene una polaridad determinada. Se recomienda usar dos coles de cables para en caso de desconectar el motor
// Al volver a conectarlo, no hacerlo alrevez y que se invierta el giro
// Cuando se trabaja con fuentes independientes hay que poner la gnd de arduino con la gnd del módulo para que no halla
// problema de referencia de masa o tierra. Esto siempre que se tienen fuentes distintas, para tener una correcta referencia en todos los dispositivos conectaodos.
int IN1 = 2;
int IN2 = 3;
int ENA = 5;
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENA, OUTPUT);
}
void loop() {
// Se hace girar el motor hacia un sentido
digitalWrite(ENA, HIGH);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
delay(3000); // Se esperan 3 segundos
digitalWrite(ENA, LOW); // Se apaga el motor
delay(2000); // Se esperan 2 segundos
// Se hace girar el motor en sentido opuesto al previo
digitalWrite(ENA, HIGH);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
delay(3000); // Se esperan 3 segundos
digitalWrite(ENA, LOW); // Se apaga el motor
delay(2000); // Se esperan 2 segundos
}