First program for 4WD Arduino Robot Kit
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Motor A pins (enableA = enable motor, pinA1 = forward, pinA2 = backward) | |
int enableA = 11; | |
int pinA1 = 6; | |
int pinA2 = 5; | |
//Motor B pins (enabledB = enable motor, pinB2 = forward, pinB2 = backward) | |
int enableB = 10; | |
int pinB1 = 4; | |
int pinB2 = 3; | |
//This lets you run the loop a single time for testing | |
boolean run = true; | |
void setup() { | |
pinMode(enableA, OUTPUT); | |
pinMode(pinA1, OUTPUT); | |
pinMode(pinA2, OUTPUT); | |
pinMode(enableB, OUTPUT); | |
pinMode(pinB1, OUTPUT); | |
pinMode(pinB2, OUTPUT); | |
} | |
void loop() { | |
if (run) { | |
delay(2000); | |
enableMotors(); | |
//Go forward | |
forward(200); | |
//Go backward | |
backward(200); | |
//Turn left | |
turnLeft(400); | |
coast(200); | |
//Turn right | |
turnRight(400); | |
coast(200); | |
//This stops the loop | |
run = false; | |
} | |
} | |
//Define high-level H-bridge commands | |
void enableMotors() | |
{ | |
motorAOn(); | |
motorBOn(); | |
} | |
void disableMotors() | |
{ | |
motorAOff(); | |
motorBOff(); | |
} | |
void forward(int time) | |
{ | |
motorAForward(); | |
motorBForward(); | |
delay(time); | |
} | |
void backward(int time) | |
{ | |
motorABackward(); | |
motorBBackward(); | |
delay(time); | |
} | |
void turnLeft(int time) | |
{ | |
motorABackward(); | |
motorBForward(); | |
delay(time); | |
} | |
void turnRight(int time) | |
{ | |
motorAForward(); | |
motorBBackward(); | |
delay(time); | |
} | |
void coast(int time) | |
{ | |
motorACoast(); | |
motorBCoast(); | |
delay(time); | |
} | |
void brake(int time) | |
{ | |
motorABrake(); | |
motorBBrake(); | |
delay(time); | |
} | |
//Define low-level H-bridge commands | |
//enable motors | |
void motorAOn() | |
{ | |
digitalWrite(enableA, HIGH); | |
} | |
void motorBOn() | |
{ | |
digitalWrite(enableB, HIGH); | |
} | |
//disable motors | |
void motorAOff() | |
{ | |
digitalWrite(enableB, LOW); | |
} | |
void motorBOff() | |
{ | |
digitalWrite(enableA, LOW); | |
} | |
//motor A controls | |
void motorAForward() | |
{ | |
digitalWrite(pinA1, HIGH); | |
digitalWrite(pinA2, LOW); | |
} | |
void motorABackward() | |
{ | |
digitalWrite(pinA1, LOW); | |
digitalWrite(pinA2, HIGH); | |
} | |
//motor B controls | |
void motorBForward() | |
{ | |
digitalWrite(pinB1, HIGH); | |
digitalWrite(pinB2, LOW); | |
} | |
void motorBBackward() | |
{ | |
digitalWrite(pinB1, LOW); | |
digitalWrite(pinB2, HIGH); | |
} | |
//coasting and braking | |
void motorACoast() | |
{ | |
digitalWrite(pinA1, LOW); | |
digitalWrite(pinA2, LOW); | |
} | |
void motorABrake() | |
{ | |
digitalWrite(pinA1, HIGH); | |
digitalWrite(pinA2, HIGH); | |
} | |
void motorBCoast() | |
{ | |
digitalWrite(pinB1, LOW); | |
digitalWrite(pinB2, LOW); | |
} | |
void motorBBrake() | |
{ | |
digitalWrite(pinB1, HIGH); | |
digitalWrite(pinB2, HIGH); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment