前言1
第1章 入門指南11
1.0 概述11
1.1 安裝集成開發(fā)環(huán)境15
1.2 安裝Arduino板19
1.3 使用集成開發(fā)環(huán)境配制一個Arduino草圖 21
1.4 上傳和運行Blink草圖24
1.5 創(chuàng)建和保存草圖25
1.6 第一個簡單的Arduino 項目28
1.7 使用不包含在標準發(fā)布庫中的開發(fā)板33
1.8 使用32位Arduino板(或兼容板)36
第2章 Arduino編程40
2.0 簡介40
2.1 典型的Arduino sketch41
2.2 使用簡單基本類型(變量)42
2.3 使用浮點數45
2.4 使用數組48
2.5 使用Arduino字符串函數51
2.6 使用C字符串56
2.7 將逗號分隔的文本拆分為組57
2.8 將數字轉換為字符串60
2.9 將字符串轉換為數字62
2.10 將代碼結構化為功能塊65
2.11 從函數返回多個值69
2.12 條件語句72
2.13 重復一個語句序列73
2.14 用計數器重復陳述75
2.15 跳出循環(huán)77
2.16 基于單個變量采取不同的操作79
2.17 比較字符和數字值81
2.18 字符串的比較83
2.19 執(zhí)行邏輯比較85
2.20 執(zhí)行位運算86
2.21 復合運算和賦值88
第3章 數學運算90
3.0 簡介90
3.1 加減乘除90
3.2 讓變量遞增或者遞減92
3.3 兩數相除的余數93
3.4 獲取絕對值94
3.5 約束一個數為指定范圍內的值95
3.6 找出最大值或者最小值96
3.7 冪運算97
3.8 計算平方根98
3.9 浮點數向上和向下取整98
3.10 三角函數99
3.11 隨機數100
3.12 設置和讀取位103
3.13 移位操作107
3.14 截取整型或者長整型的高位和低位字節(jié)108
3.15 通過高字節(jié)和低字節(jié)組成一個整型或者長整型110
第4章 串口通信113
4.0 簡介113
4.1 從Arduino發(fā)送消息到計算機119
4.2 發(fā)送格式化的文本和數值數據123
4.3 Arduino接收串口數據128
4.4 在單條消息中發(fā)送多個文本字段132
4.5 在Arduino上從單條消息中接收多個文本字段139
4.6 從Arduino發(fā)送二進制數據141
4.7 在計算機上接收來自Arduino的二進制數據146
4.8 從Processing發(fā)送二進制數據到Arduino148
4.9 發(fā)送多個Arduino引腳的值151
4.10 將Arduino數據記錄到計算機文件中155
4.11 發(fā)送數據到多個串口設備158
4.12 從多個串口設備接收數據162
4.13 在樹莓派上使用Arduino167
第5章 簡單的數字輸入和模擬輸入172
5.0簡介172
5.1使用開關176
5.2使用一個無外部電阻器的開關179
5.3 按下開關時進行可靠的檢測(去抖動)181
5.4確定開關被按下的時間184
5.5讀取鍵盤189
5.6讀取模擬值192
5.7 改變數值范圍194
5.8 讀取6個以上的模擬輸入196
5.9測量5V內的電壓199
5.10 響應電壓變化202
5.11測量大于5V的電壓(分壓器)204
第6章 獲取傳感器的輸入206
6.0 簡介206
6.1 一個內置多個傳感器的Arduino208
6.2 運動檢測211
6.3 檢測光強214
6.4 檢測生物的動作216
6.5 測量距離218
6.6 精確測量距離223
6.7 檢測振動225
6.8 檢測聲音227
6.9 測量溫度231
6.10 讀取 RFID(NFC)標簽235
6.11 追蹤旋轉動作238
6.12 在繁忙程序里使用中斷追蹤旋轉動作241
6.13 使用鼠標243
6.14 從GPS獲取位置信息247
6.15 使用陀螺儀檢測旋轉252
6.16 檢測方向254
6.17 讀取加速度計257
第7章 可視化輸出260
7.0 簡介260
7.1 連接和使用LED264
7.2 調節(jié)LED的亮度267
7.3 驅動高能耗LED268
7.4 調節(jié)LED的顏色270
7.5 控制大量彩色LED273
7.6 串聯多個LED:繪制條形圖276
7.7 串聯多個LED:流水序列281
7.8 用Multiplexing控制LED矩陣282
7.9 用LED矩陣顯示圖像286
7.10 控制LED矩陣:查理復用算法289
7.11 驅動7段LED295
7.12 驅動多位7段顯示屏:多路復用298
7.13 用最少的引腳驅動多位7段顯示屏300
7.14 用MAX72xx移位寄存器控制一組LED302
7.15 使用PWM擴展芯片實現增加模擬輸出數量304
7.16 用模擬面板儀表作為輸出307
第8章 物理輸出309
8.0 簡介309
8.1使用伺服控制旋轉位置312
8.2使用電位計或傳感器控制伺服旋轉314
8.3 控制連續(xù)旋轉伺服裝置的速度316
8.4 使用計算機命令控制伺服系統(tǒng)318
8.5驅動無刷電機(使用hobby伺服速度控制器)319
8.6 控制電磁閥和繼電器320
8.7 使物體振動322
8.8 使用晶體管驅動有刷電機324
8.9 用H橋控制有刷電機的方向326
8.10用H橋控制有刷電機的方向和速度329
8.11使用傳感器控制有刷電機的方向和速度331
8.12 驅動雙極步進電機337
8.13 驅動雙極步進電機(使用易驅板)340
8.14 使用ULN2003A驅動步進電機343
第9章 音頻輸出346
9.0 簡介346
9.1 播放音調349
9.2 演奏簡單的旋律351
9.3 同時產生多個音調353
9.4 在不干擾PWM的情況下生成音頻音調355
9.5 控制MIDI357
9.6 制作音頻合成器360
9.7 實現高質量音頻合成362
第10章 遠程控制外部設備365
10.0 簡介365
10.1 響應紅外遙控器366
10.2 解碼紅外遙控信號368
10.3 模擬遠程控制信號372
10.4 控制數碼相機375
10.5 通過Hack遠程控制開關控制交流設備377
第11章 使用顯示屏381
11.0 簡介381
11.1連接和使用文字LCD381
11.2 文本格式化385
11.3 打開或關閉光標和顯示屏388
11.4 滾動文本389
11.5 顯示特殊符號392
11.6 創(chuàng)建自定義字符395
11.7 顯示大于單個字符的符號397
11.8 顯示小于單個字符的像素400
11.9 選擇圖形LCD402
11.10 控制全彩LCD404
11.11 控制單色OLED407
第12章 使用時間和日期412
12.0 簡介412
12.1 使用毫秒確定持續(xù)時間412
12.2 在代碼中創(chuàng)建暫停413
12.3 更精確地測量脈沖的持續(xù)時間417
12.4 使用Arduino作為時鐘419
12.5 創(chuàng)建定時任務以定期調用函數427
12.6 使用實時時鐘430
第13章 利用I2C和SPI進行通信435
13.0 簡介435
13.1 連接多個I2C設備441
13.2 連接多個SPI設備444
13.3 使用I2C集成電路447
13.4 使用I2C端口擴展器增加I/O450
13.5 兩個或多個Arduino板之間的通信454
13.6 使用Wii nunchuck加速度計458
第14章 簡單的無線通信464
14.0簡介464
14.1 使用低成本無線模塊發(fā)送消息464
14.2 通過ZigBee或802.15.4網絡連接Arduino471
14.3 向指定XBee發(fā)送消息478
14.4在XBee之間發(fā)送傳感器數據481
14.5 激活連接到XBee的執(zhí)行器486
14.6 與經典藍牙設備通信491
14.7 與藍牙低能耗設備通信494
第15章 Wi-Fi和以太網497
15.0 簡介497
15.1 連接到以太網499
15.2 自動獲取你的IP地址503
15.3 發(fā)送和接收簡單消息(UDP)504
15.4 使用帶有內置Wi-Fi的Arduino512
15.5 使用低成本模塊連接到Wi-Fi515
15.6從Web響應中提取數據520
15.7 使用XML從Web服務器請求數據525
15.8 將Arduino設置為Web服務器527
15.9 處理傳入的Web請求532
15.10 處理特定頁面的傳入請求536
15.11 使用HTML格式化Web服務器響應541
15.12 使用表單請求Web數據(POST)545
15.13 提供包含大量數據的網頁 549
15.14 發(fā)送Twitter消息556
15.15 物聯網數據交換558
15.16 向MQTT代理發(fā)布數據559
15.17 從MQTT消息服務訂閱數據561
15.18 從互聯網時間服務器獲取時間563
第16章 庫的使用、修改和創(chuàng)建569
16.0 簡介569
16.1 使用內建的庫569
16.2 安裝第三方庫572
16.3 修改庫574
16.4 創(chuàng)建自己的庫578
16.5 基于其他庫開發(fā)新庫583
16.6 更新第三方庫適配Arduino 1.0589
第17章 高級編程和內存操作591
17.0 簡介591
17.1 理解Arduino編譯過程592
17.2 確定已用和空閑RAM的數量595
17.3 在程序存儲器中保存和查找數值598
17.4 在程序存儲器中保存和查找字符串601
17.5 利用#define 和const 代替整數603
17.6 使用條件編譯604
第18章 使用控制器芯片硬件607
18.0 簡介607
18.1 在EEPROM中持久存儲數據611
18.2 當引腳狀態(tài)發(fā)生變化時自動響應615
18.3 執(zhí)行重復任務617
18.4 設置定時器脈沖寬度和持續(xù)時間620
18.5 創(chuàng)建脈沖發(fā)生器621
18.6 改變定時器的PWM頻率624
18.7 脈沖計數626
18.8 更精確地測量脈沖628
18.9 快速測量模擬值631
18.10 降低電池消耗633
18.11 快速設置數字引腳635
18.12 使用編程器上傳sketch638
18.13 替換Arduino的bootloader639
18.14 移動PC或者Mac的鼠標指針640
附錄A 電子元件643
附錄B 使用原理圖和數據手冊647
附錄C 構建和連接電路652
附錄D 軟件異常排查655
附錄E 硬件排錯技巧659
附錄F 數字和模擬引腳661
附錄G ASCII和擴展字符集664