// Motor A lado derecho
const uint8_t PWM_Derecho = 3; // ENB - Velocidad PWM
const uint8_t motorDerechoAvanza = 5; // IN3 - Motor sentido avanza
const uint8_t motorDerechoRetrocede = 4;// IN4 - Motor sentido retrocede
// Motor B lado izquierdo
const uint8_t PWM_Izquierda = 9;
const uint8_t motorIzquierdoAvanza = 7;
const uint8_t motorIzquierdoRetrocede = 6;
byte velocidad = 200;
// Funciones
void avanzar() {
digitalWrite(motorIzquierdoAvanza, HIGH); // El sentido del motor avanza
digitalWrite(motorIzquierdoRetrocede, LOW); // El sentido del motor retrocede
digitalWrite(motorDerechoAvanza, HIGH);
digitalWrite(motorDerechoRetrocede, LOW);
analogWrite(PWM_Izquierda, velocidad); // Velocidad PWM
analogWrite(PWM_Derecho, velocidad);
}
void retroceder() {
digitalWrite(motorIzquierdoAvanza, LOW);
digitalWrite(motorIzquierdoRetrocede, HIGH);
digitalWrite(motorDerechoAvanza, LOW);
digitalWrite(motorDerechoRetrocede, HIGH);
analogWrite(PWM_Izquierda, velocidad);
analogWrite(PWM_Derecho, velocidad);
}
void girarDerecha() {
digitalWrite(motorIzquierdoAvanza, HIGH);
digitalWrite(motorIzquierdoRetrocede, LOW);
digitalWrite(motorDerechoAvanza, LOW);
digitalWrite(motorDerechoRetrocede, HIGH);
analogWrite(PWM_Izquierda, velocidad);
analogWrite(PWM_Derecho, velocidad);
}
void girarIzquierda() {
digitalWrite(motorIzquierdoAvanza, LOW);
digitalWrite(motorIzquierdoRetrocede, HIGH);
digitalWrite(motorDerechoAvanza, HIGH);
digitalWrite(motorDerechoRetrocede, LOW);
analogWrite(PWM_Izquierda, velocidad);
analogWrite(PWM_Derecho, velocidad);
}
void parar() {
digitalWrite(motorIzquierdoAvanza, LOW);
digitalWrite(motorIzquierdoRetrocede, LOW);
digitalWrite(motorDerechoAvanza, LOW);
digitalWrite(motorDerechoRetrocede, LOW);
analogWrite(PWM_Izquierda, 0);
analogWrite(PWM_Derecho, 0);
}
void setup() {
// Configuramos todos los pines del driver (TB6612FNG) del motor como salida
pinMode(PWM_Izquierda, OUTPUT);
pinMode(motorIzquierdoAvanza, OUTPUT);
pinMode(motorIzquierdoRetrocede, OUTPUT);
pinMode(PWM_Derecho, OUTPUT);
pinMode(motorDerechoAvanza, OUTPUT);
pinMode(motorDerechoRetrocede, OUTPUT);
}
void loop() {
// Llamamos a las funciones de movimiento
parar(); // Para
delay(1000); // Durante 1 segundo
avanzar(); // Avanza
delay(2000); // Durante 2 segundos
retroceder(); // Retocede
delay(2000); // Durante 2 segundos
girarIzquierda(); // Gira a la izquierda
delay(2000); // Durante 2 segundos
girarDerecha(); // Gira a la derecha
delay(2000); // Durante 2 segundos
}
1 - Asignamos los pines. El driver tiene 2 digitales que nos indican el sentido de giro y uno analógico PWM que es la velocidad de 0 a 255.
2 - En este caso declaramos las
3 - Configuramos los pines como salida.
4 - En el