Moving Backward, Rotating, and Pivoting
All it takes to get other motions out of your BOE Shield-Bot are different combinations of us parameters in your servoLeft and servoRight writeMicroseconds calls. For example, these two calls will make your BOE Shield-Bot go backwards:
// Full speed backwards servoLeft.writeMicroseconds(1300); // Left wheel clockwise servoRight.writeMicroseconds(1700); // Right wheel counterclockwise
These two calls will make your BOE Shield-Bot rotate in place to make a left turn:
// Turn left in place servoLeft.writeMicroseconds(1300); // Left wheel clockwise servoRight.writeMicroseconds(1300); // Right wheel clockwise
These two calls will make your BOE Shield-Bot rotate in place for a right turn:
// Turn right in place servoLeft.writeMicroseconds(1700); // Left wheel counterclockwise servoRight.write Microseconds(1700); // Right wheel counterclockwise
Let’s combine all these commands into a single sketch that makes the BOE Shield-Bot move forward, turn left, turn right, then move backward.
Example Sketch: ForwardLeftRightBackward
- Enter, save, and upload ForwardLeftRightBackward.
- Verify that the BOE Shield-Bot makes the forward-left-right-backward motions.
// Robotics with the BOE Shield - ForwardLeftRightBackward
// Move forward, left, right, then backward for testing and tuning.
#include <Servo.h> // Include servo library
Servo servoLeft; // Declare left and right servos
Servo servoRight;
void setup() // Built-in initialization block
{
tone(4, 3000, 1000); // Play tone for 1 second
delay(1000); // Delay to finish tone
servoLeft.attach(13); // Attach left signal to pin 13
servoRight.attach(12); // Attach right signal to pin 12
// Full speed forward
servoLeft.writeMicroseconds(1700); // Left wheel counterclockwise
servoRight.writeMicroseconds(1300); // Right wheel clockwise
delay(2000); // ...for 2 seconds
// Turn left in place
servoLeft.writeMicroseconds(1300); // Left wheel clockwise
servoRight.writeMicroseconds(1300); // Right wheel clockwise
delay(600); // ...for 0.6 seconds
// Turn right in place
servoLeft.writeMicroseconds(1700); // Left wheel counterclockwise
servoRight.writeMicroseconds(1700); // Right wheel counterclockwise
delay(600); // ...for 0.6 seconds
// Full speed backward
servoLeft.writeMicroseconds(1300); // Left wheel clockwise
servoRight.writeMicroseconds(1700); // Right wheel counterclockwise
delay(2000); // ...for 2 seconds
servoLeft.detach(); // Stop sending servo signals
servoRight.detach();
}
void loop() // Main loop auto-repeats
{ // Empty, nothing needs repeating
}
TIP — To enter this sketch quickly, use the Arduino software’s Edit menu tools (Copy and Paste) to make four copies of the four lines that make up a maneuver (comment, servoLeft.writeMicroseconds, servoRight.writeMicroseconds, and delay). Then, modify each one with individual values
Your Turn – Pivoting
You can make the BOE Shield-Bot turn by pivoting around one wheel. The trick is to keep one wheel still while the other rotates. Here are the four routines for forward and backward pivot turns:
// Pivot forward-left servoLeft.writeMicroseconds(1500); // Left wheel stop servoRight.writeMicroseconds(1300); // Right wheel clockwise // Pivot forward-right servoLeft.writeMicroseconds(1700); // Left wheel counterclockwise servoRight.writeMicroseconds(1500); // Right wheel stop // Pivot backward-left servoLeft.writeMicroseconds(1500); // Left wheel stop servoRight.writeMicroseconds(1700); // Right wheel counterclockwise // Pivot backward-right servoLeft.writeMicroseconds(1300); // Left wheel clockwise servoRight.writeMicroseconds(1500); // Right wheel stop
- Save ForwardLeftRightBackward as PivotTests.
- Change the us parameter in each writeMicroseconds call so the sketch will perform all four pivot maneuvers: forward, left, right, backward.
- Run the modified sketch and verify that the different pivot actions work.
- Try experimenting with the delay calls for each maneuver so that each one runs long enough to execute a 90° turn.