23 March 2017
Chapter 4 Challenges
Questions
1. What direction does the left wheel have to turn to make the BOE Shield-Bot go forward?
What direction does the right wheel have to turn?
The left side has to turn counterclockwise in order to go straight.
The right wheel has to go clockwise in order to straight.
2. When the BOE Shield-Bot pivots on one wheel to the left, what are the wheels doing?
What code do you need to make the BOE Shield-Bot pivot left?
The right wheel is turning clockwise (forward), and the left wheel
is not moving.
servoLeft.writeMicroseconds(1500);
servoRight.writeMicroseconds(1300);
3. If your BOE Shield-Bot veers slightly to one side when you are running a sketch to make
it go straight ahead, how do you correct this? What command needs to be adjusted and what
kind of adjustment should you make?
Slow down the right wheel to correct a veer to the left, and slow
down the left wheel to correct a veer to the right. Slow down a wheel
by changing its servos writeMicroseconds us parameter, using values
closer to 1500. Start at the appropriate end of the linear speed
control range (14001600), gradually move towards 1500 in
increments of 10, and go back in smaller increments if you overshoot.
4. If your BOE Shield-Bot travels 11 in/s, how many milliseconds will it take to make it
travel 36 inches?
Given the data below, it should take about 3727 milliseconds to travel 36
inches:
= (36 / 11 ) * (1000)
= 3.727272s * 1000 ms/s
3727 ms
5. Why does a for loop that ramps servo speed need delay(20) in it?
For loops and do-while loops can be used for retrieving values from lists
8. What statement can you use to select a particular variable and evaluate it on a case-by-
case basis and execute a different code block for each case?
Switch/case are statements that you could use to select a
particular variable and evaluate it on a case-by-case basis and execute
a different code block for each case.
9. What condition can you append to a do-loop?
The condition that you append to do a loop is do{...}loop while(condition).
Exercises
1. Write a routine that makes the BOE Shield-Bot back up at full speed for 2.5 seconds.
servoLeft.writeMicroseconds(1300);
servoRight.writeMicroseconds(1700);
delay(2500);
2. Lets say that you tested your servos and discovered that it takes 1.2 seconds to make a
180 turn with right-rotate. With this information, write routines to make the BOE Shield-Bot
perform 30, 45, and 60 degree turns.
// 30/180 = 1/6, so use 1200/6 = 200
servoLeft.writeMicroseconds(1700);
servoRight.writeMicroseconds(1700);
delay(200);
// alternate approach
servoLeft.writeMicroseconds(1700);
servoRight.writeMicroseconds(1700);
delay(1200 * 30 / 180);
3. Write a routine that makes the BOE Shield-Bot go straight forward, then ramp into and
out of a pivoting turn, and then continue straight forward.
Projects
// forward 1 second
servoLeft.writeMicroseconds(1700);
servoRight.writeMicroseconds(1700);
delay(1000);
2. The diagram shows two simple courses. Write a sketch that will make your BOE Shield-
Bot navigate along each figure. Assume straight-line distances (the triangles sides and the
diameter of the circle) are either 1 yard or 1 meter.
Circle sketch:
// Robotics with the BOE Shield - Chapter 4, project 2 - Circle
// BOE Shield-Bot navigates a circle of 1 yard diameter.
#include <Servo.h> // Include servo library
Triangle sketch:
// Robotics with the BOE Shield - Chapter 4, project 2 - Triangle
// BOE Shield-Bot navigates a triangle with 1 yard sides and 120
// degree angles. Go straight 1 yard, turn 120 degrees, repeat 3 times