新的Arduino編程指南,無需任何編程經(jīng)驗! 本版進行了全面更新,逐步介紹了如何使用修改后的C語言和Arduino IDE快速、輕松地編寫所有基于Arduino模型的程序。電子學(xué)大師Simon Monk通過簡單的語言和清晰的指導(dǎo),引導(dǎo)你快速掌握所有概念。書中提供了數(shù)十個易跟學(xué)的示例和高質(zhì)量的插圖,所有的sketch示例程序都可直接使用,也可根據(jù)需要進行修改。書中還介紹了使用Arduino框架編寫其他主流開發(fā)板程序的全部新知識。 內(nèi)容涵蓋 ● 配置Arduino并開始編寫sketch程序 ● 了解C語言和Arduino IDE的基本知識 ● 向sketch程序添加函數(shù)、數(shù)組和字符串 ● 設(shè)置Arduino的數(shù)字和模擬I/O ● 使用Arduino兼容板,包括ESP32、Pico和micro:bit ● 使用內(nèi)置和自定義Arduino庫 ● 編寫sketch程序,將數(shù)據(jù)存儲在EPROM或閃存中 ● 實現(xiàn)與各種顯示器(包括LCD)的接口 ● 連接到Internet并將Arduino配置為Web服務(wù)器 ● 開發(fā)有趣且實用的物聯(lián)網(wǎng)程序
新的Arduino編程指南,無需任何編程經(jīng)驗!
本版進行了全面更新,逐步介紹了如何使用修改后的C語言和Arduino IDE快速、輕松地編寫所有基于Arduino模型的程序。電子學(xué)大師Simon Monk通過簡單的語言和清晰的指導(dǎo),引導(dǎo)你快速掌握所有概念。書中提供了數(shù)十個易跟學(xué)的示例和高質(zhì)量的插圖,所有的sketch示例程序都可直接使用,也可根據(jù)需要進行修改。書中還介紹了使用Arduino框架編寫其他主流開發(fā)板程序的全部新知識。
內(nèi)容涵蓋
● 配置Arduino并開始編寫sketch程序
● 了解C語言和Arduino IDE的基本知識
● 向sketch程序添加函數(shù)、數(shù)組和字符串
● 設(shè)置Arduino的數(shù)字和模擬I/O
● 使用Arduino兼容板,包括ESP32、Pico和micro:bit
● 使用內(nèi)置和自定義Arduino庫
● 編寫sketch程序,將數(shù)據(jù)存儲在EPROM或閃存中
● 實現(xiàn)與各種顯示器(包括LCD)的接口
● 連接到Internet并將Arduino配置為Web服務(wù)器
● 開發(fā)有趣且實用的物聯(lián)網(wǎng)程序
在創(chuàng)建基于微控制器的項目方面,Arduino接口的開發(fā)板提供了一種低成本、便于使用的技術(shù)。只需要掌握很少的電子學(xué)基礎(chǔ)知識,就可以讓Arduino實現(xiàn)從控制布景燈光到管理太陽能系統(tǒng)的電力在內(nèi)的方方面面。
有很多基于項目的書籍會向你介紹如何把設(shè)備連接到Arduino上,包括本書作者的30 Arduino Projects for the Evil Genius一書。但是,本書重點關(guān)注如何使用Arduino IDE來編寫Arduino程序和Arduino兼容板。
本書將講解如何讓Arduino編程變得簡單有趣,避免使用那些往往會讓項目受阻的、棘手的代碼。在本書的指導(dǎo)下,你會從Arduino使用的最基礎(chǔ)的C語言開始,一步步了解Arduino編程過程。
0.1 什么是Arduino
Arduino是指用于微控制器板編程的硬件和軟件環(huán)境。因為微控制器板有各種形狀和尺寸,所以標準開發(fā)板將選擇最受歡迎的官方出品的Arduino板Arduino Uno。
Arduino Uno是一款小型微控制器開發(fā)板,使用USB(Universal Serial Bus,通用串口總線)接口連接到計算機,并且擁有大量可以用來連接像電機、繼電器、光傳感器、激光二極管、擴音器、麥克風(fēng)等外部電子元器件的接口。這些外部設(shè)備可通過計算機的USB接口連接,可通過電池或外部電源供電。它們可由計算機直接控制或在編程后獨立運行。
官方出品的Arduino開發(fā)板和許多Arduino兼容板的設(shè)計是開源的,這意味著任何人都可以制作Arduino兼容的開發(fā)板。這種競爭帶來了低成本的開發(fā)板和在標準開發(fā)板基礎(chǔ)上加以改進的各類板型。
可通過在頂部插入擴展板的方式對Arduino主控板的功能進行擴充。
Arduino編程軟件簡單易用,并且可免費在Windows、macOS和Linux系統(tǒng)中使用。該軟件還有一個基于瀏覽器的版本。
0.2 需要準備什么
本書面向初學(xué)者,但也可為那些已使用過Arduino,并且想了解關(guān)于Arduino編程的更多知識,或者想深入探究其中原理的人帶來幫助。依照這個定位,除了第10章使用了與 ESP32 Arduino兼容的開發(fā)板,本書將重點放在了Arduino Uno開發(fā)板的使用上。當然,幾乎所有的代碼都可以不經(jīng)修改地直接在所有Arduino模型和各種與Arduino兼容的微控制器板上使用。
學(xué)習(xí)本書,讀者不需要擁有任何編程經(jīng)驗或技術(shù)背景,本書的全部練習(xí)也不需要去動手焊接。你所需要的就是對創(chuàng)造的渴望。
如果想充分利用本書并嘗試其中的一些實驗,那么手頭有以下物品是很有幫助的:
● 幾根實心導(dǎo)線
● 一臺便宜的數(shù)字萬用表
只需要花幾塊錢就可以很容易地從電子元器件商店或網(wǎng)絡(luò)經(jīng)銷商(如Adafruit或Sparkfun)那里買到它們。當然,你還需要一塊Arduino Uno開發(fā)板。在第10章,還需要用到一款便宜的ESP32 Arduino兼容軟件,如Lolin32 Lite。
如果想要進一步了解并嘗試一些使用顯示器和網(wǎng)絡(luò)連接的實驗,需要從網(wǎng)上購買一些擴展板,詳見第9章和第10章。
0.3 如何使用本書
本書在內(nèi)容安排上循序漸進,能夠讓你以一種簡單的方式上手。但是當你找到合適的定位并開始閱讀本書時,你可能會發(fā)現(xiàn)自己可以跳過或只需要粗略閱讀前面的章節(jié)。
本書按如下順序組織章節(jié)內(nèi)容。
第1章:Arduino入門。你將使用Arduino開發(fā)板開始自己的首個實驗,即安裝軟件,上電,然后上傳你的第一個項目。
第2章:C語言基礎(chǔ)。該章涵蓋C語言的基礎(chǔ)語法。對于編程初學(xué)者,該章也可作為一本普通的編程教材。
第3章:函數(shù)。該章講解在Arduino項目中使用和編寫函數(shù)的關(guān)鍵概念。這些項目都包含可運行的示例代碼以進行演示。
第4章:數(shù)組和字符串。該章介紹如何使用比整型變量更高級的數(shù)據(jù)結(jié)構(gòu)。通過逐步開發(fā)一個摩爾斯電碼例程來解釋這些概念。
第5章:輸入和輸出。該章介紹如何在程序中使用Arduino開發(fā)板上的數(shù)字和模擬輸入/輸出接口。通過萬用表有助于了解Arduino輸入/輸出接口上所發(fā)生的情況。
第6章:開發(fā)板。該章介紹各種Arduino和Arduino兼容板,以幫助你為項目選擇合適的板。
第7章:高級Arduino。該章介紹如何使用Arduino標準庫中的Arduino函數(shù)以及Arduino編程的一些其他高級功能。
第8章:數(shù)據(jù)存儲。該章介紹如何編寫可在EEPROM (Electrically Erasable Programmable Read Only Memory,電可擦可編程只讀存儲器)中存儲數(shù)據(jù)并利用Arduino內(nèi)置閃存(Flash Memory)的項目。
第9章:顯示器。該章講解如何將Arduino和顯示器連接起來并制作簡單的USB留言板。
第10章:Arduino物聯(lián)網(wǎng)程序設(shè)計。該章講解如何讓Arduino像Web服務(wù)器那樣運行并使用服務(wù)與互聯(lián)網(wǎng)通信。
0.4 下載資源
本書由專門的網(wǎng)站(見鏈接[1])提供技術(shù)支持。
可從這個網(wǎng)站找到本書使用的所有源代碼以及其他資源,如勘誤表。也可通過掃描封底的二維碼來獲取這些資源。
0.5 有關(guān)書中鏈接的說明
注意,讀者在閱讀本書時會看到一些有關(guān)鏈接的編號,其形式是數(shù)字編號加方括號([]),例如[1]表示讀者可掃描本書封底二維碼下載Links文件,找到對應(yīng)章節(jié)中[1]所指向的鏈接。
Simon Monk博士擁有控制論和計算機科學(xué)學(xué)士學(xué)位以及軟件工程博士學(xué)位。從少年時代起,他就是一名活躍的電子玩家。如今,他成了一名優(yōu)秀的作家,對Arduino和樹莓派有獨到的見解和洞察力。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è)計產(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 上傳你的第一個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語言實驗 27
2.6 數(shù)值變量和算術(shù)運算符 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(浮點型) 43
3.5.2 Boolean(布爾型) 44
3.5.3 其他數(shù)據(jù)類型 45
3.6 編碼風(fēng)格 47
3.6.1 縮進 47
3.6.2 花括號 48
3.6.3 空白 48
3.6.4 注釋 49
3.7 本章小結(jié) 50
第4章 數(shù)組和字符串 51
4.1 數(shù)組 51
4.2 字符串數(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 防抖動 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章 高級Arduino 95
7.1 隨機數(shù) 95
7.2 數(shù)學(xué)函數(shù) 97
7.3 位操作 98
7.4 高級I/O 100
7.4.1 生成音調(diào) 100
7.4.2 移位寄存器 101
7.4.3 中斷 102
7.4.4 編譯時常量 104
7.4.5 Arduino Web編輯器 105
7.5 本章小結(jié) 105
第8章 數(shù)據(jù)存儲 107
8.1 大型數(shù)據(jù)結(jié)構(gòu) 107
8.2 將數(shù)據(jù)存儲在閃存中 108
8.3 EEPROM 110
8.3.1 在EEPROM中存儲整數(shù) 112
8.3.2 將任何內(nèi)容寫入EEPROM 113
8.3.3 在EEPROM中存儲浮點數(shù) 115
8.3.4 在EEPROM中存儲字符串 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è)計 131
10.1 IoT開發(fā)板 131
10.2 將ESP32安裝到Arduino IDE中 132
10.3 連接WiFi 133
10.4 運行Web服務(wù)器 135
10.5 提供傳感器讀數(shù) 137
10.6 提供傳感器讀數(shù)改進版 138
10.7 從網(wǎng)頁打開和關(guān)閉內(nèi)置的LED 142
10.8 連接到Web服務(wù) 144
10.9 本章小結(jié) 149