|
-- 會員 / 註冊 --
|
|
|
|
Arduino編程從基礎到實踐 ( 簡體 字) |
作者:楊繼志,郭敬 | 類別:1. -> 電腦組織與體系結構 -> 單晶片 -> Arduino |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 42725 詢問書籍請說出此書號!【缺書】 NT售價: 245 元 |
出版日:10/1/2015 |
頁數:288 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121272530 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:關于作者
Brian Evans 是專注于電子藝術裝置領域的藝術家,同時也是位于丹佛的大都會州立學院的副教授。他教授藝術設計中的多學科融合課程和設計概論,包括特殊的藝術表現媒介、電子藝術品創作和 3D 打印課程。他在許多課程中使用了開源硬件,把它們用于藝術和設計創作,這些開源硬件包括 MakerBot 和 RepRap 的 3D 打印機及 Arduino 開發平臺。
他的作品已經在洛杉磯巴恩斯德爾公園市政藝術畫廊、奧蘭治縣的當代藝術中心、加州州立大學藝術博物館、長灘市等地展出。Brian Evans 還是加拿大艾伯塔的班夫新媒體研究所開源硬件園地的常客和活躍分子。他于 2005 年在亞利桑那州大學獲得美術學士學位,于 2008 年獲得長灘市加利福尼亞州立大學的美術碩士學位,于 2009 年曾作為志愿者為紐約開源硬件高峰論壇服務。
關于技術顧問
Ryan Owens 畢業于華盛頓芝加哥大學,獲得電子和計算機工程學位。他是 SparkFun Electronics 公司的設計工程師,他在那里設計新產品,為各層次的嵌入式電子愛好者編寫手冊和 “跟我學” 之類的指導書。 他也為電子技術初學者講授初步的電子實踐課程和 Arduino編程課程,無論是孩子還是 IT 專家都可以學習這些課程。
致 謝
沒有我的妻子 Susan、同事和好朋友們的真誠支持和鼓勵,我無法完成本書的寫作。感謝你們對我的幫助;并感謝我的女兒 Kori,在我寫作本書的過程中給了我精神上的支持;我還必須向我的父親 Arvin 致敬并表示感謝,他幫助我掙脫了一些束縛,甚至可能最嚴重的一些羈絆;同時,我誠摯地向我的朋友和 Metropolitian State 公司的同事表示感謝,他們給了我一個成為人師的平臺并鼓勵我展開本書的寫作。
感謝 Paul Badger, 我們倆圍繞本書早期想法的反復討論對我有很大的啟發; 感謝 DavidMellis 對我的那些愚蠢的 E-mail 的回復;感謝 Tom Igoe,我們分享了那些有思想有內容的對話。本書的完成也離不開影響力巨大的活躍的社區創建者們的支持,是他們成就了Arduino 平臺,還無私地分享了大量的成果。我受到了極大的啟發,并使用了該平臺的大量資源,感謝你們。
當然我還需要感謝出版者們——Apress 公司的了不起的編輯團隊,他們不知疲倦地工作以使這本書出版:Frank Pohlmann,他給我機會實現這個藍圖;Jessica Belanger 幫助我堅持下去;James Markhan 使我從溜號狀態返回到專注狀態;也感謝技術顧問 Ryan Owens,他的洞察力和反饋對我完成這個項目幫助很大。
我必須感謝我的非常有創造力的天才般的學生們,他們使我在本書開始寫作后不敢有絲毫松懈,并且給了我每天做我該做的事情的理由。
簡介
本書可幫助你開發實用的 Arduino 控制器項目。我們主要關注物理計算方面的軟件問題——通過設計軟件代碼控制物理實體來展現各種行為或通過軟件實現人機互動。本書從講解 Arduino 平臺的基本內容開始,運行第一個例子代碼,接下來討論 Arduino 的類 C 編程語言的結構和語法,探討變量、控制結構、數組和存儲器。本書還涉及許多 Arduino 開發所獨有的函數,這些函數用來控制數字和模擬量輸入輸出、定時器、隨機事件,之后討論如何編寫自己的函數,以及如何使用豐富的 Arduino 庫資源來控制各種各樣的硬件和使用各種通信協議。
就像之前所說的,Arduino 適合模塊化快速開發項目的理念。可以打這樣一個比喻:我們在用代碼實現項目藍圖時,就像是用“代碼積木”以一種個性化的直觀方法快速實現自己的設計目標。本書絕大部分論述方式都圍繞了這樣一種理念,通過實用項目來發展編程技巧,我們也提供了一些關于新項目和新元件使用的建議、新編程語言的試驗項目,以及反哺技術社區的方法。本書有意避免涉及太深的電子技術理論、電路設計和瑣碎的細節或其他基于特定硬件的練習項目,但是在每章最后回顧硬件方面的內容時提供了一些基礎的物理計算公式。
本書在很多地方涉及了在 Arduino 編程手冊中沒有涉及的內容,甚至更深入地探討了Arduino 開發環境,提供了簡單的全是干貨的代碼例程、簡單易讀的示意圖和說明。我在2007 年用 Arduino 給第十五系的學生上藝術和設計主修課時,編寫了一本手冊和一個小巧的 PDF 文檔,這是我第一次編寫 Arduino 編程知識,并不是一本簡單的手冊。這本精心編寫的小冊子,已經被譯成西班牙語、俄語和荷蘭語等版本,其中有許多內容與當前技術不同,可能跟不上 Arduino 的飛速發展,但它還是在全世界的工廠和課堂中被廣泛使用。最近幾年我沒升級這本手冊,我也不確信它現在還有用,因此希望本書能填補這個空白,成為這本手冊的升級版。
本書讀者對象
本書寫給以 Arduino 為平臺的藝術家、設計師、學生、喜歡創作小作品的人。在選擇使用 Arduino 平臺時,你需要一些在該平臺上編程和實踐的知識,本書的受眾假定為沒有編程經驗的人。順便說一下,用家用電腦去查找超出本書范圍的答案會很有用。
Arduino 的大多數使用者通常不關心技術細節, 只想讓其項目能夠工作。 我非常理解這種想法,因為我就是其中一員。在還是一名藝術專業的學生時,我發現了可編程控制器,那時的藝術學校通常沒有學寫代碼和纏電機的環境,Arduino 的到來改變了這一切。同樣,我也不是一名數學愛好者,幸運的是,這也不是鉆研寫 Arduino 代碼所預先要求具備的條件。
閱讀本書
本書的每章內容都集中在幾個基本項目上,這些項目又建立在相應章節所提到的基本概念之上。對于每個項目,都是先給出對項目的描述,之后討論項目中需要的硬件。書中也提供一些關于如何建立這些簡單的電路和如何把元器件連接到 Arduino 控制板的圖示和說明。在學習這些項目的過程中,你可以在頁邊空白處做點筆記并寫一些心得——我鼓勵你這樣做。一定要多加練習,試驗新東西,觀察新變化。
本書所涉及的項目都是非常典型的,或者是為演示設計新東西需要的基本概念而設計的。本書將遵循一定程度的“極簡藝術”理念,通過使用簡單并容易獲得的硬件來培養以高雅的方式寫代碼的技能。一旦實踐了這些典型的項目,這些項目就可以用到真正的項目中。本書不完全是在做這些實際項目,而是專注于如何編寫代碼并逐漸完善代碼。書中的例子會互相借鑒,在需要理解正在編寫的和逐漸完善的代碼時,你可以回顧之前的例子。
例子代碼的編寫本著在任何地方都可以輕松復用的原則,或可以進一步改進為部件化的模塊化的代碼的原則。讀者要花大量的時間提升編寫復用代碼的技巧,因此在得到一個獨立的新項目時,你就會知道該如何下手。你可以隨意更改這些通用的例子代碼,例如改變數值、時間、引腳分配、變化幅度等,直到代碼不工作了,再嘗試把它弄好。在本書的例子中,我保持了一種十分特別的書寫代碼的風格,我極力主張你發展自己書寫代碼的風格,這種風格反映了你的思維方式和看待代碼的方式。
做項目電路布線是非常簡單、直觀的,幾乎不需要任何電子知識。第 12 章匯總了基本的電子器件知識,貫穿了我們討論的編程方法,以及書中涉及的物理電路,回顧了編程與硬件之間的聯系,包括電路是如何工作的、讀圖表及焊接方法等。如果你發現自己學第 12章之前的內容時比較辛苦,那么你可以先跳到第 12 章預習一下硬件知識。如果你對硬件已經有所了解,那么第 12 章可作為一個好的概要,回答一些你還不是很清楚答案的問題。可以把這些硬件知識看作一個簡要的介紹,這些知識在我這幾年的授課中發揮了比較重要的作用。
Arduino 1.0
在我編寫這本書時,Arduino 的開發者們正在為創建更穩定、更高效的被叫作 Arduino1.0 的 Arduino 升級版開發軟件而努力。 Arduino 1.0 的最終發布版本在本書出版時應該已經發行了。版本升級是非常重要的,因為要使事情做得更好,某些常規要有所突破才行。這意味著在阿爾法版本的 Arduino 軟件下寫的一些舊代碼可能在 Arduino 1.0 版本上不能使用了。
相反,本書中的代碼和 Arduino 開發環境的圖片都是用 Arduino 1.0 Beta 發行版本做的(http://code.google.com/p/arduino/wike/Arduino1) , 因此本書中的 Arduino 軟件界面可能與最終版本展示的界面有所不同,書中的一些代碼也可能在舊版本的軟件下不能工作,Arduino 1.0 軟件的其他特征并沒有完全在本書中展現,所以我沒有寫有關新特征的內容。在升級版本時還有一些關于硬件引腳升級的內容,但我們現在對這些具體內容還不太清楚,因此如果有異常問題發生,那么這可能要歸結為 Arduino 1.0 軟件的問題,從而查找在哪里發生了什么錯誤。
約定
在本書中我們使用了一些約定,包括使用定寬字體來標識例子代碼,以及使用任何后面帶有括號的字符串如 setup()或 loop()來標識調用函數。有時會從主句中分離出一個適合定寬字形的塊。下面是一個多行注釋的例子:
//this is a mulitline
//code example
? 注意 千萬不要用比實際需要小的電阻,因為如果你向 LED 輸入了太大的電流,則不但會造成 LED 的永久性損壞,也可能會損壞電路中的其他元件。
?下載代碼
本書代碼可以從 Apress 網站的代碼資源下載頁面下載,如果你需要發布本書中使用的例子代碼,則請使用包括書名、作者、出版社、年份和 ISBN 的屬性文件。 |
內容簡介:目前Arduino開源硬件技術在國內漸漸興起,相關的圖書的市場表現不錯,作為計算機的硬件科學,這本書apress系列書之一,內容正統,篇幅適中,翻譯難度不大。與電子社已經獲得版權的《beginning arduino》(偏重案例)和《arduino robotics》(偏重高端應用)相比,偏重初級與中級理論實踐普及方面,屬于入門圖書,讀者基數多。 |
目錄:第 1 章 開始 .................................1 Arduino 是為 DIY 愛好者設計的 .......................1 Arduino 生態系統 .............................3 Arduino 平臺 .............................3 開源硬件 ...............................4 社區 .................................5 Arduino 世界 .............................6 Arduino 采用 C 語言還是其他語言 ......................7 我們需要什么元件 .............................9 進入正題 ................................ 11 安裝軟件 .............................. 12 連接到 Arduino ........................... 13 打開一個框架 ............................ 13 選擇板子和串口 ........................... 14 上傳框架 .............................. 15 總結 .................................. 16 第 2 章 代碼架構 .............................. 17 什么是代碼的框架 ............................ 18 項目 1:RGB 閃燈 ............................ 19 把它連上 ..............................20 上傳代碼 .............................. 21 代碼總結 .............................. 22 Arduino C 的結構 ............................. 22 使用注釋 .............................. 23 基本函數 .............................. 24 語句和語法 .............................26 確認和上傳 ............................... 27 確認 ................................ 27 保存 ................................ 28 上傳 ................................ 29 常見的錯誤 ............................. 30 總結 .................................. 32 第 3 章 使用變量 .............................. 34 項目 2:七色變色燈 ........................... 35 把它們連接起來 ........................... 35 上傳源代碼 ............................. 36 代碼總結 .............................. 37 什么是變量 ............................... 38 聲明變量 .............................. 39 變量名 ............................... 40 數據類型 .............................. 41 變量修飾 .............................. 43 預定義常量 ............................. 44 變量作用域 ............................. 44 使用操作符 ............................... 45 數學運算符:+、-、*、/ ....................... 46 復合操作符:++、??、+=、-=、 * =、/= .................. 47 運算順序 .............................. 48 總結 .................................. 49 第 4 章 進行判斷 .............................. 50 項目 3:閃燈 ..............................51 把它連接起來 ............................51 上傳代碼 .............................. 52 源代碼總結 ............................. 54 對比和邏輯操作 ............................. 56 控制結構 ................................ 58 if ................................. 58 for................................. 60 while ................................ 61 do ................................. 62 switch ............................... 63 break ................................ 64 continue .............................. 65 總結 .................................. 65 第 5 章 數字輸入和輸出 ........................... 67 Arduino I/O 擴展 ............................. 68 項目 4:吵鬧的蛐蛐 ........................... 70 把它連起來 ............................. 70 上傳代碼 .............................. 72 源代碼總結 .............................73 數字函數 ................................ 75 pinMode() .............................. 75 digitalWrite() ............................. 76 digitalRead() ............................. 77 狀態轉換 ................................ 78 切換 ................................ 79 計數 ................................ 81 模式 ................................82 總結 .................................. 85 第 6 章 模擬輸入、模擬輸出 ......................... 86 模擬量揭秘 ............................... 87 項目 5:呼吸遠程信息處理 ........................ 88 把它們連起來 ............................ 89 上傳代碼 .............................. 91 源代碼總結 ............................. 91 模擬函數 ................................ 93 analogRead() ............................. 93 analogWrite() ............................ 95 analogReference() ........................... 96 模擬串口監視器 ............................. 97 讀模擬值 .............................. 98 使用串口監視器 ........................... 99 它是如何工作的 .......................... 100 映射數值 ............................... 101 map() ............................... 101 constrain() .............................102 總結 ................................. 103 第 7 章 高級函數 ............................. 104 時間函數 ............................... 105 delay() ............................... 105 delayMicroseconds() ......................... 106 millis() ............................... 107 micros() .............................. 109 隨機函數 ............................... 109 random() .............................. 110 randomSeed() ............................ 112 項目 6:環境溫度 ............................ 113 連接起來 ............................. 114 上傳源代碼 ............................ 116 源代碼總結 ............................ 118 寫函數 ................................ 121 聲明函數 ............................. 121 調用函數 ............................. 122 函數返回值 ............................ 122 函數的參數 ............................ 124 項目 7:HSB 彩色 LED .......................... 125 把它們連起來 ........................... 125 上傳源代碼 ............................. 127 源代碼總結 ............................ 129 硬件中斷 ............................... 130 attachInterrupt() ........................... 131 detachInterrupt() .......................... 132 總結 ................................. 132 第 8 章 數組和存儲區 ........................... 133 項目 8:占卜機 ............................. 134 把它們連起來 ........................... 134 上傳源代碼 ............................ 136 源代碼總結 ............................ 139 數組 ................................. 143 聲明數組 ............................. 143 使用數組 ............................. 145 字符數組 ............................. 148 多維數組 ............................. 149 Arduino 存儲器 ............................. 151 檢查剩余的 RAM .......................... 153 使用程序存儲空間 ......................... 154 使用 EEPROM ............................ 156 總結 ................................. 158 第 9 章 硬件庫 .............................. 159 使用庫 ................................ 160 生成一個實例 ........................... 160 初始化庫 ............................. 161 LiquidCrystal 庫 ............................. 161 例子代碼:用 Arduino 顯示詩句 .................... 163 LiquidCrystal() ............................ 164 begin() ............................... 165 print() ............................... 165 clear() ............................... 166 setCursor() ............................. 166 例子代碼:符號和 Characters() .................... 166 write() ............................... 168 createChar() ............................ 169 例子代碼:魚缸動畫 ........................ 171 scrollDisplayLeft()和 scrollDisplayRight() .................. 173 舵機庫 ................................. 174 例子代碼:鬧鐘 ........................... 176 舵機 ............................... 177 attach() .............................. 177 write() ............................... 178 步進電機 ................................179 例子代碼:60s 掃描 ......................... 183 Stepper .............................. 183 setSpeed() ............................. 184 step() ............................... 184 SD 卡庫 ................................ 186 例子代碼:SD 卡記錄儀 ....................... 188 File ................................ 189 SD.begin() ............................. 190 SD.open() ............................. 190 close() ............................... 191 write() ............................... 191 print() ............................... 191 例子代碼:SD 卡閃爍 ........................ 192 available() ............................. 193 read() ............................... 193 總結 ................................. 194 第 10 章 串行通信和 I2C .......................... 195 使用硬件串口 ............................. 196 項目 9:串口控制舵機 .......................... 198 把它連起來 ............................ 198 上傳代碼 ............................. 199 代碼總結 ............................. 200 串口庫 ................................ 200 begin() ............................... 201 available() ............................. 201 read() ............................... 202 print() ............................... 204 println() .............................. 205 write() ............................... 205 項目 10:RFID 讀卡器 .......................... 206 把東西連接起來 .......................... 206 上傳源代碼 ............................. 207 源代碼總結 ............................ 209 軟串口庫 ............................... 210 SoftwareSerial() ........................... 211 begin() ............................... 211 flush() ............................... 211 strncmp() ............................. 212 項目 11:串行時鐘 ........................... 213 把它們連接起來 .......................... 213 上傳源代碼 ............................ 214 代碼總結 ..............................217 wire 庫 ................................ 222 begin() ............................... 222 beginTransmission() ......................... 223 endTransmission() .......................... 223 write() ............................... 223 requestFrom(); ........................... 224 read() ............................... 224 總結 ................................. 224 第 11 章 繼續 ............................... 226 建立更多的項目 ............................ 226 紅利項目 1:做個自動發送 Twitter 的項目 ............... 226 紅利項目 2:使東西運動 ....................... 229 紅利項目 3:大型的東西 ....................... 235 學習其他語言 ............................. 236 Firmata .............................. 236 Processing ............................. 238 PureData .............................. 239 為社區做貢獻 ............................. 241 參與在線論壇 ........................... 241 發布你的項目 ........................... 243 總結 ................................. 245 第 12 章 基礎電子學 ............................ 247 基礎電子學 .............................. 248 電路 ............................... 248 電源 ............................... 249 常見元件 ............................... 250 電阻 ................................251 電容 ................................251 二極管 ............................... 252 三極管 ...............................253 開關 ................................255 電機 ............................... 256 讀原理圖 ................................ 257 原型 ................................. 258 面包板 .............................. 259 焊接 .................................. 262 總結 ................................. 264 附錄 資源 ................................ 265 附加資源 ............................... 265 論壇 ............................... 265 指導書 .............................. 266 其他素材 ............................. 266 選擇供應商 ............................... 267 本書中用到的元件 ........................... 268 |
序: |
|