const int pinENA = 3;// Salida PWM hacia el puente H (speed)
const int pinIN1 = 5;// Salida IN1 hacia el puente H
const int pinIN2 = 6;// Salida IN2 hacia el puente H
const byte Control_1 = 8;
const byte Control_2 = 12;
const int potPin = 0;
byte speed;
int MotorA_in1;
int MotorA_in2;
int valor = 0;
void setup()
{
pinMode(Control_1, INPUT);
pinMode(Control_2, INPUT);
pinMode(pinIN1, OUTPUT);
pinMode(pinIN2, OUTPUT);
pinMode(pinENA, OUTPUT);
}
void loop(){
valor = analogRead(potPin); // Lee valor del potenciómetro
speed = map(valor, 0, 1023, 0, 255);// Mapeo de 10bits a 8bits
MotorA_in1 = digitalRead(Control_1);
MotorA_in2 = digitalRead(Control_2);
//Para controlar el motor, debemos activar correctamente las
//salidas digitales conectadas a los pines IN1 y IN2 del puente H
//(salida A del L298N))
// AVANZA A VELOCIDAD speed
if(MotorA_in1 == HIGH && MotorA_in2 == LOW)
{
digitalWrite(pinIN1, HIGH);
digitalWrite(pinIN2, LOW);
analogWrite(pinENA, speed);
}
// RETROCEDE A VELOCIDAD speed
if(MotorA_in1 == LOW && MotorA_in2 == HIGH)
{
digitalWrite(pinIN1, LOW);
digitalWrite(pinIN2, HIGH);
analogWrite(pinENA, speed);
}
// SE DETIENE
if(MotorA_in1 == LOW && MotorA_in2 == LOW)
{
digitalWrite(pinIN1, LOW);
digitalWrite(pinIN2, LOW);
analogWrite(pinENA, 0);
}
// SE DETIENE SI AMBOS CONTROLES ESTÁN EN HIGH
if(MotorA_in1 == HIGH && MotorA_in2 == HIGH)
{
digitalWrite(pinIN1, LOW);
digitalWrite(pinIN2, LOW);
analogWrite(pinENA, 0);
}
}