Tengo un problema con este driver supongo que es por el código, si logro mover los motores como yo quiero pero con muy poca fuerza y no se porque será.
Espero que me puedan ayudar.
Este es el código que estoy usando:
#define TxD 1 //definir pin TxD
#define RxD 0 //definir pin RxD
//enable
int STBY = 26; //standby
//Motores derechos
int PWM1 = 2; //velocidad motor 1, ruedas derechas
int IN11 = 22; //Dirección
int IN21 = 23; //Dirección
//Motores izquierdos
int PWM2 = 3; //velocidad motor 2, ruedas izquierdas
int IN12 = 27; //Dirección
int IN22 = 30; //Dirección
//otros
int dato = 0; // Asignación de variable, letra leía por el bluetooth
int luz = 31;
void setup() {
Serial.begin(9600);
pinMode(STBY, OUTPUT);
pinMode(PWM1, OUTPUT);
pinMode(IN11, OUTPUT);
pinMode(IN21, OUTPUT);
pinMode(PWM2, OUTPUT);
pinMode(IN12, OUTPUT);
pinMode(IN22, OUTPUT);
pinMode(luz, OUTPUT);
}
//****************************************************************ciclo principal*********************************************************************
void loop() {
//////////////configuración del acelerómetro/////////////////////
if (Serial.available() > 0) {
dato = Serial.read();
////////////fin de la configuracion del acelerometro/////////////
}
if (dato == 'a') //al recibir la letra "a" ejecute lo siguiente, carro hacia delante
{
Serial.println("a");
adelante(); //llama al ciclo secundario
}
if (dato == 'k') //al recibir la letra "a" ejecute lo siguiente, carro hacia atras
{
atras(); //llama al ciclo secundario
}
if (dato == 'b') //al recibir la letra "b" ejecute lo siguiente, el carro va a la derecha
{
Serial.println("b");
derecha(); //llama al ciclo secundario
}
if (dato == 'c') //al recibir la letra "c" ejecute lo siguiente, el carro va a la izquierda
{
izquierda(); //llama al ciclo secundario
}
if (dato == 'g') //al recibir la letra "g" ejecute lo siguiente, el carro se detiene
{
detenerse(); //llama al ciclo secundario
}
if (dato == 'd') //al recibir la letra "d" ejecute lo siguiente, enciende las luces del carro
{
digitalWrite(luz, HIGH);
}
if (dato == 'h') //al recibir la letra "h" ejecute lo siguiente, apaga las luces del carro
{
digitalWrite(luz, LOW);
}
}
//*****************************************************Funciones*************************************************************************
void adelante()
{
digitalWrite(STBY, HIGH);
analogWrite(PWM1, 255);
analogWrite(PWM2, 255);
digitalWrite(IN11, HIGH);
digitalWrite(IN21, LOW);
digitalWrite(IN12, LOW);
digitalWrite(IN22, HIGH);
}
void atras()
{
digitalWrite(STBY, HIGH);
analogWrite(PWM1, 255);
analogWrite(PWM2, 255);
digitalWrite(IN11, LOW);
digitalWrite(IN21, HIGH);
digitalWrite(IN12, HIGH);
digitalWrite(IN22, LOW);
}
void derecha()
{
digitalWrite(STBY, HIGH);
analogWrite(PWM1, 255);
analogWrite(PWM2, 255);
digitalWrite(IN11, LOW);
digitalWrite(IN21, HIGH);
digitalWrite(IN12, LOW);
digitalWrite(IN22, HIGH);
}
void izquierda()
{
digitalWrite(STBY, HIGH);
analogWrite(PWM1, 255);
analogWrite(PWM2, 255);
digitalWrite(IN11, HIGH);
digitalWrite(IN21, LOW);
digitalWrite(IN12, HIGH);
digitalWrite(IN22, LOW);
}
void detenerse()
{
digitalWrite(STBY, LOW);
}