圖書簡介
全書共16章,分為3篇。內容涉及Arduino認識、電路設計軟體Fritzing、ArdunioIDE的安裝和使用、程式語言基礎、通用元器件、LED、蜂鳴器、按鈕、電位器、光敏電阻、火焰感測器、濕度感測器、紅外線收發、液位感測器、LCD、麥克風、超音波、RFID、RTC、伺服電機、步進電機等。最後,本書還講解了一個創新性實戰案例——打地鼠,幫助讀者擴展思路,啟發創意。由於本書內容從Arduino基礎部分開始,所以非常適合入門讀者學習。同時,在講解的時候涉及了大量各種器件的套用,所以本書也適合作為電子設計人員閱讀和參考。
內容體系結構
第1篇 Arduino開發基礎(第1~4章)
本篇主要內容包括:Arduino概述、電路設計軟體Fritzing、Arduino IDE的安裝與使用和Arduino程式語言基礎。通過本篇的學習,讀者可以對Arduino的設計理念、型號,以及設計軟體和語言有最基本的掌握。
第2篇 Arduino元器件(第5~15章)
本篇主要內容包括:通用元器件介紹、發光二極體LED、蜂鳴器、按鈕、電位器、光敏電阻和常見感測器、LCD、聲音模組、RFID、實時時鐘和控制電機。通過本篇的學習,讀者可以掌握最常用的Arduino周邊設備的工作原理和使用方法。
第3篇 Arduino實戰案例(第16章)
本篇只包含一個章節,這個章節中實現了一個打地鼠的遊戲。通過本篇的學習,讀者可以將之前使用的器件組合起來使用,並且可以學習一些軟體開發方面的思想。
學習建議
動手操作:學習Arduino不只是要學習理論知識,而且要學會連線電路,所以,必須動手完成書中的每一個實例。
* 要有耐心:有一些器件有非常多的針腳,將它們在麵包板上正確地連線並不容易,所以必須要有耐心。
* 保持細心:電子設計不同於編程,如果出現錯誤很可能損壞硬體,甚至危害人身安全,所以在實際操作過程中一定要注意書中給出的提示信息。
* 參與交流:獨自學習的道路最為坎坷。這時,能找到幾個朋友一起學習就幸福多了。多參與我們的技術群和論壇討論,可以擴展視野,交流經驗,了解別人的學習心得。
讀者對象
* 電子設計愛好者;
* 大中專院校的學生;
* 電子產品設計人員。
本書作者
本書由山東中醫藥大學理工學院的楊佩璐及中國電子商務協會電子商務研究的任昱衡共同主筆編寫。其中,楊佩璐編寫了本書的第1~8章,任昱衡編寫了本書的第9~16章。其他參與編寫的人員有丁士鋒、胡可、姜永艷、靳鯤鵬、孔峰、馬林、明廷堂、牛艷霞、孫澤軍、王麗、吳紹興、楊宇、游梁、張建林、張起棟、張喆、鄭偉、鄭玉暉。
閱讀本書的過程中若有任何疑問,都可以發郵件或者在論壇和QQ群里提問,會有專人為您解答。最後順祝各位讀者讀書快樂!
目 錄
第1篇 Arduino開發基礎
第1章 Arduino概述2
1.1 Arduino的起源2
1.2 術語Arduino的含義2
1.2.1 Arduino的硬體2
1.2.2 Arduino的軟體4
1.2.3 Arduino的社區4
1.3 Arduino的硬體產品——主機板5
1.3.1 Arduino UNO5
1.3.2 Arduino Leonardo6
1.3.3 Arduino Due6
1.3.4 Arduino Yún7
1.3.5 Arduino Tre7
1.3.6 Arduino Micro8
1.3.7 Arduino Robot8
1.3.8 Arduino Esplora9
1.3.9 Arduino Mega系列10
1.3.10 Arduino Ethernet11
1.3.11 Arduino Mini12
1.3.12 LiLyPad Arduino系列12
1.3.13 Arduino Nano13
1.3.14 Arduino Pro系列14
1.3.15 Arduino Fio15
1.3.16 Arduino Zero16
1.4 Arduino的硬體產品——盾板16
1.4.1 Arduino GSM盾板16
1.4.2 Arduino Ethernet盾板17
1.4.3 Arduino WiFi盾板18
1.4.4 Arduino Wireless SD盾板18
1.4.5 Arduino Motor盾板19
1.4.6 Arduino Wireless Proto盾板19
1.4.7 Arduino Proto盾板20
1.5 Arduino硬體產品——新手套件20
1.6 Arduino硬體產品——附屬檔案21
1.6.1 TFT LCD螢幕21
1.6.2 微型USB/Serial適配器22
1.7 Arduino UNO22
1.7.1 Arduino UNO上的主要元器件22
1.7.2 Arduino UNO上的連線埠22
1.8 Arduino可以做什麼24
第2章 電路設計軟體Fritzing25
2.1 Fritzing基礎25
2.1.1 Fritzing的下載與安裝25
2.1.2 認識Fritzing的主面板26
2.2 Fritzing的元件庫30
2.2.1 元件的組織形式30
2.2.2 導入元件庫31
2.2.3 導出元件庫31
2.3 編輯元件32
2.3.1 Fritzing的元件編輯器33
2.3.2 製作元件的麵包板視圖34
2.3.3 製作元件的原理圖視圖38
2.3.4 製作元件的PCB視圖39
2.3.5 元件編輯器的圖示和元數據視圖41
2.3.6 關聯所有視圖的針腳42
2.4 畫出手電筒的電路圖44
第3章 Arduino IDE的安裝與使用46
3.1 Arduino IDE的安裝46
3.1.1 Arduino IDE的安裝包下載46
3.1.2 使用二進制安裝包安裝Arduino IDE47
3.1.3 使用壓縮檔形式安裝Arduino IDE48
3.1.4 Arduino IDE中文化49
3.2 Windows 7下的Arduino驅動安裝51
3.2.1 自動安裝Arduino驅動51
3.2.2 手動安裝Arduino驅動53
3.3 在Arduino上運行程式55
3.3.1 Arduino IDE主界面簡介55
3.3.2 運行一個閃爍LED示例程式56
3.3.3 運行一個控制台輸出示例程式57
3.4 Arduino IDE編碼流程58
3.4.1 創建、保存和打開源檔案58
3.4.2 編輯源檔案61
3.4.3 校驗源檔案61
3.4.4 下載程式到開發板63
3.5 高級的Arduino IDE——MariaMole63
第4章 Arduino程式語言基礎65
4.1 Arduino程式必要的setup()和loop()函式65
4.2 程式中的值66
4.2.1 變數和常量66
4.2.2 變數類型66
4.2.3 變數的作用域和修飾符68
4.2.4 獲取變數大小的工具——sizeof()函式68
4.2.5 變數類型轉換69
4.3 運算符69
4.3.1 數學運算符69
4.3.2 比較運算符70
4.3.3 布爾運算符70
4.3.4 指針運算符71
4.3.5 位運算符71
4.3.6 複合運算符71
4.4 語法進階72
4.4.1 預定義命令#define和#include72
4.4.2 語句和語句塊72
4.4.3 注釋73
4.5 控制結構73
4.5.1 條件判斷語句if和if…else74
4.5.2 跳轉語句break、continue、return和goto74
4.5.3 分支語句switch…case74
4.5.4 循環語句while和do…while75
4.5.5 循環語句for76
4.6 函式76
4.6.1 系統函式77
4.6.2 調用函式77
4.6.3 自定義函式77
4.7 C++語言的類和對象78
4.7.1 類78
4.7.2 對象79
4.8 庫80
4.8.1 Arduino官方庫80
4.8.2 使用第三方庫和創建自己的庫81
第2篇 Arduino元器件
第5章 通用元器件介紹84
5.1 導線、電纜和連線器84
5.2 電阻85
5.2.1 概念85
5.2.2 阻值識別85
5.2.3 歐姆定律86
5.2.4 電阻的作用86
5.2.5 電阻的串聯與並聯86
5.3 麵包板87
第6章 發光二極體LED88
6.1 使用到的專用器件88
6.2 驅動單個LED程式90
6.2.1 使用數字針腳點亮LED91
6.2.2 使用模擬針腳點亮LED92
6.2.3 使用LED傳送S.O.S摩爾斯電碼93
6.2.4 使用LED傳送摩爾斯電碼95
6.2.5 LED跑馬燈96
6.2.6 使用LED模擬交通燈97
6.3 驅動LED點陣99
6.3.1 LED點陣顯示錶情99
6.3.2 LED點陣跑馬燈102
6.3.3 回紋燈103
6.3.4 矩形回縮燈104
6.4 使用74HC595驅動LED105
6.4.1 74HC595使用方式106
6.4.2 使用74HC595驅動LED點陣110
6.5 使用MAX7219驅動LED112
6.5.1 MAX7219LED顯示驅動器112
6.5.2 MAX7219的數據格式114
6.5.3 MAX7219的暫存器114
6.5.4 LedControl庫117
6.5.5 Arduino通過MAX7219控制8*8LED點陣118
6.5.6 MAX7219級聯控制8*40LED點陣124
6.6 RGB三色LED127
6.7 七段數碼管129
6.7.1 Arduino直接控制七段數碼管129
6.7.2 Arduino通過74HC595控制一個七段數碼管131
6.7.3 使用兩個74HC595驅動4位七段數碼管133
6.7.4 Arduino通過MAX7219控制七段數碼管135
第7章 蜂鳴器139
7.1 蜂鳴器的工作原理及分類139
7.2 驅動蜂鳴器程式140
7.2.1 驅動有源蜂鳴器140
7.2.2 驅動無源蜂鳴器141
7.3 蜂鳴器使用實例142
7.3.1 使用無源蜂鳴器輸出7個基本音階142
7.3.2 使用無源蜂鳴器演奏音樂143
7.3.3 使用有源蜂鳴器傳送S.O.S摩爾斯電碼144
第8章 按鈕145
8.1 按鈕的作用及分類145
8.2 按鈕的實質146
8.3 按鈕的使用示例149
8.3.1 使用按鈕控制LED燈149
8.3.2 使用Arduino的中斷152
8.3.3 按鈕矩陣的使用154
8.3.4 使用按鈕矩陣模擬鋼琴157
第9章 電位器160
9.1 普通電位器160
9.2 遊戲搖桿160
9.3 使用示例161
9.3.1 讀取電位器的值161
9.3.2 使用電位器控制LED亮度162
9.3.3 使用電位器控制LED流水燈速度163
9.3.4 遊戲搖桿的使用164
第10章 光敏電阻和常見感測器168
10.1 光敏電阻168
10.1.1 光敏電阻套用原理168
10.1.2 光控燈170
10.2 火焰感測器172
10.3 溫濕度感測器174
10.3.1 精密攝氏溫度感測器LM35175
10.3.2 溫濕度感測器模組177
10.4 紅外線收發179
10.4.1 紅外線模組構成179
10.4.2 使用第三庫IRremote180
10.5 液位感測器185
10.5.1 接觸式液位感測器185
10.5.2 完善液位感測器188
第11章 LCD189
11.1 LCD模組LCD1602189
11.2 LCD控制庫LiquidCrystal190
11.2.1 LiquidCrystal八線模式190
11.2.2 LiquidCrystal四線模式192
11.3 LiquidCrystal_I2C庫194
第12章 聲音模組196
12.1 麥克風模組196
12.1.1 讀取麥克風數據196
12.1.2 聲控燈198
12.1.3 自適應聲控燈199
12.2 超音波模組199
12.2.1 超音波模組HC-SR04199
12.2.2 第三方庫NewPing200
12.2.3 超音波模組套用201
第13章 RFID——射頻識別203
13.1 RFID概述203
13.2 RFID硬體204
13.2.1 RFID讀/寫器204
13.2.2 RFID應答器205
13.3 為RFID編程211
13.3.1 讀取RFID應答器的出廠數據212
13.3.2 RFID開發流程214
13.3.3 操作RFID應答器的值塊215
13.3.4 操作RFID應答器讀寫塊219
13.4 簡易公交收繳費系統223
13.4.1 繳費系統223
13.4.2 收費系統227
第14章 實時時鐘——RTC230
14.1 RTC簡介230
14.2 DS1302積體電路230
14.3 DS1302工作原理232
14.3.1 CE和時鐘控制232
14.3.2 數據輸入和輸出233
14.3.3 時鐘/日曆233
14.3.4 防寫暫存器235
14.3.5 RAM暫存器235
14.3.6 涓流充電暫存器235
14.4 暫存器的突發模式236
14.5 第三方庫ds1302237
14.5.1 ds1302庫簡介237
14.5.2 使用ds1302庫設定日期和時間239
14.5.3 使用ds1302庫讀取日期和時間240
14.6 簡易LED時鐘242
第15章 伺服電機和步進電機245
15.1 伺服電機245
15.1.1 伺服電機工作原理245
15.1.2 伺服電機與Arduino247
15.1.3 使用Arduino官方庫Servo249
15.2 使用其他器件控制伺服電機252
15.2.1 使用旋轉電位器控制伺服電機252
15.2.2 使用按鈕開關控制伺服電機254
15.2.3 使用遊戲搖桿控制伺服電機258
15.2.4 使用遙控器控制伺服電機262
15.3 步進電機264
15.3.1 步進電機工作原理265
15.3.2 步進電機的類型267
15.3.3 28BYJ-48和ULN2003268
15.3.4 Arduino、ULN2003和28BYJ-48連線270
15.3.5 使用Arduino的官方庫Stepper271
15.3.6 自己實現28BYJ-48的控制函式274
第3篇 Arduino實戰案例
第16章 用Arduino做遊戲——打地鼠278
16.1 需求分析278
16.2 打地鼠——雛形280
16.2.1 實現隨機地鼠280
16.2.2 按鈕邏輯282
16.2.3 整合代碼286
16.3 打地鼠——高級287
16.3.1 加入擊中動畫288
16.3.2 加入隨機速度288
16.3.3 整合代碼289
16.4 打地鼠——終極291
16.4.1 加入積分系統291
16.4.2 將分數顯示在LED上293
16.4.3 整合代碼300