You are previewing Make an Arduino-Controlled Robot.

Make an Arduino-Controlled Robot

Cover of Make an Arduino-Controlled Robot by Michael Margolis Published by O'Reilly Media, Inc.
  1. Make an Arduino-Controlled Robot
  2. SPECIAL OFFER: Upgrade this ebook with O’Reilly
  3. A Note Regarding Supplemental Files
  4. Preface
    1. Who This Book Is For
    2. How This Book Is Organized
    3. What Was Left Out
    4. Code Style (About the Code)
    5. Arduino Hardware and Software
    6. Conventions Used in This Book
    7. Using Code Examples
    8. Safari® Books Online
    9. How to Contact Us
    10. Acknowledgments
  5. 1. Introduction to Robot Building
    1. Why Build a Robot?
    2. How Robots Move
    3. Tools
  6. 2. Building the Electronics
    1. Hardware Required
    2. Construction Techniques
      1. Soldering
      2. Building the Motor Controller
      3. Soldering the Reflectance Sensors
      4. Making a Line Sensor Mount
      5. Next Steps
  7. 3. Building the Two-Wheeled Mobile Platform
    1. Hardware Required
    2. Mechanical Assembly
      1. Lay Out the Chassis Parts
      2. Motor Assembly
      3. Assemble the Chassis Components
      4. Attaching the Control Electronics
    3. Mounting the IR sensors
      1. Mounting the IR Sensors for Edge Detection
      2. Mounting the IR Sensors for Line Following
    4. Next Steps
  8. 4. Building the Four-Wheeled Mobile Platform
    1. Hardware Required
    2. Mechanical Assembly
      1. Lay Out the Chassis Parts
      2. Motor Assembly
      3. Assemble the Chassis Components
      4. Solder the Power and Motor Connections
      5. Connecting the Battery Pack and Power Switch
      6. Building the Optional Trickle Charger
      7. Assemble the Chassis
      8. Mounting Arduino and Connecting Wires to the Shield
    3. Mounting the IR sensors
      1. Mounting the IR Sensors for Edge Detection
      2. Mounting the IR Sensors for Line Following
    4. Next Steps
  9. 5. Tutorial: Getting Started with Arduino
    1. Hardware Required
    2. Arduino Software
    3. Arduino Hardware
    4. Installing the Integrated Development Environment (IDE)
      1. Installing Arduino on Windows
      2. Installing Arduino on OS X
      3. Installing Arduino on Linux
      4. Driver Installation
    5. Connecting the Arduino Board
    6. Using the IDE
    7. Uploading and Running the Blink Sketch
    8. Using Tabs
    9. Installing Third-Party Libraries
  10. 6. Testing the Robot's Basic Functions
    1. Hardware Required
    2. Software Prerequisites
    3. Sketches Used in This Chapter
    4. Load and Run helloRobot.ino
    5. About the Sketch
    6. Troubleshooting
    7. Making the Sketch Easy to Enhance
  11. 7. Controlling Speed and Direction
    1. Hardware Required
    2. Sketches Used in This Chapter
    3. Types of Motors
    4. Motor Controllers
    5. Controlling Motor Speed
      1. How Motor Speed Is Controlled
      2. Code for Motor Control
      3. Calibrating Rotation and Tracking
    6. Software Architecture for Robot Mobility
    7. Functions to Encapsulate Robot Movements
      1. Core Movement Code
      2. Additional Core Functions
      3. Functions to Rotate the Robot
      4. Higher-Level Movement Functions
  12. 8. Tutorial: Introduction to Sensors
    1. Hardware Discussed
    2. Software
    3. Infrared Reflectance Sensors
    4. Sonar Distance Sensors
    5. Maxbotix EZ1 Sonar Distance Sensor
    6. Sharp IR Distance Sensor
    7. Proximity Sensor
    8. Sound Sensor
    9. Arduino Cookbook
  13. 9. Modifying the Robot to React to Edges and Lines
    1. Hardware Required
    2. Sketches Used in This Chapter
    3. The Look Code
    4. Edge Detection
    5. Line Following
    6. Seeing Sketch Data
  14. 10. Autonomous Movement
    1. Hardware Required
    2. Sketches Used in This Chapter
    3. Mounting a Ping Distance Sensor
      1. Making a Mount for the Ping Sensor
      2. Mounting the Ping Sensor in a Fixed Position
      3. Mounting the Ping Sensor on a Servo
    4. Letting the Robot Wander
    5. Adding Scanning
  15. 11. Remote Control
    1. Hardware Required
    2. Sketches Used in This Chapter
    3. Design of the Remote Control Code
    4. Controlling the Robot with a TV Type IR Remote
      1. Installing the IR Decoder Chip
      2. The IR Remote Software
  16. A. Enhancing Your Robot
    1. Planning
      1. Think Before You Code
      2. Avoid Feature Bloat
      3. Don't Reinvent the Wheel
      4. Structure to Reflect Functionality
      5. Use Clear Names for Functions and Variables
    2. Implementing a Complex Project
      1. Test Often
      2. Simplify
      3. If It Is Awkward, Start Over
      4. Don't Confuse Activity with Progress
      5. Experiment
      6. Be Tenacious
      7. Have Fun
  17. B. Using Other Hardware with Your Robot
    1. Alternative Motor Controllers
      1. Ardumoto
      2. Continuous Rotation Servos
  18. C. Debugging Your Robot
    1. Identify the Symptoms and Localize the problem
      1. Seeing What the Robot Is Doing
  19. D. Power Sources
    1. Monitoring Battery Voltage
    2. Trickle Charging
  20. E. Programming Constructs
    1. Digital I/O
    2. Analog I/O
    3. Math functions
    4. Other Functions and Constructs
  21. F. Arduino Pin and Timer Usage
    1. Handling Resource Conflicts
      1. Modifying a Library to Change Timer Allocation
      2. Writing Code That Avoids the Use of a Timer
    2. Pin and Timer Tables
  22. About the Author
  23. SPECIAL OFFER: Upgrade this ebook with O’Reilly
  24. Copyright
O'Reilly logo

Chapter 7. Controlling Speed and Direction

This chapter covers the principles of robot motor control that apply to both two wheeled and four wheeled platforms. The motor controller hardware is explained, as is the code used to make this functionality accessible to the sketches. The second half of this chapter (Software Architecture for Robot Mobility) describes software modules that frees the sketch logic from a dependency on any specific motor hardware. All sketches use the library named RobotMotor that provides a consistent interface to the hardware specific motor system. An optional software module named Move provides high level functions to move the robot that simplifies the code in the more complex sketches that follow in chapters to come.

Hardware Required

  • This chapter uses the AFMotor shield described in Chapter 2.

Sketches Used in This Chapter

  • The motor control code used in Chapter 6 is explained and two new sketches are introduced:

  • MyRobotCalibrateRotation.ino—A sketch for running the robot through a range of speeds to calibrate the robot.

  • MyRobotMove.ino—This sketch shows how to use higher level movement functions. Constants for defining the current robot movement are added to the robotDefines tab. A new tab named Move is added that contains the high level movement functions. The IrSensor tab and RobotMotor library are unchanged (Figure 7-1).

myRobotMove Sketch

Figure 7-1. myRobotMove Sketch

Types ...

The best content for your career. Discover unlimited learning on demand for around $1/day.