Stap 9: De Code
Geniet van.
/*
Voorbeeldcode voor het uitvoeren van de Sparkfun TB6612FNG 1A Dual Motor Driver met behulp van de Arduino UNO R3Deze code voert enkele eenvoudige manoeuvres om te illustreren de functies:
-Motor (motorNumber, motorDirection, motorSpeed)
-motorBrake(motorNumber)
-motorStop(motorNumber)
-motorsStandbyVerbindingen:
-Pin 3---> PWMA
-Pin 8---> AIN2
-Pin 9---> AIN1
-Pin 10---> STBY
-Pin 11---> BIN1
-Pin 12---> BIN2
-Pin 5---> PWMB-Motor 1: A01 en A02
-Motor 2: B01 en B02*/
Definiëren van de pinnen
Motor 1
int pinAIN1 = 9; Richting
int pinAIN2 = 8; Richting
int pinPWMA = 3; SnelheidMotor 2
int pinBIN1 = 11; Richting
int pinBIN2 = 12; Richting
int pinPWMB = 5; SnelheidStand-by
int pinSTBY = 10;Constanten te helpen herinneren van de parameters
statische Boole turnCW = 0; voor de functie van de motor
statische Boole turnCCW = 1; voor de functie van de motor
statische Boole motor1 = 0; voor motor, motorStop, motorrem functies
statische Booleaanse motor2 = 1; voor motor, motorStop, motorrem functiesVOID Setup
{
Instellen van de PIN-modi
pinMode (pinPWMA, OUTPUT);
pinMode (pinAIN1, OUTPUT);
pinMode (pinAIN2, OUTPUT);
pinMode (pinPWMB, OUTPUT);
pinMode (pinBIN1, OUTPUT);
pinMode (pinBIN2, OUTPUT);
pinMode (pinSTBY, OUTPUT);
}
void loop
{
Beide motoren CW, volle snelheid rijden
Motor (motor1, turnCW, 255);
Motor (motor2, turnCW, 255);
Houden rijden voor 2 seconden
delay(2000);
Draai naar motor1: Stop Motor1, langzame Motor2
motorStop(motor1);
Motor (motor2, turnCW, 192);
Houden draaien voor 2 seconden
delay(2000);
Weer in tegenovergestelde richting: Motor2 stoppen, traag Motor1
Motor (motor1, turnCW, 192);
delay(250);
motorStop(motor2);
Houden draaien voor 2 seconden
delay(2000);
Strek omhoog
Motor (motor2, turnCW, 192);
delay(500);
Motoren in stand-by zetten
motorsStandby();
delay(1000);
Doe een strak beurt naar motor1: Motor2 vooruit, Motor1 reverse
Motor (motor1, turnCCW, 192);
Motor (motor2, turnCW, 192);
Houden draaien voor 2 seconden
delay(2000);
Toepassen van de remmen, dan in de stand-by
motorBrake(motor1);
motorBrake(motor2);
motorsStandby();
Blijf stil staan voor 5 sec, dan we het helemaal opnieuw doen...
delay(5000);
}
VOID motor (boolean motorNumber, boolean motorDirection, int motorSpeed)
{
/*
Dit drijft een opgegeven motor, in een bepaalde richting, met een opgegeven snelheid:
-motorNumber: motor1 of motor2---> Motor 1 of Motor 2
-motorDirection: turnCW of turnCCW---> met de klok mee of tegen de klok
-motorSpeed: 0 tot 255---> 0 = stop / 255 = snel
*/
Booleaanse pinIn1; Betrekking heeft op AIN1 of BIN1 (afhankelijk van de motor nummer opgegeven)
Geef de richting om te schakelen van de motor
Met de klok mee: AIN1/BIN1 = HIGH en AIN2/BIN2 = laag
Linksom: AIN1/BIN1 = laag en AIN2/BIN2 = hoog
Als (motorDirection == turnCW)
pinIn1 = hoog;
anders
pinIn1 = laag;
Selecteer de motor te schakelen, en de richting en de snelheid instellen
if(motorNumber == motor1)
{
digitalWrite (pinAIN1, pinIn1);
digitalWrite (pinAIN2,! pinIn1); Dit is het tegenovergestelde van de AIN1
analogWrite (pinPWMA, motorSpeed);
}
anders
{
digitalWrite (pinBIN1, pinIn1);
digitalWrite (pinBIN2,! pinIn1); Dit is het tegenovergestelde van de BIN1
analogWrite (pinPWMB, motorSpeed);
}
Tot slot, zorg ervoor dat STBY is uitgeschakeld - trekken hoge
digitalWrite (pinSTBY, hoge);
}
VOID motorBrake(boolean motorNumber)
{
/*
Deze "Korte rem" s de opgegeven motor, door de snelheid instellen op nul
*/
Als (motorNumber == motor1)
analogWrite (pinPWMA, 0);
anders
analogWrite (pinPWMB, 0);
}
VOID motorStop(boolean motorNumber)
{
/*
Hiermee stopt u de opgegeven motor door beide pins IN te stellen op laag
*/
Als (motorNumber == motor1) {}
digitalWrite (pinAIN1, laag);
digitalWrite (pinAIN2, laag);
}
anders
{
digitalWrite (pinBIN1, laag);
digitalWrite (pinBIN2, laag);
}
}
VOID motorsStandby()
{
/*
Dit zet de motoren in de standby-modus
*/
digitalWrite (pinSTBY, laag);
}