Arduino Cookbook, 3rd Edition

Arduino Cookbook, 3rd Edition

Read it now on the O’Reilly learning platform with a 10-day free trial.

O’Reilly members get unlimited access to books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.

Book description

Want to create devices that interact with the physical world? This cookbook is perfect for anyone who wants to experiment with the popular Arduino microcontroller and programming environment. You’ll find more than 200 tips and techniques for building a variety of objects and prototypes such as IoT solutions, environmental monitors, location and position-aware systems, and products that can respond to touch, sound, heat, and light.

Updated for the Arduino 1.8 release, the recipes in this third edition include practical examples and guidance to help you begin, expand, and enhance your projects right away—whether you’re an engineer, designer, artist, student, or hobbyist.

Show and hide more

Publisher resources

Table of contents Product information

Table of contents

  1. 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 Platform Release Notes
    6. Notes on the Third Edition
    7. Conventions Used in This Book
    8. Using Code Examples
    9. O’Reilly Online Learning
    10. How to Contact Us
    11. Acknowledgments for the Second Edition (Michael Margolis)
    12. Acknowledgments for the Third Edition (Brian Jepson)
    1. 1.0 Introduction
    2. 1.1 Installing the Integrated Development Environment (IDE)
    3. 1.2 Setting Up the Arduino Board
    4. 1.3 Using the Integrated Development Environment to Prepare an Arduino Sketch
    5. 1.4 Uploading and Running the Blink Sketch
    6. 1.5 Creating and Saving a Sketch
    7. 1.6 An Easy First Arduino Project
    8. 1.7 Using Arduino with Boards Not Included in the Standard Distribution
    9. 1.8 Using a 32-Bit Arduino (or Compatible)
    1. 2.0 Introduction
    2. 2.1 A Typical Arduino Sketch
    3. 2.2 Using Simple Primitive Types (Variables)
    4. 2.3 Using Floating-Point Numbers
    5. 2.4 Working with Groups of Values
    6. 2.5 Using Arduino String Functionality
    7. 2.6 Using C Character Strings
    8. 2.7 Splitting Comma-Separated Text into Groups
    9. 2.8 Converting a Number to a String
    10. 2.9 Converting a String to a Number
    11. 2.10 Structuring Your Code into Functional Blocks
    12. 2.11 Returning More than One Value from a Function
    13. 2.12 Taking Actions Based on Conditions
    14. 2.13 Repeating a Sequence of Statements
    15. 2.14 Repeating Statements with a Counter
    16. 2.15 Breaking Out of Loops
    17. 2.16 Taking a Variety of Actions Based on a Single Variable
    18. 2.17 Comparing Character and Numeric Values
    19. 2.18 Comparing Strings
    20. 2.19 Performing Logical Comparisons
    21. 2.20 Performing Bitwise Operations
    22. 2.21 Combining Operations and Assignment
    1. 3.0 Introduction
    2. 3.1 Adding, Subtracting, Multiplying, and Dividing
    3. 3.2 Incrementing and Decrementing Values
    4. 3.3 Finding the Remainder After Dividing Two Values
    5. 3.4 Determining the Absolute Value
    6. 3.5 Constraining a Number to a Range of Values
    7. 3.6 Finding the Minimum or Maximum of Some Values
    8. 3.7 Raising a Number to a Power
    9. 3.8 Taking the Square Root
    10. 3.9 Rounding Floating-Point Numbers Up and Down
    11. 3.10 Using Trigonometric Functions
    12. 3.11 Generating Random Numbers
    13. 3.12 Setting and Reading Bits
    14. 3.13 Shifting Bits
    15. 3.14 Extracting High and Low Bytes in an int or long
    16. 3.15 Forming an int or long from High and Low Bytes
    1. 4.0 Introduction
    2. 4.1 Sending Information from Arduino to Your Computer
    3. 4.2 Sending Formatted Text and Numeric Data from Arduino
    4. 4.3 Receiving Serial Data in Arduino
    5. 4.4 Sending Multiple Text Fields from Arduino in a Single Message
    6. 4.5 Receiving Multiple Text Fields in a Single Message in Arduino
    7. 4.6 Sending Binary Data from Arduino
    8. 4.7 Receiving Binary Data from Arduino on a Computer
    9. 4.8 Sending Binary Values from Processing to Arduino
    10. 4.9 Sending the Values of Multiple Arduino Pins
    11. 4.10 Logging Arduino Data to a File on Your Computer
    12. 4.11 Sending Data to More than One Serial Device
    13. 4.12 Receiving Serial Data from More than One Serial Device
    14. 4.13 Using Arduino with the Raspberry Pi
    1. 5.0 Introduction
    2. 5.1 Using a Switch
    3. 5.2 Using a Switch Without External Resistors
    4. 5.3 Reliably Detect (Debounce) When a Switch Is Pressed
    5. 5.4 Determining How Long a Switch Is Pressed
    6. 5.5 Reading a Keypad
    7. 5.6 Reading Analog Values
    8. 5.7 Changing the Range of Values
    9. 5.8 Reading More than Six Analog Inputs
    10. 5.9 Measuring Voltages Up to 5V
    11. 5.10 Responding to Changes in Voltage
    12. 5.11 Measuring Voltages More than 5V (Voltage Dividers)
    1. 6.0 Introduction
    2. 6.1 You Want an Arduino with Many Built-in Sensors
    3. 6.2 Detecting Movement
    4. 6.3 Detecting Light
    5. 6.4 Detecting Motion of Living Things
    6. 6.5 Measuring Distance
    7. 6.6 Measuring Distance Precisely
    8. 6.7 Detecting Vibration
    9. 6.8 Detecting Sound
    10. 6.9 Measuring Temperature
    11. 6.10 Reading RFID (NFC) Tags
    12. 6.11 Tracking Rotary Movement
    13. 6.12 Tracking Rotary Movement in a Busy Sketch with Interrupts
    14. 6.13 Using a Mouse
    15. 6.14 Getting Location from a GPS
    16. 6.15 Detecting Rotation Using a Gyroscope
    17. 6.16 Detecting Direction
    18. 6.17 Reading Acceleration
    1. 7.0 Introduction
    2. 7.1 Connecting and Using LEDs
    3. 7.2 Adjusting the Brightness of an LED
    4. 7.3 Driving High-Power LEDs
    5. 7.4 Adjusting the Color of an LED
    6. 7.5 Controlling Lots of Color LEDs
    7. 7.6 Sequencing Multiple LEDs: Creating a Bar Graph
    8. 7.7 Sequencing Multiple LEDs: Making a Chase Sequence
    9. 7.8 Controlling an LED Matrix Using Multiplexing
    10. 7.9 Displaying Images on an LED Matrix
    11. 7.10 Controlling a Matrix of LEDs: Charlieplexing
    12. 7.11 Driving a 7-Segment LED Display
    13. 7.12 Driving Multidigit, 7-Segment LED Displays: Multiplexing
    14. 7.13 Driving Multidigit, 7-Segment LED Displays with the Fewest Pins
    15. 7.14 Controlling an Array of LEDs by Using MAX72xx Shift Registers
    16. 7.15 Increasing the Number of Analog Outputs Using PWM Extender Chips
    17. 7.16 Using an Analog Panel Meter as a Display
    1. 8.0 Introduction
    2. 8.1 Controlling Rotational Position with a Servo
    3. 8.2 Controlling Servo Rotation with a Potentiometer or Sensor
    4. 8.3 Controlling the Speed of Continuous Rotation Servos
    5. 8.4 Controlling Servos Using Computer Commands
    6. 8.5 Driving a Brushless Motor (Using a Hobby Speed Controller)
    7. 8.6 Controlling Solenoids and Relays
    8. 8.7 Making an Object Vibrate
    9. 8.8 Driving a Brushed Motor Using a Transistor
    10. 8.9 Controlling the Direction of a Brushed Motor with an H-Bridge
    11. 8.10 Controlling the Direction and Speed of a Brushed Motor with an H-Bridge
    12. 8.11 Using Sensors to Control the Direction and Speed of Brushed Motors
    13. 8.12 Driving a Bipolar Stepper Motor
    14. 8.13 Driving a Bipolar Stepper Motor (Using the EasyDriver Board)
    15. 8.14 Driving a Unipolar Stepper Motor with the ULN2003A Driver Chip
    1. 9.0 Introduction
    2. 9.1 Playing Tones
    3. 9.2 Playing a Simple Melody
    4. 9.3 Generating More than One Simultaneous Tone
    5. 9.4 Generating Audio Tones Without Interfering with PWM
    6. 9.5 Controlling MIDI
    7. 9.6 Making an Audio Synthesizer
    8. 9.7 Attain High-Quality Audio Synthesis
    1. 10.0 Introduction
    2. 10.1 Responding to an Infrared Remote Control
    3. 10.2 Decoding Infrared Remote Control Signals
    4. 10.3 Imitating Remote Control Signals
    5. 10.4 Controlling a Digital Camera
    6. 10.5 Controlling AC Devices by Hacking a Remote-Controlled Switch
    1. 11.0 Introduction
    2. 11.1 Connecting and Using a Text LCD Display
    3. 11.2 Formatting Text
    4. 11.3 Turning the Cursor and Display On or Off
    5. 11.4 Scrolling Text
    6. 11.5 Displaying Special Symbols
    7. 11.6 Creating Custom Characters
    8. 11.7 Displaying Symbols Larger than a Single Character
    9. 11.8 Displaying Pixels Smaller than a Single Character
    10. 11.9 Selecting a Graphical LCD Display
    11. 11.10 Control a Full-Color LCD Display
    12. 11.11 Control a Monochrome OLED Display
    1. 12.0 Introduction
    2. 12.1 Using millis to Determine Duration
    3. 12.2 Creating Pauses in Your Sketch
    4. 12.3 More Precisely Measuring the Duration of a Pulse
    5. 12.4 Using Arduino as a Clock
    6. 12.5 Creating an Alarm to Periodically Call a Function
    7. 12.6 Using a Real-Time Clock
    1. 13.0 Introduction
    2. 13.1 Connecting Multiple I2C Devices
    3. 13.2 Connecting Multiple SPI Devices
    4. 13.3 Working with an I2C Integrated Circuit
    5. 13.4 Increase I/O with an I2C Port Expander
    6. 13.5 Communicating Between Two or More Arduino Boards
    7. 13.6 Using the Wii Nunchuck Accelerometer
    1. 14.0 Introduction
    2. 14.1 Sending Messages Using Low-Cost Wireless Modules
    3. 14.2 Connecting Arduino over a ZigBee or 802.15.4 Network
    4. 14.3 Sending a Message to a Particular XBee
    5. 14.4 Sending Sensor Data Between XBees
    6. 14.5 Activating an Actuator Connected to an XBee
    7. 14.6 Communicating with Classic Bluetooth Devices
    8. 14.7 Communicating with Bluetooth Low Energy Devices
    1. 15.0 Introduction
    2. 15.1 Connecting to an Ethernet Network
    3. 15.2 Obtaining Your IP Address Automatically
    4. 15.3 Sending and Receiving Simple Messages (UDP)
    5. 15.4 Use an Arduino with Built-in WiFi
    6. 15.5 Connect to WiFi with Low-Cost Modules
    7. 15.6 Extracting Data from a Web Response
    8. 15.7 Requesting Data from a Web Server Using XML
    9. 15.8 Setting Up an Arduino to Be a Web Server
    10. 15.9 Handling Incoming Web Requests
    11. 15.10 Handling Incoming Requests for Specific Pages
    12. 15.11 Using HTML to Format Web Server Responses
    13. 15.12 Requesting Web Data Using Forms (POST)
    14. 15.13 Serving Web Pages Containing Large Amounts of Data
    15. 15.14 Sending Twitter Messages
    16. 15.15 Exchanging Data for the Internet of Things
    17. 15.16 Publishing Data to an MQTT Broker
    18. 15.17 Subscribing to Data on an MQTT Broker
    19. 15.18 Getting the Time from an Internet Time Server
    1. 16.0 Introduction
    2. 16.1 Using the Built-in Libraries
    3. 16.2 Installing Third-Party Libraries
    4. 16.3 Modifying a Library
    5. 16.4 Creating Your Own Library
    6. 16.5 Creating a Library That Uses Other Libraries
    7. 16.6 Updating Third-Party Libraries for Arduino 1.0
    1. 17.0 Introduction
    2. 17.1 Understanding the Arduino Build Process
    3. 17.2 Determining the Amount of Free and Used RAM
    4. 17.3 Storing and Retrieving Numeric Values in Program Memory
    5. 17.4 Storing and Retrieving Strings in Program Memory
    6. 17.5 Using #define and const Instead of Integers
    7. 17.6 Using Conditional Compilations
    1. 18.0 Introduction
    2. 18.1 Storing Data in Permanent EEPROM Memory
    3. 18.2 Take Action Automatically When a Pin State Changes
    4. 18.3 Perform Periodic Actions
    5. 18.4 Setting Timer Pulse Width and Duration
    6. 18.5 Creating a Pulse Generator
    7. 18.6 Changing a Timer’s PWM Frequency
    8. 18.7 Counting Pulses
    9. 18.8 Measuring Pulses More Accurately
    10. 18.9 Measuring Analog Values Quickly
    11. 18.10 Reducing Battery Drain
    12. 18.11 Setting Digital Pins Quickly
    13. 18.12 Uploading Sketches Using a Programmer
    14. 18.13 Replacing the Arduino Bootloader
    15. 18.14 Move the Mouse Cursor on a PC or Mac
    1. Capacitor
    2. Diode
    3. Integrated Circuit
    4. Keypad
    5. LED
    6. Motor (DC)
    7. Optocoupler
    8. Photocell (Photoresistor)
    9. Piezo
    10. Pot (Potentiometer)
    11. Relay
    12. Resistor
    13. Solenoid
    14. Speaker
    15. Stepper Motor
    16. Switch
    17. Transistor
    18. See Also
    1. How to Read a Datasheet
    2. Choosing and Using Transistors for Switching
    1. Using a Breadboard
    2. Connecting and Using External Power Supplies and Batteries
    3. Using Capacitors for Decoupling
    4. Using Snubber Diodes with Inductive Loads
    5. Working with AC Line Voltages
    1. Code That Won’t Compile
    2. Code That Compiles but Does Not Work as Expected
    1. Still Stuck?
    Show and hide more

    Product information