Paso 9: El código
Disfrutar.
/*
Código de ejemplo para ejecutar el Sparkfun TB6612FNG 1A doble conductor del Motor utilizando Arduino UNO R3Este código realiza algunas maniobras sencillas para ilustrar las funciones:
-motorDrive (motorNumber, motorDirection, motorSpeed)
-motorBrake(motorNumber)
-motorStop(motorNumber)
-motorsStandbyConexiones:
-Pin 3---> PWMA
-Pin 8---> AIN2
-Pin 9---> AIN1
-Pin 10---> STBY
-Pin 11---> BIN1
-Pin 12---> BIN2
-Pin 5---> PWMB-Motor 1: A01 y A02
-Motor 2: B01 y B02*/
Definir los pines
Motor 1
int pinAIN1 = 9; Dirección
int pinAIN2 = 8; Dirección
int pinPWMA = 3; VelocidadMotor 2
int pinBIN1 = 11; Dirección
int pinBIN2 = 12; Dirección
int pinPWMB = 5; VelocidadModo de espera
int pinSTBY = 10;Constantes para ayudar a recordar los parámetros
Static boolean turnCW = 0; para la función motorDrive
Static boolean turnCCW = 1; para la función motorDrive
Static boolean motor1 = 0; para motorDrive motorStop, introduce funciones
Static boolean motor2 = 1; para motorDrive motorStop, introduce funcionesvoid setup()
{
Establecer los modos PIN
pinMode (pinPWMA, salida);
pinMode (pinAIN1, salida);
pinMode (pinAIN2, salida);
pinMode (pinPWMB, salida);
pinMode (pinBIN1, salida);
pinMode (pinBIN2, salida);
pinMode (pinSTBY, salida);
}
void loop()
{
Unidad de ambos motores de CW, máxima velocidad
motorDrive (motor1, turnCW, 255);
motorDrive (motor2, turnCW, 255);
Seguir conduciendo durante 2 segs
Delay(2000);
Girar hacia motor1: parada Motor1, Motor2 lento
motorStop(motor1);
motorDrive (motor2, turnCW, 192);
Girando durante 2 segs
Delay(2000);
Gire en dirección opuesta: pare Motor2, Motor1 lento
motorDrive (motor1, turnCW, 192);
Delay(250);
motorStop(motor2);
Girando durante 2 segs
Delay(2000);
Enderece para arriba
motorDrive (motor2, turnCW, 192);
Delay(500);
Poner motores en modo de espera
motorsStandby();
Delay(1000);
Hacer una vuelta apretada hacia motor1: adelante, reversa de Motor1 Motor2
motorDrive (motor1, turnCCW, 192);
motorDrive (motor2, turnCW, 192);
Girando durante 2 segs
Delay(2000);
Aplique los frenos, luego en modo de espera
motorBrake(motor1);
motorBrake(motor2);
motorsStandby();
Reposar todavía 5 segundos, entonces que hacer todo de nuevo...
Delay(5000);
}
void motorDrive (booleano motorNumber, boolean motorDirection, motorSpeed int)
{
/*
Esto conduce un motor especificado en una dirección específica, a una velocidad especificada:
-motorNumber: motor1 o motor2---> 1 Motor o 2 motores
-motorDirection: turnCW o turnCCW---> en sentido horario o antihorario
-motorSpeed: 0 a 255---> 0 = parada / 255 = rápido
*/
pinIn1 Boolean; Se refiere a AIN1 o BIN1 (dependiendo del número de motor especificado)
Especificar la dirección para girar el motor
Derecha: AIN1/BIN1 = alta y AIN2/BIN2 = baja
Agujas: AIN1/BIN1 = baja y AIN2/BIN2 = alta
Si (motorDirection == turnCW)
pinIn1 = alto;
otra cosa
pinIn1 = bajo;
Seleccione el motor para girar y fijar la dirección y la velocidad
if(motorNumber == motor1)
{
digitalWrite (pinAIN1, pinIn1);
digitalWrite (pinAIN2,! pinIn1); Esto es lo contrario de la AIN1
analogWrite (pinPWMA, motorSpeed);
}
otra cosa
{
digitalWrite (pinBIN1, pinIn1);
digitalWrite (pinBIN2,! pinIn1); Esto es lo contrario de la BIN1
analogWrite (pinPWMB, motorSpeed);
}
Por último, asegúrese de que está desactivada STBY - tire alta
digitalWrite (pinSTBY, HIGH);
}
void motorBrake(boolean motorNumber)
{
/*
Este "Freno corto" s el motor especificado, mediante el establecimiento de velocidad cero
*/
Si (motorNumber == motor1)
analogWrite (pinPWMA, 0);
otra cosa
analogWrite (pinPWMB, 0);
}
void motorStop(boolean motorNumber)
{
/*
Esto detiene el motor especificado estableciendo ambos pasadores IN baja
*/
Si (motorNumber == motor1) {}
digitalWrite (pinAIN1, bajo);
digitalWrite (pinAIN2, bajo);
}
otra cosa
{
digitalWrite (pinBIN1, bajo);
digitalWrite (pinBIN2, bajo);
}
}
void motorsStandby()
{
/*
Esto pone los motores en modo de espera
*/
digitalWrite (pinSTBY, bajo);
}