前言
第一篇 基礎篇
第1章 初識Arduino 2
1.1 Arduino的曆史 2
1.2 Arduino的傢族 3
1.3 Arduino的資源 6
1.4 Arduino的開發環境 9
1.5 添加新硬件及設置開發環境 9
1.6 Arduino開發環境的應用 14
第2章 編寫Arduino程序 16
2.1 繪製流程圖 16
2.1.1 流程圖基本符號 16
2.1.2 流程圖的三種基本結構 17
2.2 C語言的標識符與關鍵字 18
2.2.1 標識符 18
2.2.2 關鍵字 18
2.2.3 運算符 19
2.2.4 分隔符 21
2.2.5 常量 21
2.2.6 注釋符 21
2.3 控製語句 21
2.3.1 if語句 21
2.3.2 switch語句 22
2.3.3 while語句 23
2.3.4 do-while語句 24
2.3.5 for語句 25
2.3.6 break語句 26
2.3.7 continue語句 26
2.3.8 goto語句 26
2.4 程序結構 27
第3章 Arduino的基本函數 29
3.1 數字I/O 30
3.1.1 pinMode(pin,mode) 30
3.1.2 digitalWrite(pin,value) 31
3.1.3 digitalRead(pin) 32
3.2 模擬I/O 33
3.2.1 analogReference(type) 33
3.2.2 analogRead(pin) 33
3.2.3 analogWrite(pin, value) 34
3.3 高級I/O 37
3.3.1 shiftOut(dataPin,clockPin, bitOrder,val) 37
3.3.2 pulseIn(pin,state,timeout) 38
3.4 時間函數 39
3.4.1 millis( ) 39
3.4.2 delay(ms) 40
3.4.3 delayMicroseconds(us) 40
3.5 數學庫 41
3.5.1 min(x,y) 41
3.5.2 max(x,y) 41
3.5.3 abs(x) 41
3.5.4 constrain(amt,low,high) 41
3.5.5 map(x,in_min,in_max,out_min, out_max) 41
3.5.6 三角函數 42
3.6 隨機數 42
3.6.1 randomSeed(seed) 42
3.6.2 random(howsmall,howbig) 42
3.7 位操作 43
3.8 中斷函數 43
3.8.1 interrupts( )和noInterrupts( ) 43
3.8.2 attachInterrupt(interrupt,function,mode) 43
3.9 串口通信 45
3.10 SPI接口 48
3.10.1 SPI接口概述 48
3.10.2 SPI接口數據傳輸 48
3.10.3 SPI類及其成員函數 49
第4章 Arduino硬件平颱 52
4.1 Arduino的原理圖 52
4.2 串行通信口的使用 55
4.2.1 實例功能 56
4.2.2 硬件電路 56
4.2.3 程序設計 56
4.3 數字I/O口的使用 58
4.3.1 實例功能 59
4.3.2 硬件電路 59
4.3.3 程序設計 59
4.4 模擬I/O口的使用 61
4.4.1 實例功能 61
4.4.2 硬件電路 61
4.4.3 程序設計 62
4.5 燒寫引導程序 62
4.5.1 下載器AVRISP 63
4.5.2 AVR Studio 64
4.5.3 燒寫引導程序 65
第二篇 模塊篇
第5章 Arduino基本擴展模塊 68
5.1 L293 Motor Shield 68
5.1.1 直流電機的工作原理 68
5.1.2 H橋驅動電路 70
5.1.3 綫性放大調速原理 71
5.1.4 PWM調速原理 72
5.1.5 L293 Motor Shield的原理 72
5.1.6 L293 Motor Shield的應用 74
5.1.7 程序設計 75
5.1.8 程序分析 76
5.1.9 程序的精練 77
5.2 Input Shield 78
5.2.1 Input Shield原理圖 79
5.2.2 Input Shield的實例 79
5.2.3 程序設計 80
5.2.4 程序分析 81
5.2.5 使用搖杆控製直流電機轉速 81
5.3 LCD Keypad Shield 83
5.3.1 液晶顯示原理 83
5.3.2 標準1602液晶模塊 83
5.3.3 1602液晶模塊控製方式 84
5.3.4 LCD Keypad Shield原理圖 87
5.3.5 LCD Keypad Shield應用實例 89
5.3.6 程序設計 89
5.3.7 程序分析 92
5.3.8 Arduino的液晶控製方式 93
5.3.9 “hello Arduino!” 94
5.4 Ethernet Shield 97
5.4.1 Ethernet Shield原理圖 97
5.4.2 W5100芯片介紹 97
5.4.3 W5100芯片的寄存器 101
5.4.4 W5100芯片的使用 105
5.4.5 Ethernet Shield應用實例 105
5.4.6 程序設計 106
5.5 I/O擴展闆 109
5.5.1 Xbee傳感器擴展闆V5 109
5.5.2 伺服電機控製 110
5.5.3 伺服電機應用實例 111
5.5.4 Interface shield 114
5.5.5 RGB LED Module 114
5.5.6 RGB LED Module應用實例 118
5.5.7 程序的精練 123
第6章 Arduino的擴展庫 126
6.1 Arduino擴展庫介紹 126
6.1.1 Arduino擴展庫的作用 126
6.1.2 Arduino擴展庫的應用 126
6.2 對象和類 130
6.2.1 類的定義 130
6.2.2 對象的創建及成員函數的調用 131
6.2.3 對象的初始化和構造函數 132
6.2.4 函數的重載 133
6.2.5 析構函數 133
6.3 LiquidCrystal庫 134
6.3.1 構造函數 136
6.3.2 command( )和write( ) 139
6.3.3 begin( ) 140
6.3.4 clear( ) 142
6.3.5 home( ) 142
6.3.6 setCursor( ) 142
6.3.7 noDisplay( )和display( ) 143
6.3.8 cursor( )和noCursor( ) 143
6.3.9 blink( )和noBlink( ) 143
6.3.10 autoscroll( )和
noAutoscroll( ) 144
6.3.11 scrollDisplayLeft( )和scrollDisplayRight( ) 144
6.3.12 print( ) 145
6.4 Ethernet庫 146
6.4.1 EthernetClass類定義 146
6.4.2 Server類定義 148
6.4.3 Server類構造函數 148
6.4.4 Server類成員函數 148
6.4.5 Client類定義 152
6.4.6 Client類構造函數 152
6.4.7 Client類成員函數 153
6.5 SoftwareSerial庫 158
6.5.1 構造函數 159
6.5.2 begin( ) 160
6.5.3 read( ) 160
6.5.4 print( )和println( ) 161
6.5.5 使用限製 164
6.6 EEPROM庫 165
6.6.1 read( ) 165
6.6.2 write( ) 166
6.7 Wire庫 166
6.7.1 IIC總綫概述 166
6.7.2 TwoWire類定義 167
6.7.3 begin( ) 168
6.7.4 requestFrom( ) 168
6.7.5 available ( ) 169
6.7.6 receive( ) 169
6.7.7 beginTransmission( ) 170
6.7.8 endTransmission( ) 170
6.7.9 send( ) 171
6.7.10 onReceive( ) 172
6.7.11 onRequest( ) 173
6.8 Servo庫 174
6.8.1 構造函數 175
6.8.2 attach() 176
6.8.3 write( ) 177
6.8.4 writeMicroseconds( ) 177
6.8.5 read( ) 178
6.8.6 readMicroseconds( ) 178
6.8.7 attached( ) 178
6.8.8 detach( ) 179
6.9 Stepper庫 179
6.9.1 步進電機概述 179
6.9.2 步進電機的基本參數 180
6.9.3 步進電機的優缺點 181
6.9.4 步進電機的工作原理 181
6.9.5 步進電機的控製電路 183
6.9.6 Stepper類定義 185
6.9.7 構造函數 186
6.9.8 setSpeed( ) 188
6.9.9 step( ) 188
6.10 TLC5940庫 189
6.10.1 Tlc5940類的定義 190
6.10.2 init( ) 191
6.10.3 update( ) 192
6.10.4 set( ) 193
6.10.5 get( ) 194
6.10.6 setAll( ) 194
6.10.7 clear( ) 195
6.11 OneWire庫 195
6.11.1 單總綫的結構 195
6.11.2 單總綫控製方式 195
6.11.3 單總綫信號形式 196
6.11.4 OneWire類 198
6.11.5 構造函數 200
6.11.6 reset( ) 200
6.11.7 write_bit( ) 201
6.11.8 read_bit( ) 202
6.11.9 write( ) 202
6.11.10 read( ) 203
6.11.11 select( ) 203
6.11.12 skip( ) 204
6.12 XBee庫 204
6.12.1 XBee類定義 204
6.12.2 構造函數 205
6.12.3 begin( ) 206
6.12.4 readPacket( ) 206
6.12.5 send( ) 209
6.13 創建自己的庫 210
6.13.1 庫的功能—Morse 210
6.13.2 MorseCode類的定義 213
6.13.3 MorseCode類的成員函數 214
6.13.4 MorseCode庫的使用 222
6.13.5 關鍵字的定義 223
第7章 無綫模塊的應用 224
7.1 APC220 224
7.1.1 APC220性能指標 224
7.1.2 模塊引腳定義 226
7.1.3 模塊的使用 226
7.1.4 注意事項 227
7.2 DFduino wireless 228
7.2.1 DFduino wireless性能指標 228
7.2.2 模塊引腳定義 229
7.2.3 模塊的使用 229
7.3 Bluetooth V3 231
7.3.1 Bluetooth V3性能指標 231
7.3.2 模塊引腳定義 232
7.3.3 模塊的使用 232
7.4 XBee和XBee PRO 234
7.4.1 XBee及XBee PRO性能指標 235
7.4.2 模塊引腳定義 235
7.4.3 模塊的使用 236
7.4.4 程序設計 236
第三篇 應用篇
第8章 打造自己的遙控履帶車 242
8.1 履帶車的驅動 242
8.1.1 實現功能 242
8.1.2 所需器材 242
8.1.3 硬件連接 243
8.1.4 程序設計 246
8.1.5 MotorCar類 251
8.1.6 類的應用 255
8.2 添加感知器件 257
8.2.1 實現功能 257
8.2.2 所需器材 257
8.2.3 器材介紹 257
8.2.4 硬件連接 258
8.2.5 程序設計 258
8.3 添加無綫模塊 261
8.3.1 實現功能 261
8.3.2 所需器材 261
8.3.3 硬件連接 261
8.3.4 程序設計 262
8.4 製作遙控器 264
8.4.1 實現功能 264
8.4.2 所需器材 265
8.4.3 硬件連接 265
8.4.4 程序設計 265
8.5 履帶車遙控調速 267
8.5.1 實現功能 267
8.5.2 程序設計 267
8.6 添加無綫攝像頭 272
8.6.1 實現功能 272
8.6.2 所需器材 272
8.6.3 器材介紹 272
8.6.4 硬件連接 273
8.6.5 程序設計 277
8.7 環境信息獲取器件 283
8.7.1 實現功能 283
8.7.2 所需器材 284
8.7.3 器材介紹 284
8.7.4 硬件連接 285
8.7.5 程序設計 286
第9章 仿生機器人 295
9.1 遙控機械臂 295
9.1.1 實例功能 295
9.1.2 器材列錶 295
9.1.3 搭建硬件環境 296
9.1.4 安裝控製部分 298
9.1.5 Wii遊戲手柄 298
9.1.6 機械臂程序設計 300
9.2 雙足機器人 304
9.2.1 實例功能 304
9.2.2 器材列錶 304
9.2.3 搭建硬件環境 305
9.2.4 雙足機器人程序設計 307
9.2.5 PC調試軟件編寫 310
9.2.6 雙足機器人的調試 317
附錄A Arduino引腳與AVR單片機管腳對應關係 319
附錄B Arduino擴展闆 320
附錄C 其他可擴展模塊 322
· · · · · · (
收起)