Vous êtes sur la page 1sur 5

Monique Akpa

21 March 2017

Chapter 3 Challenges

Questions
1. What are some of the symptoms of brownout on the BOE Shield-Bot?
Some symptoms of brownout on the BOE Shield-Bot include erratic behavior
such as as going in unexpected directions or doing a confused dance.
2. What is a reset?
A reset is when the Arduino restarts executing a sketch from the beginning.
Resets happen when you press the reset button, take off the power, or when the arduino
recieves not enough power due to brownout.
3. How can a piezospeaker be used to announce that brownout just occurred?
If you add statements that make the piezospeaker play a tone at the beginning of
all of your sketches, itll play a tone if a brownout occurs. That way, you can know
whether to replace the batteries or check for an error in your navigation code.
4. What function makes the speaker play tones?
The tone function makes the speaker play tones.
5. Whats a hertz? Whats its abbreviation?
A hertz is a measurement of the number of times per second a signal repeats itself.
It is abbreviation Hz.
Exercises
1. Write a statement that makes a tone, one that sounds different from the start-alert tone, to
signify the end of a sketch.

tone(4, 2000, 1500);

2. Write a statement that plays a speaker tone to signify an intermediate step in the sketch.
This tone should be different from a start-alert or end tone.

tone(4, 4000, 75);

Projects
1. Modify the TestServoSpeed sketch so that it makes a tone signifying each test is
complete.
/*
Robotics with the BOE Shield Chapter 3, Project 1
*/

#include <Servo.h> // Include servo


library

Servo servoLeft; // Declare left servo


signal
Servo servoRight; // Declare right servo
signal

void setup() // Built in


initialization block
{
tone(4, 3000, 1000); // Play tone for 1
second
delay(1000); // Delay to finish
tone

Serial.begin(9600); // Set data rate to


9600 bps
servoLeft.attach(13); // Attach left signal
to P13
}

void loop() // Main loop auto-


repeats
{

// Loop counts with pulseWidth from 1375 to 1625 in increments of


25.

for(int pulseWidth = 1375; pulseWidth <= 1625; pulseWidth += 25)


{
Serial.print("pulseWidth = "); // Display pulseWidth
value
Serial.println(pulseWidth);
Serial.println("Press a key and click"); // User prompt
Serial.println("Send to start servo...");

while(Serial.available() == 0); // Wait for character


Serial.read(); // Clear character

Serial.println("Running...");
servoLeft.writeMicroseconds(pulseWidth); // Pin 13 servo
speed = pulse
delay(6000); // ..for 6 seconds
servoLeft.writeMicroseconds(1500); // Pin 13 servo speed
= stop
tone(4, 4000, 75); // Test complete
}
}

2. Modify the TestServoSpeed sketch so that it runs both wheels instead of just one with
each test. Make the right wheel turn the opposite direction from the left wheel.
/*
Robotics with the BOE Shield Chapter 3, Project 2
*/

#include <Servo.h> // Include servo


library

Servo servoLeft; // Declare left servo


signal
Servo servoRight; // Declare right servo
signal

void setup() // Built in


initialization block
{
tone(4, 3000, 1000); // Play tone for 1
second
delay(1000); // Delay to finish
tone

Serial.begin(9600); // Set data rate to


9600 bps
servoLeft.attach(13); // Attach left signal
to P13
servoRight.attach(12); // Attach right signal
to P12
}

void loop() // Main loop auto-


repeats
{

// Loop counts with pulseWidth from 1375 to 1625 in increments of


25.

for(int pulseWidth = 1375; pulseWidth <= 1625; pulseWidth += 25)


{
Serial.print("pulseWidth = "); // Display pulseWidth
value
Serial.println(pulseWidth);
Serial.println("Press a key and click"); // User prompt
Serial.println("Send to start servo...");

while(Serial.available() == 0); // Wait for character


Serial.read(); // Clear character

Serial.println("Running...");
servoLeft.writeMicroseconds(pulseWidth); // Pin 13 servo
speed = pulse
// Pin 12 servo opposite direction of pin 13 servo.
servoRight.writeMicroseconds(1500 + (1500 - pulseWidth));
delay(6000); // ..for 6 seconds
servoLeft.writeMicroseconds(1500); // Pin 13 servo speed
= stop
servoRight.writeMicroseconds(1500); // Pin 12 servo speed
= stop
tone(4, 4000, 75); // Test complete
}
}