Вы находитесь на странице: 1из 4

Chapter 8 Challenges

Questions
1. What would the relative sensitivity of the IR
detector be if you use tone to send a 35 kHz signal?
What is the relative sensitivity with a 36 kHz signal?

The relative sensitivity at 35 kHz is 30%. For 36 kHz, its


50%.

1. What keyword is used to declare a constant?

Precede a variable declaration with the const keyword.

1. What statement is used to sweep through


the list of frequencies used for IR distance
measurements?

A for loop that starts indexing at 38000 and increases by


1000 with each repetition.

1. Whats a summing junction?

A summing junction is a part of a block diagram that


indicates two inputs are added together (or one subtracted
from another) resulting in an output.
1. In our closed loop proportional control block
diagrams, what two values are used to calculate the
error term?

The error term is the measured level subtracted from the


desired set point level.

1. How do delays in the loop function contribute to


setting the sampling rate?

If a distance sample is taken with each repetition of the


loop function, then the delays more or less determine how
long it takes between each sample. Thats called the
sample interval, and 1 sample interval = sampling rate.

Exercises
1. Write a segment of code that does the
frequency sweep for just four frequencies instead of
five.

Just reduce the for statements condition from f <=42000


to f <= 41000

for(long f = 38000; f <= 42000; f += 1000) {

distance += irDetect(irLedPin, irReceivePin, f);

}
1. Write global constant declarations that initialize
kpl as 45 and kpr as 55.

Declarations

const int setpoint = 2;// Target distances

const int kpl = -45; // Proportional control constants

const int kpr = -55;

Projects
1. Write a sketch that allows you to hold your
hand in front of the BOE Shield-Bot and push it
backwards and forwards with no turning.

One quick and simple solution would be to average the


driveLeft and driveRight values in the FollowingShieldBot
sketch. The resulting single value can be applied both left
and right speed parameters in the maneuver call.

void loop() // Main loop auto-repeats

int irLeft = irDistance(9, 10); // Measure left distance

int irRight = irDistance(2, 3); // Measure right distance


// Left and right proportional control calculations

int driveLeft = (setpoint - irLeft) * kpl;

int driveRight = (setpoint - irRight) * kpr;

int drive = (driveLeft + driveRight)/2; // Average drive

levels

maneuver(drive, drive, 20); // Apply same drive to

both

delay(10); // 0.1 second delay

Вам также может понравиться