Muutke küpsiste eelistusi

Arduino Cookbook 2nd edition [Pehme köide]

  • Formaat: Paperback / softback, 724 pages, black & white illustrations, black & white tables, figures
  • Ilmumisaeg: 30-Dec-2011
  • Kirjastus: O'Reilly Media
  • ISBN-10: 1449313876
  • ISBN-13: 9781449313876
  • Pehme köide
  • Hind: 69,39 €*
  • * saadame teile pakkumise kasutatud raamatule, mille hind võib erineda kodulehel olevast hinnast
  • See raamat on trükist otsas, kuid me saadame teile pakkumise kasutatud raamatule.
  • Kogus:
  • Lisa ostukorvi
  • Tasuta tarne
  • Lisa soovinimekirja
  • Formaat: Paperback / softback, 724 pages, black & white illustrations, black & white tables, figures
  • Ilmumisaeg: 30-Dec-2011
  • Kirjastus: O'Reilly Media
  • ISBN-10: 1449313876
  • ISBN-13: 9781449313876
Create your own toys, remote controllers, alarms, detectors, robots, and many other projects with the Arduino device. This simple microcontroller board lets artists and designers build a variety of amazing objects and prototypes that interact with the physical world. With this cookbook you can dive right in and experiment with more than a hundred tips and techniques, no matter what your skill level is. Updated for the Arduino 1.0 release, recipes in the second edition provide solutions for most common problems and questions Arduino users have, including everything from programming fundamentals to working with sensors, motors, lights, and sound, or communicating over wired and wireless networks. You'll find the examples and advice you need to begin, expand, and enhance your projects right away.* Get to know the Arduino development environment * Understand the core elements of the Arduino programming language * Use common output devices for light, motion, and sound * Interact with almost any device that has a remote control * Learn techniques for handling time delays and time measurement * Use simple ways to transfer digital information from sensors to the Arduino device * Create complex projects that incorporate shields and external modules * Use and modify existing Arduino libraries, and learn how to create your own
Preface xi
1 Getting Started
1(22)
1.1 Installing the Integrated Development Environment (IDE)
4(4)
1.2 Setting Up the Arduino Board
8(2)
1.3 Using the Integrated Development Environment (IDE) to Prepare an Arduino Sketch
10(3)
1.4 Uploading and Running the Blink Sketch
13(1)
1.5 Creating and Saving a Sketch
14(3)
1.6 Using Arduino
17(6)
2 Making the Sketch Do Your Bidding
23(46)
2.1 Structuring an Arduino Program
24(1)
2.2 Using Simple Primitive Types (Variables)
25(2)
2.3 Using Floating-Point Numbers
27(2)
2.4 Working with Groups of Values
29(3)
2.5 Using Arduino String Functionality
32(5)
2.6 Using C Character Strings
37(1)
2.7 Splitting Comma-Separated Text into Groups
38(3)
2.8 Converting a Number to a String
41(2)
2.9 Converting a String to a Number
43(2)
2.10 Structuring Your Code into Functional Blocks
45(4)
2.11 Returning More Than One Value from a Function
49(3)
2.12 Taking Actions Based on Conditions
52(1)
2.13 Repeating a Sequence of Statements
53(2)
2.14 Repeating Statements with a Counter
55(3)
2.15 Breaking Out of Loops
58(1)
2.16 Taking a Variety of Actions Based on a Single Variable
59(2)
2.17 Comparing Character and Numeric Values
61(2)
2.18 Comparing Strings
63(1)
2.19 Performing Logical Comparisons
64(1)
2.20 Performing Bitwise Operations
65(3)
2.21 Combining Operations and Assignment
68(1)
3 Using Mathematical Operators
69(20)
3.1 Adding, Subtracting, Multiplying, and Dividing
69(1)
3.2 Incrementing and Decrementing Values
70(1)
3.3 Finding the Remainder After Dividing Two Values
71(1)
3.4 Determining the Absolute Value
72(1)
3.5 Constraining a Number to a Range of Values
73(1)
3.6 Finding the Minimum or Maximum of Some Values
74(1)
3.7 Raising a Number to a Power
75(1)
3.8 Taking the Square Root
76(1)
3.9 Rounding Floating-Point Numbers Up and Down
76(1)
3.10 Using Trigonometric Functions
77(1)
3.11 Generating Random Numbers
78(2)
3.12 Setting and Reading Bits
80(4)
3.13 Shifting Bits
84(1)
3.14 Extracting High and Low Bytes in an int or long
85(2)
3.15 Forming an int or long from High and Low Bytes
87(2)
4 Serial Communications
89(58)
4.1 Sending Debug Information from Arduino to Your Computer
94(3)
4.2 Sending Formatted Text and Numeric Data from Arduino
97(3)
4.3 Receiving Serial Data in Arduino
100(5)
4.4 Sending Multiple Text Fields from Arduino in a Single Message
105(6)
4.5 Receiving Multiple Text Fields in a Single Message in Arduino
111(3)
4.6 Sending Binary Data from Arduino
114(4)
4.7 Receiving Binary Data from Arduino on a Computer
118(2)
4.8 Sending Binary Values from Processing to Arduino
120(2)
4.9 Sending the Value of Multiple Arduino Pins
122(3)
4.10 How to Move the Mouse Cursor on a PC or Mac
125(5)
4.11 Controlling Google Earth Using Arduino
130(5)
4.12 Logging Arduino Data to a File on Your Computer
135(3)
4.13 Sending Data to Two Serial Devices at the Same Time
138(3)
4.14 Receiving Serial Data from Two Devices at the Same Time
141(4)
4.15 Setting Up Processing on Your Computer to Send and Receive Serial Data
145(2)
5 Simple Digital and Analog Input
147(34)
5.1 Using a Switch
150(4)
5.2 Using a Switch Without External Resistors
154(1)
5.3 Reliably Detecting the Closing of a Switch
155(3)
5.4 Determining How Long a Switch Is Pressed
158(5)
5.5 Reading a Keypad
163(3)
5.6 Reading Analog Values
166(2)
5.7 Changing the Range of Values
168(2)
5.8 Reading More Than Six Analog Inputs
170(3)
5.9 Displaying Voltages Up to 5V
173(3)
5.10 Responding to Changes in Voltage
176(1)
5.11 Measuring Voltages More Than 5V (Voltage Dividers)
177(4)
6 Getting Input from Sensors
181(60)
6.1 Detecting Movement
183(3)
6.2 Detecting Light
186(1)
6.3 Detecting Motion (Integrating Passive Infrared Detectors)
187(2)
6.4 Measuring Distance
189(4)
6.5 Measuring Distance Accurately
193(4)
6.6 Detecting Vibration
197(1)
6.7 Detecting Sound
198(4)
6.8 Measuring Temperature
202(4)
6.9 Reading RFID Tags
206(2)
6.10 Tracking Rotary Movement
208(3)
6.11 Tracking the Movement of More Than One Rotary Encoder
211(3)
6.12 Tracking Rotary Movement in a Busy Sketch
214(2)
6.13 Using a Mouse
216(4)
6.14 Getting Location from a GPS
220(5)
6.15 Detecting Rotation Using a Gyroscope
225(5)
6.16 Detecting Direction
230(5)
6.17 Getting Input from a Game Control Pad (PlayStation)
235(2)
6.18 Reading Acceleration
237(4)
7 Visual Output
241(48)
7.1 Connecting and Using LEDs
245(3)
7.2 Adjusting the Brightness of an LED
248(1)
7.3 Driving High-Power LEDs
249(3)
7.4 Adjusting the Color of an LED
252(3)
7.5 Sequencing Multiple LEDs: Creating a Bar Graph
255(3)
7.6 Sequencing Multiple LEDs: Making a Chase Sequence (Knight Rider)
258(1)
7.7 Controlling an LED Matrix Using Multiplexing
259(3)
7.8 Displaying Images on an LED Matrix
262(3)
7.9 Controlling a Matrix of LEDs: Charlieplexing
265(6)
7.10 Driving a 7-Segment LED Display
271(3)
7.11 Driving Multidigit, 7-Segment LED Displays: Multiplexing
274(2)
7.12 Driving Multidigit, 7-Segment LED Displays Using MAX7221 Shift Registers
276(3)
7.13 Controlling an Array of LEDs by Using MAX72xx Shift Registers
279(2)
7.14 Increasing the Number of Analog Outputs Using PWM Extender Chips (TLC5940)
281(4)
7.15 Using an Analog Panel Meter as a Display
285(4)
8 Physical Output
289(38)
8.1 Controlling the Position of a Servo
292(2)
8.2 Controlling One or Two Servos with a Potentiometer or Sensor
294(2)
8.3 Controlling the Speed of Continuous Rotation Servos
296(2)
8.4 Controlling Servos Using Computer Commands
298(1)
8.5 Driving a Brushless Motor (Using a Hobby Speed Controller)
299(1)
8.6 Controlling Solenoids and Relays
300(2)
8.7 Making an Object Vibrate
302(2)
8.8 Driving a Brushed Motor Using a Transistor
304(2)
8.9 Controlling the Direction of a Brushed Motor with an H-Bridge
306(3)
8.10 Controlling the Direction and Speed of a Brushed Motor with an H-Bridge
309(2)
8.11 Using Sensors to Control the Direction and Speed of Brushed Motors (L293 H-Bridge)
311(6)
8.12 Driving a Bipolar Stepper Motor
317(3)
8.13 Driving a Bipolar Stepper Motor (Using the EasyDriver Board)
320(3)
8.14 Driving a Unipolar Stepper Motor (ULN2003A)
323(4)
9 Audio Output
327(20)
9.1 Playing Tones
329(2)
9.2 Playing a Simple Melody
331(2)
9.3 Generating More Than One Simultaneous Tone
333(2)
9.4 Generating Audio Tones and Fading an LED
335(3)
9.5 Playing a WAV File
338(3)
9.6 Controlling MIDI
341(3)
9.7 Making an Audio Synthesizer
344(3)
10 Remotely Controlling External Devices
347(16)
10.1 Responding to an Infrared Remote Control
348(2)
10.2 Decoding Infrared Remote Control Signals
350(4)
10.3 Imitating Remote Control Signals
354(3)
10.4 Controlling a Digital Camera
357(2)
10.5 Controlling AC Devices by Hacking a Remote-Controlled Switch
359(4)
11 Using Displays
363(34)
11.1 Connecting and Using a Text LCD Display
364(3)
11.2 Formatting Text
367(3)
11.3 Turning the Cursor and Display On or Off
370(2)
11.4 Scrolling Text
372(3)
11.5 Displaying Special Symbols
375(2)
11.6 Creating Custom Characters
377(2)
11.7 Displaying Symbols Larger Than a Single Character
379(3)
11.8 Displaying Pixels Smaller Than a Single Character
382(3)
11.9 Connecting and Using a Graphical LCD Display
385(4)
11.10 Creating Bitmaps for Use with a Graphical Display
389(2)
11.11 Displaying Text on a TV
391(6)
12 Using Time and Dates
397(24)
12.1 Creating Delays
397(1)
12.2 Using millis to Determine Duration
398(4)
12.3 More Precisely Measuring the Duration of a Pulse
402(2)
12.4 Using Arduino as a Clock
404(8)
12.5 Creating an Alarm to Periodically Call a Function
412(3)
12.6 Using a Real-Time Clock
415(6)
13 Communicating Using I2C and SPI
421(38)
13.1 Controlling an RGB LED Using the BlinkM Module
425(5)
13.2 Using the Wii Nunchuck Accelerometer
430(5)
13.3 Interfacing to an External Real-Time Clock
435(2)
13.4 Adding External EEPROM Memory
437(4)
13.5 Reading Temperature with a Digital Thermometer
441(4)
13.6 Driving Four 7-Segment LEDs Using Only Two Wires
445(4)
13.7 Integrating an I2C Port Expander
449(2)
13.8 Driving Multidigit, 7-Segment Displays Using SPI
451(3)
13.9 Communicating Between Two or More Arduino Boards
454(5)
14 Wireless Communication
459(36)
14.1 Sending Messages Using Low-Cost Wireless Modules
459(6)
14.2 Connecting Arduino to a ZigBee or 802.15.4 Network
465(7)
14.3 Sending a Message to a Particular XBee
472(3)
14.4 Sending Sensor Data Between XBees
475(5)
14.5 Activating an Actuator Connected to an XBee
480(6)
14.6 Sending Messages Using Low-Cost Transceivers
486(5)
14.7 Communicating with Bluetooth Devices
491(4)
15 Ethernet and Networking
495(66)
15.1 Setting Up the Ethernet Shield
498(2)
15.2 Obtaining Your IP Address Automatically
500(2)
15.3 Resolving Hostnames to IP Addresses (DNS)
502(2)
15.4 Requesting Data from a Web Server
504(4)
15.5 Requesting Data from a Web Server Using XML
508(3)
15.6 Setting Up an Arduino to Be a Web Server
511(3)
15.7 Handling Incoming Web Requests
514(3)
15.8 Handling Incoming Requests for Specific Pages
517(4)
15.9 Using HTML to Format Web Server Responses
521(4)
15.10 Serving Web Pages Using Forms (POST)
525(3)
15.11 Serving Web Pages Containing Large Amounts of Data
528(7)
15.12 Sending Twitter Messages
535(4)
15.13 Sending and Receiving Simple Messages (UDP)
539(6)
15.14 Getting the Time from an Internet Time Server
545(5)
15.15 Monitoring Pachube Feeds
550(6)
15.16 Sending Information to Pachube
556(5)
16 Using, Modifying, and Creating Libraries
561(22)
16.1 Using the Built-in Libraries
561(2)
16.2 Installing Third-Party Libraries
563(2)
16.3 Modifying a Library
565(3)
16.4 Creating Your Own Library
568(6)
16.5 Creating a Library That Uses Other Libraries
574(6)
16.6 Updating Third-Party Libraries for Arduino 1.0
580(3)
17 Advanced Coding and Memory Handling
583(16)
17.1 Understanding the Arduino Build Process
584(3)
17.2 Determining the Amount of Free and Used RAM
587(2)
17.3 Storing and Retrieving Numeric Values in Program Memory
589(3)
17.4 Storing and Retrieving Strings in Program Memory
592(2)
17.5 Using #define and const Instead of Integers
594(1)
17.6 Using Conditional Compilations
595(4)
18 Using the Controller Chip Hardware
599(38)
18.1 Storing Data in Permanent EEPROM Memory
603(3)
18.2 Using Hardware Interrupts
606(3)
18.3 Setting Timer Duration
609(2)
18.4 Setting Timer Pulse Width and Duration
611(3)
18.5 Creating a Pulse Generator
614(3)
18.6 Changing a Timer's PWM Frequency
617(3)
18.7 Counting Pulses
620(1)
18.8 Measuring Pulses More Accurately
621(3)
18.9 Measuring Analog Values Quickly
624(2)
18.10 Reducing Battery Drain
626(2)
18.11 Setting Digital Pins Quickly
628(3)
18.12 Uploading Sketches Using a Programmer
631(1)
18.13 Replacing the Arduino Bootloader
632(1)
18.14 Reprogram the Uno to Emulate a Native USB device
633(4)
A Electronic Components 637(6)
B Using Schematic Diagrams and Data Sheets 643(8)
C Building and Connecting the Circuit 651(4)
D Tips on Troubleshooting Software Problems 655(4)
E Tips on Troubleshooting Hardware Problems 659(4)
F Digital and Analog Pins 663(4)
G ASCII and Extended Character Sets 667(4)
H Migrating to Arduino 1.0 671(6)
Index 677
Michael Margolis is a technologist in the field of real time computing with expertise in developing and delivering hardware and software for interacting with the environment. He has over 30 years of experience in a wide range of relevant technologies, working with Sony, Microsoft, Lucent/Bell Labs, and most recently as Chief Technical Officer with Avaya.