Table of contents
Introduction (11)
Acknowledgements (13)
About the book (15)
PART I. WE ARE ACTIVATING (19)
Chapter 1 Hello, Arduino (21)
- 1.1 Short Arduino story (22)
- 1.2. Arduino (23)
- 1.2.1. Arduino Uno (23)
- 1.2.2. Arduino Duemilanove (24)
- 1.2.3. Arduino Ethernet (24)
- 1.2.4. Arduino Mega (25)
- 1.2.5. Other Arduino versions (25)
- 1.2.6. Clone attack (27)
- 1.2.7. We start with Arduino (28)
- 1.3 Preparing the working environment (28)
- 1.3.1. Software for Arduino (28)
- 1.3.2. Basic equipment configuration (29)
- 1.3.3. Your Arduino toolbox (29)
- 1.4. Let something happen! (30)
- 1.4.1. Your first flashing light (30)
- 1.4.2. Sketch with flashing light (30)
- 1.4.3. We put everything together (31)
- 1.4.4. Loading and testing the programme (32)
- 1.5 We are familiar with the integrated development environment (33)
- 1.5.1. Code editor (34)
- 1.5.2. Serial port monitor (34)
- 1.5.3. Fault tracing (36)
- 1.5.4. Code processing (36)
- 1.6. Sketch structure (37)
- 1.6.1. Set-up procedure (37)
- 1.6.2. Unfinished loop (37)
- 1.7 Code commentary (38)
- 1.8 Summary (39)
Chapter 2 Digital inputs and outputs (41)
- 2.1. Here we go (41)
- 2.1.1. Use of contact plate (42)
- 2.1.2. Circuit diagram (42)
- 2.1.3. Light emitting diodes (44)
- 2.1.4. Calls (44)
- 2.1.5. Five diode flashing sketch (44)
- 2.1.6. Loading and testing (47)
- 2.2 Acquisition of control (47)
- 2.2.1. Circuit diagram (47)
- 2.2.2. Calls (47)
- 2.2.3. Interference interruptions (49)
- 2.2.4. Sketch to control the diodes with the button (49)
- 2.2.5. Loading and testing (52)
- 2.2.6. Break time (52)
- 2.2.7. Loading and testing (53)
- 2.3 The reflex meter (53)
- 2.3.1. Circuit diagram (53)
- 2.3.2. Calls (53)
- 2.3.3. Sketch for measuring the reflex (53)
- 2.3.4. Loading and testing (56)
- 2.4. Reflector meter - who's really the fastest? (56)
- 2.4.1. Sketch for measuring the reflex (57)
- 2.4.2. Loading and testing (58)
- 2.5 Summary (58)
Chapter 3 Simple projects: entry and exit (61)
- 3.1 The time for the analogue world (62)
- What is the difference between analogue and digital signals? (62)
- 3.1.2. Reading the signal from the potentiometer (63)
- 3.1.3. Connecting components (64)
- 3.1.4. Sketch for reading the potentiometer setting (64)
- 3.1.5. Loading and testing (66)
- 3.2 Piezoelectric transducer (67)
- 3.2.1. Circuit diagram (68)
- 3.2.2. Calls (69)
- 3.2.3. Sketch for measuring pulses from piezoelectric transducers (70)
- 3.2.4. Loading and testing (72)
- 3.2.5. Circuit with loudspeaker added (72)
- 3.2.6. Calls (72)
- 3.2.7. Sound generating sketch (74)
- 3.2.8. Loading and testing (74)
- 3.3 Construction of the pentatonic musical keyboard (75)
- 3.3.1. Circuit diagram (75)
- 3.3.2. Calls (75)
- 3.3.3. Sketch supporting the pentatonic keyboard (77)
- 3.3.4. Loading and testing (78)
- 3.4 Summary (79)
PART II. HARNESSING ARDUINO TO WORK (81)
Chapter 4 Extension of Arduino (83)
- 4.1 Increasing Arduino's capabilities through additional programming libraries (84)
- 4.2 The primary library (84)
- 4.3 Standard libraries (85)
- Test-driven design using the ArduinoTestSuite library (85)
- 4.3.2. Saving values in EEPROM (86)
- 4.3.3. Saving more data on SD cards (87)
- 4.3.4. Ethernet network connection (89)
- 4.3.5. Serial communication using the Firmata protocol (90)
- 4.3.6. Displaying information using the LiquidCrystal library (91)
- 4.3.7. Servomechanism control (92)
- 4.3.8. Stepper motor control (92)
- 4.3.9. Communication with devices on the SPI bus (93)
- 4.3.10. Communication via 2-wire bus (95)
- 4.3.11. Obtaining more serial ports using the SoftwareSerial library (95)
- 4.4 Libraries made available by users (98)
- 4.4.1. Installation of a new library (98)
- 4.5 Extension of Arduino using caps (99)
- 4.5.1. Popular overlays (99)
- Trap: will this work with my Arduino? (102)
- 4.6 Summary (103)
Chapter 5 Arduino in motion (105)
- 5.1 Speeding with DC motors (106)
- 5.1.1. Starting and stopping the engine (107)
- 5.1.2. Sketch to start and stop the small DC motor (108)
- 5.1.3. Combination of components (108)
- 5.1.4. Loading and sketch test (110)
- 5.2 Speed control and engine rotation in the opposite direction (111)
- 5.2.1. Modulation of the EDD arrives to the rescue (112)
- 5.2.2. Bridge H for engine control (112)
- 5.2.3. System L293D (114)
- 5.2.4. Joining elements (115)
- 5.2.5. Sketch for control of L293D (116)
- 5.2.6. Loading and sketch test (117)
- 5.2.7. Engine speed variation (117)
- 5.2.8. Loading and sketch test (118)
- 5.3 Stepper motors: one step at a time (119)
- 5.3.1. Bipolar and unipolar engines (119)
- 5.3.2. Joining of components (122)
- 5.3.3. Stepper motor library functions (123)
- 5.3.4. Stepper motor control sketch (125)
- 5.3.5. Loading and sketch test (126)
- 5.4 Servomechanisms are not so terrible (126)
- 5.4.1. Servomechanism control (126)
- 5.4.2. Servomechanism control functions and methods (127)
- 5.4.3. Sketch for servo control (128)
- 5.4.4. Joining components (129)
- 5.4.5. Loading and sketch test (129)
- 5.5 Great power of the small brushless motor (130)
- 5.5.1. Why without brushes (130)
- 5.5.2. Steering (131)
- 5.5.3. Brushless motor control sketch (132)
- 5.5.4. Combination of components (134)
- 5.5.5. Loading and sketch test (134)
- 5.5.6. Opposite rotation (135)
- 5.5.7. Brushless motor reversing sketch (135)
- 5.5.8. Joining components (136)
- 5.5.9. Loading and sketch test (136)
- 5.6. Multiple-engine control cap (136)
- 5.7 Summary (137)
Chapter 6 Detection of objects (139)
- 6.1 Ultrasonic detection of objects (139)
- 6.1.1. Selection of the ultrasonic sensor (140)
- 6.1.2. Three or four wires (141)
- 6.1.3. Sketches for ultrasonic detection of objects (142)
- 6.1.4. Joining elements (144)
- 6.1.5. Loading and sketch test (145)
- 6.2 Infrared distance measurement (145)
- 6.2.1. Combination of infrared and ultrasonic sensors (146)
- 6.2.2. Sharp GP2D12 sensor (146)
- 6.2.3. Non-linear distance calculation algorithm (146)
- 6.2.4. Sketch for distance measurement (147)
- 6.2.5. Joining elements (149)
- 6.2.6. Loading and sketch test (149)
- 6.3 Passive infrared motion detection (149)
- 6.3.1. Use of Parallax sensor (151)
- 6.3.2. Sketch for infrared motion detection (151)
- 6.3.3. Joining elements (152)
- 6.3.4. Loading and sketch test (153)
- 6.4 Summary (154)
Chapter 7 LCD Displays (155)
- 7.1 Introduction to LCD displays (156)
- 7.1.1. Character strings: String and char variables (156)
- 7.2 Hitachi HD44780 (158) parallel character display
- 7.2.1. 4-bit or 8-bit display? (159)
- 7.2.2. Library and functions (159)
- 7.2.3. Layout diagram (159)
- 7.2.4. Combining components in 4-bit mode (160)
- 7.2.5. Hitachi display control sketch HD44780 (162)
- 7.2.6. Loading and sketch test (163)
- 7.3 Weather station with a serial LCD display (164)
- 7.3.1. Serial and parallel displays (164)
- 7.3.2. SerLCD library and its functions (165)
- 7.3.3. Maxim DS18B20 (166) temperature sensor
- 7.3.4. OneWire and DallasTemperature libraries (167)
- 7.3.5. Layout diagram (167)
- 7.3.6. Combining all components (167)
- 7.3.7. Sketch for a meteorological station with LCD display (169)
- 7.3.8. Loading and sketch test (170)
- 7.4 Samsung KS0108 (171) graphic display
- 7.4.1. Library and functions (171)
- 7.4.2. Circuit diagram (171)
- 7.4.3. Combining all components (172)
- 7.4.4. Sketch for drawing on the graphic display (173)
- 7.4.5. Loading and sketch test (175)
- 7.5 Summary (176)
Chapter 8 Communication (177)
- 8.1 Ethernet technology (178)
- 8.1.1. Ethernet Library (179)
- 8.1.2. Ethernet overlay with SD card (180)
- 8.2 The Arduino web server (181)
- 8.2.1. Server configuration (181)
- 8.2.2. Web server configuration sketch (182)
- 8.2.3. Loading and sketch test (184)
- 8.2.4. Troubleshooting (184)
- 8.3. Twitter, Twitter, Twitter communication (184)
- 8.3.1. Twitter and tokens (185)
- 8.3.2. Libraries and functions (185)
- 8.3.3. Layout and connection of components (185)
- 8.3.4. Sketch for sending a tweet after pressing button (186)
- 8.3.5. Loading and sketch test (187)
- 8.4 Wi-Fi connectivity (188)
- 8.4.1. Arduino WiFi overlay (189)
- 8.4.2. WiFi library and its functions (190)
- 8.4.3. Body movements and wireless accelerometers (192)
- 8.4.4. Joining of components (192)
- 8.4.5. Sketch for Bluetooth communication (193)
- 8.4.6. Loading and sketch test (196)
- 8.5 Bluetooth wireless communication (196)
- 8.5.1. ArduinoBT (196)
- 8.5.2. Adding a Bluetooth module (198)
- 8.5.3. Establishing a Bluetooth connection (198)
- 8.5.4. Sketch for Bluetooth communication (199)
- 8.6 SPI interface (200)
- 8.6.1. Library SPI (200)
- 8.6.2. SPI equipment and digital potentiometers (201)
- 8.6.3. Layout and connection of the elements (202)
- 8.6.4. Sketch of the digital LED driver (203)
- 8.7 Data recording (204)
- 8.7.1. Types of memory (205)
- 8.7.2. SD cards and SD library (205)
- 8.7.3. Sketch recording on SD card sensor data (206)
- 8.8 Service Xively (207)
- 8.8.1. Creating an account and downloading an API key (208)
- 8.8.2. Creating a new data channel (208)
- 8.8.3. Sketch for recording sensor data in service Xively (209)
- 8.8.4. Loading and testing the sketch (211)
- 8.9 Summary (212)
Chapter 9 - Game time (213)
- 9.1 Nintendo Wii greets you (213)
- 9.1.1. Wii Nunchuk controller (214)
- 9.1.2. Connection to the Nunchuk controller (216)
- 9.1.3. Wii starts talking (218)
- 9.1.4. Wii tests (226)
- 9.2 Xbox console market entry (227)
- 9.2.1. Merger (228)
- 9.2.2. USB host library (229)
- 9.2.3. Getting information about the Xbox controller using the USB host overlay (229)
- 9.2.4. Xbox controller reporting obligation (231)
- 9.2.5. Start-up time (233)
- 9.2.6. Code linking (233)
- 9.2.7. Sketch of Xboxhid.ino (235)
- 9.2.8. Joining and testing of systems (239)
- 9.3 Summary (239)
Chapter 10: Integration of Arduino with iOS devices (241)
- 10.1 Connecting the iOS device to Arduino (243)
- 10.1.1. Redpark serial cable (243)
- 10.1.2. Final connection (244)
- 10.2. iOS code (245)
- 10.2.1. Creating a single-window application in Xcode (245)
- 10.2.2. Code creation (250)
- 10.3. We're engaging Arduino (253)
- 10.3.1. Sketch for iOS device LED control (253)
- 10.3.2. Sketch testing (254)
- 10.4. Let's do something more in Xcode (255)
- 10.4.1. Adding the Slider light (255)
- 10.5 The operation of the slider in Arduino (259)
- 10.5.1. Arduino slide control system (260)
- 10.5.2. System testing (261)
- 10.6 Sending data to the iOS device (262)
- 10.6.1. Encoding in Xcode (262)
- GP2D12 infrared distance sensor (265)
- 10.6.3. Test (267)
- 10.7 Summary (267)
Chapter 11 Electronic gadgets (269)
- 11.1 Introduction to the LilyPad (270)
- 11.1.1. LilyPad accessories (271)
- 11.1.2. Conductive threads and fabrics (272)
- 11.2 Jacket with switches (274)
- 11.3 A personal piano (276)
- 11.4 Arduino Pro Mini (279)
- 11.5 Smart headphones (280)
- 11.6 Jacket with compass (282)
- 11.7 Summary (286)
Chapter 12 Application of overlays (287)
- 12.1 Basic information on overlays (287)
- 12.2 Adafruit engine cap (288)
- 12.2.1. AFMotor library (289)
- 12.2.2. Application of the stepper motor cover (290)
- 12.2.3. Use of the DC motor cap (292)
- 12.2.4. Purchase of a motor cap (294)
- 12.3 How to build your own cap (295)
- 12.3.1. Memory (295)
- 12.3.2. Level switches (296)
- 12.3.3. SD card holder (296)
- 12.3.4. Connecting an SD card to an Arduino disc (297)
- 12.3.5. Preparation of the perforated panel (299)
- 12.3.6. Overlay test (302)
- 12.4 Summary (303)
Chapter 13 Integration with software (305)
- 13.1. Serial communication channel (306)
- 13.2 Face tracking servo (307)
- 13.2.1. Installation of the face tracking device (308)
- 13.2.2. Face tracking code (309)
- 13.3 Application of Firmata software for equalizer construction (313)
- 13.3.1. Application Firmata in your application (314)
- 13.3.2. Sound analysis in Processing environment (315)
- 13.3.3. Installation of equalizer elements (315)
- 13.3.4. Equalizer code (316)
- 13.4 Pure Data application for synthesizer construction (319)
- 13.4.1. Assembly of synthesizer components (320)
- 13.4.2. Synthesizer code (320)
- 13.5 Use of Python to measure temperature (324)
- 13.5.1. Python serial library (324)
- 13.5.2. Installation of thermometer components (325)
- 13.5.3. Temperature monitoring code (326)
- 13.6 Summary (328)
Appendix A. Installation of the Arduino IDE (329)
- A.1. Windows (329)
- A.1.1 Installation of drivers for Arduino board (329)
- A.2 Mac OS X (332)
- A.3. Linux (333)
Appendix B. Coding manual (337)
- B.1 History of the Arduino language (337)
- B.2 Variables (338)
- B.2.1. Variable types (339)
- B.2.2. Tables (340)
- B.2.3. Character strings (341)
- B.2.4. Fixed (341)
- B.2.5. Range of variables (342)
- B.3 Acquisition of control (343)
- B.3.1. Instructions if, else, else if (344)
- B.3.2. Switch-case instructions (346)
- B.3.3 Logical operators (347)
- B.4 Looping (348)
- B.4.1. Loop for (348)
- B.4.2. Loop while (349)
- B.4.3. Loop to while (350)
- B.5 Functions (350)
- B.6 Summary (351)
Appendix C. Libraries (353)
- C.1 Anatomy of the library (353)
- C.1.1. File .h (header) (353)
- C.1.2. .cpp file (354)
- C.2 Use of the library (355)
- C.2.1. Use of library in sketch (355)
- C.2.2. Library dissemination (356)
Appendix D. List of components (357)
Appendix E. Useful references (361)
Scorch (363)
|