新的Arduino編程指南,無需任何編程經(jīng)驗(yàn)! 本版進(jìn)行了全面更新,逐步介紹了如何使用修改后的C語言和Arduino IDE快速、輕松地編寫所有基于Arduino模型的程序。電子學(xué)大師Simon Monk通過簡(jiǎn)單的語言和清晰的指導(dǎo),引導(dǎo)你快速掌握所有概念。書中提供了數(shù)十個(gè)易跟學(xué)的示例和高質(zhì)量的插圖,所有的sketch示例程序都可直接使用,也可根據(jù)需要進(jìn)行修改。書中還介紹了使用Arduino框架編寫其他主流開發(fā)板程序的全部新知識(shí)。 內(nèi)容涵蓋 ● 配置Arduino并開始編寫sketch程序 ● 了解C語言和Arduino IDE的基本知識(shí) ● 向sketch程序添加函數(shù)、數(shù)組和字符串 ● 設(shè)置Arduino的數(shù)字和模擬I/O ● 使用Arduino兼容板,包括ESP32、Pico和micro:bit ● 使用內(nèi)置和自定義Arduino庫 ● 編寫sketch程序,將數(shù)據(jù)存儲(chǔ)在EPROM或閃存中 ● 實(shí)現(xiàn)與各種顯示器(包括LCD)的接口 ● 連接到Internet并將Arduino配置為Web服務(wù)器 ● 開發(fā)有趣且實(shí)用的物聯(lián)網(wǎng)程序
新的Arduino編程指南,無需任何編程經(jīng)驗(yàn)!
本版進(jìn)行了全面更新,逐步介紹了如何使用修改后的C語言和Arduino IDE快速、輕松地編寫所有基于Arduino模型的程序。電子學(xué)大師Simon Monk通過簡(jiǎn)單的語言和清晰的指導(dǎo),引導(dǎo)你快速掌握所有概念。書中提供了數(shù)十個(gè)易跟學(xué)的示例和高質(zhì)量的插圖,所有的sketch示例程序都可直接使用,也可根據(jù)需要進(jìn)行修改。書中還介紹了使用Arduino框架編寫其他主流開發(fā)板程序的全部新知識(shí)。
內(nèi)容涵蓋
● 配置Arduino并開始編寫sketch程序
● 了解C語言和Arduino IDE的基本知識(shí)
● 向sketch程序添加函數(shù)、數(shù)組和字符串
● 設(shè)置Arduino的數(shù)字和模擬I/O
● 使用Arduino兼容板,包括ESP32、Pico和micro:bit
● 使用內(nèi)置和自定義Arduino庫
● 編寫sketch程序,將數(shù)據(jù)存儲(chǔ)在EPROM或閃存中
● 實(shí)現(xiàn)與各種顯示器(包括LCD)的接口
● 連接到Internet并將Arduino配置為Web服務(wù)器
● 開發(fā)有趣且實(shí)用的物聯(lián)網(wǎng)程序
在創(chuàng)建基于微控制器的項(xiàng)目方面,Arduino接口的開發(fā)板提供了一種低成本、便于使用的技術(shù)。只需要掌握很少的電子學(xué)基礎(chǔ)知識(shí),就可以讓Arduino實(shí)現(xiàn)從控制布景燈光到管理太陽能系統(tǒng)的電力在內(nèi)的方方面面。
有很多基于項(xiàng)目的書籍會(huì)向你介紹如何把設(shè)備連接到Arduino上,包括本書作者的30 Arduino Projects for the Evil Genius一書。但是,本書重點(diǎn)關(guān)注如何使用Arduino IDE來編寫Arduino程序和Arduino兼容板。
本書將講解如何讓Arduino編程變得簡(jiǎn)單有趣,避免使用那些往往會(huì)讓項(xiàng)目受阻的、棘手的代碼。在本書的指導(dǎo)下,你會(huì)從Arduino使用的最基礎(chǔ)的C語言開始,一步步了解Arduino編程過程。
0.1 什么是Arduino
Arduino是指用于微控制器板編程的硬件和軟件環(huán)境。因?yàn)槲⒖刂破靼逵懈鞣N形狀和尺寸,所以標(biāo)準(zhǔn)開發(fā)板將選擇最受歡迎的官方出品的Arduino板Arduino Uno。
Arduino Uno是一款小型微控制器開發(fā)板,使用USB(Universal Serial Bus,通用串口總線)接口連接到計(jì)算機(jī),并且擁有大量可以用來連接像電機(jī)、繼電器、光傳感器、激光二極管、擴(kuò)音器、麥克風(fēng)等外部電子元器件的接口。這些外部設(shè)備可通過計(jì)算機(jī)的USB接口連接,可通過電池或外部電源供電。它們可由計(jì)算機(jī)直接控制或在編程后獨(dú)立運(yùn)行。
官方出品的Arduino開發(fā)板和許多Arduino兼容板的設(shè)計(jì)是開源的,這意味著任何人都可以制作Arduino兼容的開發(fā)板。這種競(jìng)爭(zhēng)帶來了低成本的開發(fā)板和在標(biāo)準(zhǔn)開發(fā)板基礎(chǔ)上加以改進(jìn)的各類板型。
可通過在頂部插入擴(kuò)展板的方式對(duì)Arduino主控板的功能進(jìn)行擴(kuò)充。
Arduino編程軟件簡(jiǎn)單易用,并且可免費(fèi)在Windows、macOS和Linux系統(tǒng)中使用。該軟件還有一個(gè)基于瀏覽器的版本。
0.2 需要準(zhǔn)備什么
本書面向初學(xué)者,但也可為那些已使用過Arduino,并且想了解關(guān)于Arduino編程的更多知識(shí),或者想深入探究其中原理的人帶來幫助。依照這個(gè)定位,除了第10章使用了與 ESP32 Arduino兼容的開發(fā)板,本書將重點(diǎn)放在了Arduino Uno開發(fā)板的使用上。當(dāng)然,幾乎所有的代碼都可以不經(jīng)修改地直接在所有Arduino模型和各種與Arduino兼容的微控制器板上使用。
學(xué)習(xí)本書,讀者不需要擁有任何編程經(jīng)驗(yàn)或技術(shù)背景,本書的全部練習(xí)也不需要去動(dòng)手焊接。你所需要的就是對(duì)創(chuàng)造的渴望。
如果想充分利用本書并嘗試其中的一些實(shí)驗(yàn),那么手頭有以下物品是很有幫助的:
● 幾根實(shí)心導(dǎo)線
● 一臺(tái)便宜的數(shù)字萬用表
只需要花幾塊錢就可以很容易地從電子元器件商店或網(wǎng)絡(luò)經(jīng)銷商(如Adafruit或Sparkfun)那里買到它們。當(dāng)然,你還需要一塊Arduino Uno開發(fā)板。在第10章,還需要用到一款便宜的ESP32 Arduino兼容軟件,如Lolin32 Lite。
如果想要進(jìn)一步了解并嘗試一些使用顯示器和網(wǎng)絡(luò)連接的實(shí)驗(yàn),需要從網(wǎng)上購(gòu)買一些擴(kuò)展板,詳見第9章和第10章。
0.3 如何使用本書
本書在內(nèi)容安排上循序漸進(jìn),能夠讓你以一種簡(jiǎn)單的方式上手。但是當(dāng)你找到合適的定位并開始閱讀本書時(shí),你可能會(huì)發(fā)現(xiàn)自己可以跳過或只需要粗略閱讀前面的章節(jié)。
本書按如下順序組織章節(jié)內(nèi)容。
第1章:Arduino入門。你將使用Arduino開發(fā)板開始自己的首個(gè)實(shí)驗(yàn),即安裝軟件,上電,然后上傳你的第一個(gè)項(xiàng)目。
第2章:C語言基礎(chǔ)。該章涵蓋C語言的基礎(chǔ)語法。對(duì)于編程初學(xué)者,該章也可作為一本普通的編程教材。
第3章:函數(shù)。該章講解在Arduino項(xiàng)目中使用和編寫函數(shù)的關(guān)鍵概念。這些項(xiàng)目都包含可運(yùn)行的示例代碼以進(jìn)行演示。
第4章:數(shù)組和字符串。該章介紹如何使用比整型變量更高級(jí)的數(shù)據(jù)結(jié)構(gòu)。通過逐步開發(fā)一個(gè)摩爾斯電碼例程來解釋這些概念。
第5章:輸入和輸出。該章介紹如何在程序中使用Arduino開發(fā)板上的數(shù)字和模擬輸入/輸出接口。通過萬用表有助于了解Arduino輸入/輸出接口上所發(fā)生的情況。
第6章:開發(fā)板。該章介紹各種Arduino和Arduino兼容板,以幫助你為項(xiàng)目選擇合適的板。
第7章:高級(jí)Arduino。該章介紹如何使用Arduino標(biāo)準(zhǔn)庫中的Arduino函數(shù)以及Arduino編程的一些其他高級(jí)功能。
第8章:數(shù)據(jù)存儲(chǔ)。該章介紹如何編寫可在EEPROM (Electrically Erasable Programmable Read Only Memory,電可擦可編程只讀存儲(chǔ)器)中存儲(chǔ)數(shù)據(jù)并利用Arduino內(nèi)置閃存(Flash Memory)的項(xiàng)目。
第9章:顯示器。該章講解如何將Arduino和顯示器連接起來并制作簡(jiǎn)單的USB留言板。
第10章:Arduino物聯(lián)網(wǎng)程序設(shè)計(jì)。該章講解如何讓Arduino像Web服務(wù)器那樣運(yùn)行并使用服務(wù)與互聯(lián)網(wǎng)通信。
0.4 下載資源
本書由專門的網(wǎng)站(見鏈接[1])提供技術(shù)支持。
可從這個(gè)網(wǎng)站找到本書使用的所有源代碼以及其他資源,如勘誤表。也可通過掃描封底的二維碼來獲取這些資源。
0.5 有關(guān)書中鏈接的說明
注意,讀者在閱讀本書時(shí)會(huì)看到一些有關(guān)鏈接的編號(hào),其形式是數(shù)字編號(hào)加方括號(hào)([]),例如[1]表示讀者可掃描本書封底二維碼下載Links文件,找到對(duì)應(yīng)章節(jié)中[1]所指向的鏈接。
Simon Monk博士擁有控制論和計(jì)算機(jī)科學(xué)學(xué)士學(xué)位以及軟件工程博士學(xué)位。從少年時(shí)代起,他就是一名活躍的電子玩家。如今,他成了一名優(yōu)秀的作家,對(duì)Arduino和樹莓派有獨(dú)到的見解和洞察力。Monk博士撰寫了20余本有關(guān)創(chuàng)客和電子題材的著作, 包括暢銷圖書Programming Arduino、 30 Arduino Projects for the Evil Genius、Hacking Electronics 和Make Your Own PCBs with Fritzing。Monk博士還為MonkMakes有限公司設(shè)計(jì)產(chǎn)品。
第1章 Arduino入門 1
1.1 微控制器 1
1.2 Arduino Uno開發(fā)板的探索之旅 3
1.2.1 電源接口 3
1.2.2 供電接口 4
1.2.3 模擬輸入接口 4
1.2.4 數(shù)字接口 4
1.2.5 微控制器 5
1.2.6 其他元件 5
1.3 支持WiFi的Arduino兼容板 6
1.4 Arduino的起源 7
1.5 上電 8
1.6 安裝軟件 8
1.7 上傳你的第一個(gè)sketch程序 10
1.8 Arduino應(yīng)用程序 14
1.9 本章小結(jié) 16
第2章 C語言基礎(chǔ) 17
2.1 編程 17
2.2 什么是編程語言 18
2.3 Blink再來一次 23
2.4 變量 25
2.5 C語言實(shí)驗(yàn) 27
2.6 數(shù)值變量和算術(shù)運(yùn)算符 28
2.7 控制語句 30
2.7.1 if語句 30
2.7.2 for語句 32
2.7.3 while語句 35
2.8 常量 36
2.9 本章小結(jié) 36
第3章 函數(shù) 37
3.1 什么是函數(shù) 37
3.2 參數(shù) 38
3.3 全局變量、局部變量和靜態(tài)變量 39
3.4 返回值 42
3.5 其他變量類型 43
3.5.1 float(浮點(diǎn)型) 43
3.5.2 Boolean(布爾型) 44
3.5.3 其他數(shù)據(jù)類型 45
3.6 編碼風(fēng)格 47
3.6.1 縮進(jìn) 47
3.6.2 花括號(hào) 48
3.6.3 空白 48
3.6.4 注釋 49
3.7 本章小結(jié) 50
第4章 數(shù)組和字符串 51
4.1 數(shù)組 51
4.2 字符串?dāng)?shù)組 55
4.2.1 字符串常量 56
4.2.2 字符串變量 56
4.3 摩爾斯電碼轉(zhuǎn)換器 57
4.3.1 數(shù)據(jù) 58
4.3.2 全局變量和setup函數(shù) 59
4.3.3 loop函數(shù) 60
4.3.4 flashSequence函數(shù) 62
4.3.5 flashDotOrDash函數(shù) 63
4.3.6 整合所有部分 63
4.3.7 String類 65
4.4 本章小結(jié) 66
第5章 輸入和輸出 67
5.1 數(shù)字輸出 67
5.2 數(shù)字輸入 70
5.2.1 上拉電阻 71
5.2.2 內(nèi)部上拉電阻 73
5.2.3 防抖動(dòng) 74
5.3 模擬輸出 79
5.4 模擬輸入 81
5.5 本章小結(jié) 82
第6章 開發(fā)板 83
6.1 Arduino Nano 83
6.2 Arduino Pro Mini 85
6.3 Breadboard 85
6.4 Boards Manager 86
6.5 ESP32開發(fā)板 88
6.6 Raspberry Pi Pico 90
6.7 BBC micro:bit 91
6.8 Adafruit Feather系統(tǒng) 92
6.9 本章小結(jié) 93
第7章 高級(jí)Arduino 95
7.1 隨機(jī)數(shù) 95
7.2 數(shù)學(xué)函數(shù) 97
7.3 位操作 98
7.4 高級(jí)I/O 100
7.4.1 生成音調(diào) 100
7.4.2 移位寄存器 101
7.4.3 中斷 102
7.4.4 編譯時(shí)常量 104
7.4.5 Arduino Web編輯器 105
7.5 本章小結(jié) 105
第8章 數(shù)據(jù)存儲(chǔ) 107
8.1 大型數(shù)據(jù)結(jié)構(gòu) 107
8.2 將數(shù)據(jù)存儲(chǔ)在閃存中 108
8.3 EEPROM 110
8.3.1 在EEPROM中存儲(chǔ)整數(shù) 112
8.3.2 將任何內(nèi)容寫入EEPROM 113
8.3.3 在EEPROM中存儲(chǔ)浮點(diǎn)數(shù) 115
8.3.4 在EEPROM中存儲(chǔ)字符串 115
8.3.5 清除EEPROM中的內(nèi)容 117
8.4 壓縮 117
8.5 本章小結(jié) 119
第9章 顯示器 121
9.1 字母數(shù)字LCD顯示器 121
9.2 USB留言板 122
9.3 使用顯示器 125
9.4 其他LCD庫函數(shù) 125
9.5 OLED圖形顯示器 126
9.6 連接OLED顯示器 127
9.7 軟件 127
9.8 本章小結(jié) 130
第10章 Arduino物聯(lián)網(wǎng)程序設(shè)計(jì) 131
10.1 IoT開發(fā)板 131
10.2 將ESP32安裝到Arduino IDE中 132
10.3 連接WiFi 133
10.4 運(yùn)行Web服務(wù)器 135
10.5 提供傳感器讀數(shù) 137
10.6 提供傳感器讀數(shù)改進(jìn)版 138
10.7 從網(wǎng)頁打開和關(guān)閉內(nèi)置的LED 142
10.8 連接到Web服務(wù) 144
10.9 本章小結(jié) 149