// 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.
/* Programa que utiliza el modulo controlador de motor L298N para hacer girar dos
motores hacia adelante y asi verificar la correcta conexion.*/
int IN1 = 2; // IN1 a pin digital 2
int IN2 = 3; // IN2 a pin digital 3
int ENA = 5; // ENA a pin digital 5
int IN3 = 7; // IN3 a pin digital 7
int IN4 = 8; // IN4 a pin digital 8
int ENB = 9; // ENA a pin digital 9
void setup(){
pinMode(IN1, OUTPUT); // IN1 como salida
pinMode(IN2, OUTPUT); // IN2 como salida
pinMode(ENA, OUTPUT); // ENA como salida
pinMode(IN3, OUTPUT); // IN3 como salida
pinMode(IN4, OUTPUT); // IN4 como salida
pinMode(ENB, OUTPUT); // ENB como salida
}
void loop(){
digitalWrite(ENA, HIGH); // ENA en alto habilita motor A
digitalWrite(IN1, LOW); // IN1 en cero logico
digitalWrite(IN2, HIGH); // IN2 en uno logico
digitalWrite(ENB, HIGH); // ENB en alto habilita motor B
digitalWrite(IN3, LOW); // IN3 en cero logico
digitalWrite(IN4, HIGH); // IN4 en uno logico
delay(3000); // demora de 3 seg.
digitalWrite(ENA, LOW); // ENA en bajo deshabilita motor A
digitalWrite(ENB, LOW); // ENB en bajo deshabilita motor B
delay(2000); // demora de 2 seg.
}