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

Appendix F. Arduino Pin and Timer Usage

The tables in this section show the pin and timer resources used by the projects in this book. You can use the same pin assignments for the Leonardo boards or the standard ATmega328 boards such as the Uno. However, there are subtle low level differences between these boards, so if you are adding capabilities that use additional pins or resources beyond those described in this book, then check the documentation on pin and resource usage for your board.

Handling Resource Conflicts

The Arduino chip has a rich collection of hardware resources, but you can run up against a conflict if a feature you are adding requires a hardware resource that some other feature is already using. A resource conflict occurs when a function reconfigures or requires exclusive access to some hardware capability. Running out of analog or digital pins is one kind of resource conflict, usually easy to spot.

More subtle is a conflict caused by a library that requires a resource such a hardware timer that is already used by some other function. For example, a motor shield uses PWM to control motor speed and each motor requires a timer component. Arduino tries to hide the underlying hardware (one of the things that makes it easy to use) but this can result in things going wrong when a resource conflict does occur. Sometimes the compiler will report a problem with an error message about a resource conflict. But sometimes the sketch will compile without an error message even ...

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