Étape 9: Le Code
Profitez.
/*
Exemple de Code pour exécuter le Sparkfun TB6612FNG 1 a double pilote moteur avec Arduino UNO R3Ce code effectue quelques manoeuvres simples pour illustrer les fonctions :
-motorDrive (motorNumber, motorDirection, motorSpeed)
-motorBrake(motorNumber)
-motorStop(motorNumber)
-motorsStandbyConnexions :
-Broche 3---> PW101
-Broche 8---> AIN2
-Broche 9---> AIN1
-Broche 10---> STBY
-Broche 11---> BIN1
-Axe 12---> BIN2
-Broche 5---> PWMB-Moteur 1: A01 et A02
-Moteur 2: B01 et B02*/
Définir les broches
Moteur 1
int pinAIN1 = 9 ; Direction
int pinAIN2 = 8 ; Direction
int pinPWMA = 3 ; VitesseMoteur 2
int pinBIN1 = 11 ; Direction
int pinBIN2 = 12 ; Direction
int pinPWMB = 5 ; VitesseMise en veille
int pinSTBY = 10 ;Constantes pour aider à mémoriser les paramètres
public static boolean turnCW = 0 ; pour la fonction motorDrive
public static boolean turnCCW = 1 ; pour la fonction motorDrive
public static boolean motor1 = 0 ; pour motorDrive, motorStop, fonctions de frein moteur
public static boolean motor2 = 1 ; pour motorDrive, motorStop, fonctions de frein moteurvoid setup()
{
Définir les Modes PIN
pinMode (pinPWMA, sortie) ;
pinMode (pinAIN1, sortie) ;
pinMode (pinAIN2, sortie) ;
pinMode (pinPWMB, sortie) ;
pinMode (pinBIN1, sortie) ;
pinMode (pinBIN2, sortie) ;
pinMode (pinSTBY, sortie) ;
}
void loop()
{
Conduire les deux moteurs CW, pleine vitesse
motorDrive (motor1, turnCW, 255) ;
motorDrive (motor2, turnCW, 255) ;
Continuer à rouler pendant 2 sec
Delay(2000) ;
Tourner vers motor1 : arrêt Motor1, la Motor2 lente
motorStop(motor1) ;
motorDrive (motor2, turnCW, 192) ;
Tourner pendant 2 sec
Delay(2000) ;
Tourner dans le sens contraire : Motor2 Stop, Motor1 lent
motorDrive (motor1, turnCW, 192) ;
Delay(250) ;
motorStop(motor2) ;
Tourner pendant 2 sec
Delay(2000) ;
Redressez-vous
motorDrive (motor2, turnCW, 192) ;
Delay(500) ;
Mettre le moteur en veille
motorsStandby() ;
Delay(1000) ;
Faire un virage serré vers motor1 : Motor2 de la Motor1 vers l’avant, marche arrière
motorDrive (motor1, turnCCW, 192) ;
motorDrive (motor2, turnCW, 192) ;
Tourner pendant 2 sec
Delay(2000) ;
Appliquez les freins, puis en mode veille
motorBrake(motor1) ;
motorBrake(motor2) ;
motorsStandby() ;
Se tenir immobile pendant 5 secondes, puis nous le referais partout...
Delay(5000) ;
}
void motorDrive (boolean motorNumber, boolean motorDirection, int motorSpeed)
{
/*
Cela actionne un moteur spécifié, dans une direction précise, à une vitesse spécifiée :
-motorNumber : motor1 ou motor2---> moteur 1 ou 2 moteurs
-motorDirection : turnCW ou turnCCW---> dans le sens horaire ou antihoraire
-motorSpeed : de 0 à 255---> 0 = arrêt / 255 = rapide
*/
Boolean pinIn1 ; Se rapporte à AIN1 ou BIN1 (selon le numéro du moteur indiqué)
Spécifiez la Direction pour tourner le moteur
Dans le sens horaire : AIN1/BIN1 = haute et AIN2/BIN2 = faible
Aiguilles d’une montre : AIN1/BIN1 = LOW et AIN2/BIN2 = haute
Si (motorDirection == turnCW)
pinIn1 = élevé ;
d’autre
pinIn1 = bas ;
Sélectionnez le moteur tourne et régler la direction et la vitesse
if(motorNumber == motor1)
{
digitalWrite (pinAIN1, pinIn1) ;
digitalWrite (pinAIN2,! pinIn1) ; Il s’agit de l’opposé de la AIN1
analogWrite (pinPWMA, motorSpeed) ;
}
d’autre
{
digitalWrite (pinBIN1, pinIn1) ;
digitalWrite (pinBIN2,! pinIn1) ; Il s’agit de l’opposé de la BIN1
analogWrite (pinPWMB, motorSpeed) ;
}
Enfin, assurez-vous que STBY est désactivé - tirez-le haute
digitalWrite (pinSTBY, HIGH) ;
}
Sub motorBrake(boolean motorNumber)
{
/*
Ce « Frein » s le moteur spécifié, en définissant la vitesse à zéro
*/
Si (motorNumber == motor1)
analogWrite (pinPWMA, 0) ;
d’autre
analogWrite (pinPWMB, 0) ;
}
Sub motorStop(boolean motorNumber)
{
/*
Cela arrête le moteur spécifié en affectant les deux broches IN LOW
*/
Si (motorNumber == motor1) {}
digitalWrite (pinAIN1, basse) ;
digitalWrite (pinAIN2, basse) ;
}
d’autre
{
digitalWrite (pinBIN1, basse) ;
digitalWrite (pinBIN2, basse) ;
}
}
Sub motorsStandby()
{
/*
Cela met les moteurs en Mode veille
*/
digitalWrite (pinSTBY, basse) ;
}