《超圖解Arduino 互動設計入門》第四版

《超圖解Arduino 互動設計入門》第四版<

  • 作者:趙英傑
  • 出版社:旗標科技股份有限公司
  • 出版日期:2020.03.12
  • 頁數:656頁(含索引,附錄電子書不計入頁數),雙色印刷。
  • 定價:NT$680

Arduino書籍第三版的新增內容介紹和討論貼文請按此連結

十年來,站在Maker(創客)風潮浪尖上的Arduino,不僅是電子愛好者的微電腦互動控制首選,也因為Arduino 價格低廉,開發容易,各電子零組件、感測器廠商為了推廣他們的產品,都免不了要附上Arduino的使用範例,加上網路眾人分享的新奇、實用的DIY作品,令Arduino成為微電腦控制板的實質領導者。

人人都能當創客

打造微電腦互動作品,需要融合不同領域的軟、硬體基礎知識。本書的目標是讓沒有電子電路基礎,對微電腦、電子DIY 及互動裝置有興趣的人士,也能輕鬆閱讀,進而順利使用Arduino 控制板完成互動應用。因此,本書以手繪圖解的方式,說明基本電子學和程式設計入門。

電阻分壓公式說明

Arduino不僅是微電腦控制板的品牌名稱,操控它的程式語言,也叫Arduino。在Arduino之前,使用者需要付費購買軟硬體開發工具,現在,市面上有數十種不同類型的控制板都能使用免費的Arduino語言和工具軟體來開發程式;換言之,一旦掌握了Arduino相關基礎知識,就不會受限於特定廠商的產品…這是非常了不起的革命性成就!

Arduino支援各種控制板

也因此,本書從第一版到第三版,封面的插圖主角是Arduino原廠控制板,第四版則是筆者焊接組裝的循跡自走車,上面的控制板並非出自Arduino原廠,但控制程式仍是Arduino。

自己焊接組裝的循跡自走車

本書DIY實驗單元的控制板,大都採用主流的Arduino UNO,第19章則使用另一款知名(非原廠)的ESP8266控制板。書中所有插圖都是筆者採用Adobe Flash軟體手繪完成(註:Flash在2015年末更名為Animate CC),零組件也全都用手繪插圖取代照片;線條插圖通常比照片更能清晰地突顯描述的要點。

紅外線循跡感測模組

撰寫第一版時,筆者最初想法是從改造身邊的電子產品和玩具著手,搭配組裝電子零件來介紹Arduino的應用範例,然而,電子產品的款式眾多,很難做一般化的步驟說明,尤其在教學上,最好要有明確可依循操作的東西。現在很容易買到「Arduino相容」電子模組,像按鍵、距離感測器、LED顯示器…等,本書也盡量採用現成的模組,但為了避免書本淪落成「電子模組操作手冊」,筆者也說明了模組的電路及其運作原理,唯有如此,讀者才能自由整合不同的軟硬體,也不會受制於某些廠商的產品。

紅外線循跡感測器電路圖(原理圖)

當然,第四版也保留了改造家電和玩具的案例,強調了自己動手改造的可能和樂趣,像底下這個田宮線控機械昆蟲,承載了筆者小學時代最深刻的動力機械DIY記憶;改造這個玩具的Arduino控制板和藍牙模組,都是自己焊接的:

改造田宮線控機械昆蟲

第四版的內容更新著重在程式設計和演算法,更加全面地介紹Arduino程式語言,包含物件導向程式設計(OOP)和自製程式庫。因篇幅有限,第三版中的Wii遊戲機體感控制器以及MIDI電子鼓,被歸納到附錄單元,以電子書形式提供。為了方便讀者查閱,書末提供了索引。例如,假設要知道#ifndef指令的語法和範例,透過索引可以很快找到。

Arduino物件導向程式設計

廣告一下,《超圖解Python程式設計入門》也有索引;中文電腦書通常沒有索引,因為需要人工校對,國外某些出版社有專人負責編輯索引,筆者花費兩個工作天才整理完成。

《超圖解Arduino 互動設計入門》第四版目錄

第一章 認識 Arduino 與微電腦控制板
1-1∣認識 Arduino
1-2∣安裝 Arduino Uno 控制板的驅動程式
1-3∣Arduino 程式開發工具與開發步驟簡介
1-4∣上傳「閃爍 LED」範例程式

第二章 認識電子零件與工具
2-1∣電壓、電流與接地.
2-2∣控制板的電源供應器
2-3∣電阻
2-4∣電容
2-5∣二極體
2-6∣發光二極體(LED)
2-7∣看懂電路圖
2-8∣電子工作必備的量測工具:萬用電錶
2-9∣麵包板以及其他電子工具

第三章 Arduino 控制板與程式設計入門
3-1∣Arduino Uno 控制板的功能和接腳說明
3-2∣認識程式語言
動手做 3-1 寫一個 LED 閃爍控制程式
3-3∣用「變數」來管理程式碼
3-4∣不變的「常數」
3-5∣使用 #define 巨集指令替換資料

第四章 開關、分歧指令與歐姆定律
4-1∣認識開關
4-2∣開關電路與上 / 下拉電阻
動手做 4-1 用麵包板組裝開關電路
4-3∣改變程式流程的 if 條件式
動手做 4-2 LED 切換開關
動手做 4-3 用 RC 電路消除開關彈跳訊號
動手做 4-4 LED 跑馬燈
4-4∣迴圈
動手做 4-5 跑馬燈範例程式二:使用 for 迴圈
4-5∣認識陣列
動手做 4-6 使用陣列變數的 LED 來回跑馬燈
4-6∣用歐姆定律計算出限流電阻值

第五章 UART 序列埠通信
5-1∣並列與序列通訊簡介
5-2∣認識 UART 序列埠
5-3∣處理文字訊息:認識字元與字串資料類型
5-4∣認識程式庫:傳遞序列訊息
動手做 5-1 從序列埠監控視窗觀察變數值
5-5∣認識 String(字串)程式庫
5-6∣從 Arduino 接收序列埠資料
動手做 5-2 從序列埠控制 LED 開關
5-7∣switch…case 控制結構
5-8∣認識數字系統..

第六章 LED 七段顯示器與序列轉並列輸出 IC
6-1∣七段顯示器
動手做6-1 連接 LED 七段顯示器與 Arduino 板
6-2∣使用積體電路簡化電路
動手做 6-2 序列連接七段顯示器
動手做 6-3 不用 delay() 的延遲方法
動手做 6-4 一個 74HC595 控制多個七段顯示器

第七章 SPI 序列介面與 LED 矩陣顯示器
7-1∣建立自訂函式
動手做 7-1 建立自訂函式
7-2∣變數的有效範圍:全域、區域和靜態
7-3∣LED 矩陣簡介
7-4∣認識 SPI 序列介面與 MAX7219
動手做 7-2 組裝 LED 矩陣電路
7-5∣顯示單一矩陣圖像
動手做 7-3 在矩陣 LED 上顯示音符圖像
動手做 7-4 在序列埠監控視窗輸出矩形排列的星號
7-6∣LED 矩陣動畫與多維陣列程式設計
動手做 7-5 在矩陣 LED 上顯示動態圖像
7-7∣LED 矩陣跑馬燈
動手做 7-6 LED 矩陣逐字捲動效果程式
7-8∣認識指標(Pointer)
7-9∣將常數保存在「程式記憶體」裡

第八章 I2C 序列通訊介面與 LCD 顯示器
8-1∣認識文字型 LCD 顯示模組
動手做 8-1 並列連接 LCD 顯示器
8-2∣認識 I2C 介面
動手做 8-2 掃描 I2C 介面匯流排連接的週邊位址
8-3∣LCD 顯示器的特殊字元和自訂字元
動手做 8-3 在 LCD 上顯示自訂字元符號
動手做 8-4 透過 I2C 介面串連兩個 Arduino 板
動手做 8-5 在 I2C 介面上傳送整數資料
8-4∣DHT11 數位溫濕度感測器
動手做 8-6 製作數位溫濕度顯示器

第九章 類比信號處理
9-1∣讀取類比值
動手做 9-1 從序列埠讀取「類比輸入」值
9-2∣認識光敏電阻與分壓電路
動手做 9-2 使用光敏電阻製作小夜燈
9-3∣壓力感測器與彎曲感測器
9-4∣電容式麥克風元件與運算放大器
動手做 9-3 自製麥克風聲音放大器(拍手控制開關)
動手做 9-4 拍手控制開關改良版

第十章 變頻控制 LED 燈光和馬達
10-1∣調節電壓變化
10-2∣類比輸出(PWM)指令和預設頻率
動手做 10-1 調光器
動手做 10-2 隨機數字與燭光效果
動手做 10-3 透過序列埠調整燈光亮度
10-3∣認識直流馬達
10-4∣認識電晶體元件
動手做 10-4 電晶體馬達控制與調速器

第十一章 發音體、超音波距離感測、 物件導向程式設計與自製程式庫
11-1∣發音體和聲音
11-2∣使用 tone() 函數發出聲音
動手做 11-1 演奏一段瑪莉歐旋律
11-3∣認識超音波
動手做 11-2 使用超音波感測器製作數位量尺
11-4∣物件導向程式設計:自己寫程式庫

第十二章 馬達控制板與自動迴避 障礙物的自走車
12-1∣控制馬達正反轉的 H 橋式馬達控制電路
動手做 12-1 編寫馬達驅動程式模組
動手做 12-2 自動迴避障礙物的自走車

第十三章 伺服馬達、數位濾波、資料排序與體感控制機械雲台
13-1∣認識伺服馬達
動手做 13-1 吃錢幣存錢筒
動手做 13-2 自製伺服馬達雲台
13-2∣簡易數位濾波以及資料排序演算法
13-3∣使用陀螺儀和加速度計模組控制伺服馬達雲台
13-4∣從陀螺儀和加速度計取得角度
動手做 13-3 讀取 IMU 數據並繪圖顯示
動手做 13-4 透過「序列埠繪圖家」 呈現訊號波形
動手做 13-5 使用 IMU 感測器控制伺服馬達.

第十四章 紅外線遙控、施密特觸發器與 循跡自走車
14-1∣認識紅外線
動手做 14-1 使用 IRremote 程式庫解析紅外線遙控值
動手做 14-2 使用紅外線遙控器控制伺服馬達
動手做 14-3 從 Arduino 發射紅外線遙控電器
14-2∣認識反射型與遮光型光電開關
動手做 14-4 光電子琴製作
14-3∣紅外線循跡/避障模組與施密特觸發器
14-4∣認識電壓比較器
14-5∣製作循跡自走車
動手做 14-5 組裝自走車

第十五章 手機藍牙遙控機器人製作
15-1∣電波、頻段和無線傳輸簡介
15-2∣認識藍牙(Bluetooth)
15-3∣5V 和 3.3V 電壓準位轉換
動手做 15-1 使用軟體序列埠 (SoftwareSerial) 連接 Arduino 與藍牙模組
動手做 15-2 用 Android 手機藍牙遙控機器人
15-4∣透過 AT 命令更改藍牙模組的名稱
動手做 15-3 透過 AT 命令更改藍牙模組的名稱

第十六章 RFID 無線識別裝置
16-1∣認識條碼與 RFID
動手做 16-1 讀取 Mifare RFID 卡的 UID 碼
動手做 16-2 Mifare RFID 的門禁系統實驗
16-2∣Mifare Classic 1KB 的記憶體結構
動手做 16-3 讀寫 RFID 卡片資料(扣款與充值)實驗

第十七章 網路與 HTML 網頁基礎+嵌入式網站伺服器製作
17-1∣認識網路與 IP 位址
17-2∣網域名稱、URL 網址和傳輸協定
動手做 17-1 認識網頁與 HTML
17-3∣網路的連線標準與封包
17-4∣認識 HTTP 通訊協定
17-5∣連接乙太(Ethernet)網路卡建立 Arduino 微型網站伺服器
動手做 17-2 建立微型網站伺服器

第十八章 網路家電控制
18-1∣使用 Webduino 程式庫建立微型網站
動手做 18-1 監控遠端的溫濕度值
18-2∣傳遞資料給網站伺服器
動手做 18-2 建立網頁表單
18-3∣認識傳遞資料的 GET 方法和查詢字串
動手做 18-3 建立接收 POST 表單資料的自訂命令
18-4∣控制家電開關
動手做 18-4 使用繼電器控制家電開關

第十九章 ESP8266 控制板 Wi-Fi 物聯網應用實作
19-1∣ESP8266 模組
19-2∣Wemos D1 mini 板的接腳
19-3∣使用 Arduino IDE 開發 ESP8266 控制板程式
19-4∣認識 Wi-Fi 無線網路
19-5∣使用 ESP8266 的 WiFi 程式庫連接無線網路
動手做 19-1 使用 ESP8266WebServer 程式庫建立 HTTP 伺服器
動手做 19-2 處理 GET 或 POST 請求
19-6∣PIR 人體感應器
動手做 19-3 偵測人體移動
19-7∣從 ESP8266 串連網路服務
動手做 19-4 從 D1 板(ESP8266)連結網站伺服器
動手做 19-5 自動發送 LINE 訊息的入侵警報系統
19-8∣在 ESP8266 的快閃記憶體中儲存網頁檔案
動手做 19-6 建立非同步網站伺服器讀取並傳送網頁檔案
動手做 19-7 動態網頁調光器
19-9∣使用 MOSFET 元件轉換邏輯電位

附錄A 中斷處理與交流電調光器製作
A-1∣輪詢 VS 中斷
A-2∣調整交流電的輸出功率
A-3∣定時觸發執行的 TimerOne 程式庫
動手做 A-1 交流電調光器電路

以下附錄為PDF格式的電子書

附錄B 燒錄 ATmega 微處理器的 開機啟動程式 (bootloader)
動手做 B-1 用麵包板組裝 Arduino 微電腦實驗板
動手做 B-2 使用 Arduino Uno 控制板燒錄 bootloader
動手做 B-3 連接電腦的 USB 介面並上傳程式檔

附錄C 改造 3C 小玩意的控制鈕
C-1∣認識光電耦合元件

附錄D 認識焊接工具:焊錫、電烙鐵及焊接助手
D-1∣焊接工具
動手做 D-1 基礎焊接練習
動手做 D-2 焊接鱷魚夾
D-2∣印刷電路板及萬用板
動手做 D-3 焊接電路板
動手做 D-4 活用 USB 電源供應器

附錄E 使用 App Inventor 開發 Android App
E-1∣認識 App Inventer 2.0
E-2∣建立第一個 App Inventor 專案:聲音播放程式
E-3∣藍牙遙控機器人 App 的程式碼說明

附錄F 使用 Wii 搖桿控制機械手臂
F-1∣認識 Wii 左手把的通訊介面:I2C
動手做 F-1 讀取 Wii 左手把的搖桿、按鈕與加速度計值
動手做 F-2 使用 Wii 左手把控制機械手臂

附錄G Arduino + Flash 整合互動應用
G-1∣Arduino + Flash = 多元互動媒體
動手做 G-1 測試 Arduino 與 Flash 連線
動手做 G-2 「接電子零件」互動遊戲
G-2∣認識 Arduino 的 String(字串)程式庫
動手做 G-3 Flash 燈光開關和調光器
G-3∣使用 Firmata 在 Flash 和 Arduino 之間傳遞資料

附錄H 使用 RFID 製作問答遊戲
H-1∣RFID 模組介紹與標籤讀取實驗
動手做 H-1 讀取 RFID 標籤
H-2∣儲存與比對 RFID 編碼
動手做 H-2 使用 RFID 控制開關
動手做 H-3 使用 RFID 進行 Flash 問答遊戲

附錄I 製作 MIDI 電子鼓
I-1∣認識 MIDI
I-2∣MIDI 訊息格式
動手做 I-1 透過 Arduino 演奏 MIDI 音樂
動手做 I-2 透過「虛擬 MIDI」介面演奏音樂
動手做 I-3 製作 MIDI 電子鼓

延伸閱讀

Posts created 483

76 thoughts on “《超圖解Arduino 互動設計入門》第四版

  1. 恭喜Cubie又出新版了~~~
    剛剛看了一下, 跟我買的第一版, 內容增加了不少~~~ 看來又要買一本來收藏了~~~

    1. 謝謝,如果跟第一版比較,的確是改變很多。
      不過你也是箇中老手了,謝謝!

      thanks,
      jeffrey

    2. 老师,我想问下,arduino的i2c接口A4,A5,是用软件模拟实现的还是它内部专门有一个i2c硬件模块专门实现的呢? 因为我在做uart通信实验时,有軟串口,还有就是普通的串口

    1. 台湾有些电子商务网站和网站書店有提供全球物流,但内地可能要翻墙才连得上。

      thanks,
      jeffrey

  2. 赵老师:
    不知道《超图解Arduino互动设计入门》第四版有没有计划在中国编译成简体中文版,必竟语言习惯不同。如果能在中国内地上市简体中文版,我必定会再收藏一本。

    1. 非常感谢您的支持,但我目前有其他计划,暂不考虑授权简体中文版,谢谢!

      thanks,
      jeffrey

    1. 因為範例檔是在Windows系統壓縮的,所以中文字編碼是Big5,我已經請旗標出版社的編輯用Mac重新壓縮再上傳,明日會處理好,抱歉造成您的困擾,也謝謝告知!

      thanks,
      jeffrey

    2. 本書編輯黃昕暐告知,在Windows系統用7zip重新壓縮,檔名沒有亂碼了,在macOS和Linux系統上測試沒問題,請重新下載範例檔。

      thanks,
      jeffrey

  3. 老師您好,很喜歡這本書,非常感謝老師與編輯的用心讓這本書持續更新問世。尤其索引也太佛心了!
    最近在查索引的時候發現有點查不太到,例如查“陣列”, 8-35, 8-41都查不到,比較能確定的是因為在第四版中沒有 8-41頁,請老師與編輯再查校一下~~~

  4. 請問按照您書本15-4,透過AT命令更改藍牙模組名稱接線及使用實驗程式,在序列埠監控視窗中輸入AT都沒回應,可能是何問題?(BT is ready 有出現 ,使用HC-06 沒有行結尾及 9600baud都有選對)
    謝謝

    1. 因為藍牙韌體有不同版本,最好先跟廠商確認。
      請嘗試用115200速率、加上行結尾…等組合試試。

      thanks,
      jeffrey

  5. 想要做一個gps追蹤可以遠端知道位置在哪的Arduino
    可以買哪一本書來學習呢?

  6. 老師你好~
    不好意思 想請問一下 第四版附錄寫電子書 是要去哪裡下載呢?

  7. 你好,第8-5頁的可變電阻應該還要再多兩條線分別接回5v和接地,才能形成完整的通路。

    1. 感謝告知!其實電源腳引線的5V和GND註釋,就是提示接電源,我會再特別說明,謝謝!

      thanks,
      jeffrey

  8. 在 超圖解arduino第四版 有提到電子書 請問能提供鏈接嗎? 非常感謝

    1. 拍謝,我沒有使用社群媒體,但是你可以在RSS閱讀器中輸入網址:https://swf.com.tw/,即可獲取這個blog的大綱內容並取得更新。

      thanks,
      jeffrey

  9. 老師好,最近有一個想法,請問可否使用程式使Uno開發板自動Reset呢?
    (想說可以應用在365天運轉的自動記錄儀器上使其定期重置)

    1. Uno開發板的Reset接任一數位腳,透過該數位腳發送低電位訊號,即可重置Uno板。

      thanks,
      jeffrey

    1. 您好,diy12_1就是那個自訂的Motor馬達控制程式庫,要搭配diy12-2單元程式一併使用。

      thanks,
      jeffrey

  10. 您好,动手做9-2按照实验程序下载,自定义图形在LCD上没有出现,动手做9-1下载后完全正常。
    请问老师:这是什么原因?
    谢谢!

    1. 咦?我可以正常运行,请在lcd.begin()叙述后一行加上lcd.clear();试试。

      thanks,
      jeffrey

  11. 我在lcd.writ(0)前面加上lcd.clear(),问题就解决了。看来在读取LCD自定义图形区时,要在显示前刷新一下,才能正常显示。
    谢谢老师!

  12. 老师您好:
    《互动》第三版P10-9, “…..Timer 2(数位3和9脚)的PWM……”, 是否应为”3和11脚“?
    另外,对Timer2 8分频(4KHz):void setup() { TCCR1B = TCCR1B & 0b11111000 | 0x02; },
    是否应为:void setup() { TCCR2B = TCCR2B & 0b11111000 | 0x02; }?
    谢谢!

  13. 趙老師您好,
    請教您 HC-SR-04, pulses(), 與書本 11-13 頁圖解的困惑.
    我的問題在 pulseIn() 是何時開始計時?
    1.我原本理解的是: 對 CH-SR04 的 Trig pin 發出 HIGH 10us 的指令, CH-SR04 因此會在發射端在 10us 內發出 8 個 40KHz 脈衝, 並立即執行 pulseIn(pin, HIGH), 超聲波脈衝撞到物體後反彈, CH-SR04 收到後在 Echo pin 輸出 HIGH, 一旦 HIGH 結束, pulseIn 就停止計時, pulseIn 傳回的時間經過計算就能得到距離.
    2. 書本 11-13 明顯的說明是測量脈衝長度.
    3. Arduino.cc 查詢 pulse(): if value is HIGH, pulseIn() waits for the pin to go from LOW to HIGH, starts timing, then waits for the pin to go LOW and stops timing. 依我解釋是訊號 LOW 變 HIGH 開始計時, HIGH 結束時停止, 這樣的話是與老師書本的 page 11-13一樣.
    而10us 內8 個 pulse, 測回波的的 8個脈衝長度, 來知道距離 ,我不認為是合理的, 因為回波的波長一樣.
    因此做了兩個實驗, 我測距離 10cm 的物體, 在 pulsein() 前加了聲波走 4cm 的時間的 delayMicrosecond(), 如果結果, 所得距離還是 10cm, ( 難到只測 8 個脈衝時間? ) 在使連續使用 pulsein() 次 , 來判斷是否是利用回波的回波修正, 結果是 10, 0, 0 cm.
    因此對 pulsing() 抓取的範圍深感困惑? 而且按原文: if value is HIGH, pulseIn() waits for the pin to go from LOW to HIGH, starts timing, then waits for the pin to go LOW and stops timing. 那 pulse() 因該是只抓的第一個脈衝的半個波長時間.
    問題很長, 還請趙老師能指導.

    1. 您好,11-13頁的圖說「模組內部自動發出的訊號」,指的是超音波模組會在收到觸發訊號之後,發出超音波,跟回應訊號無關,請忽視它。

      pulseIn()測量的是「回應(Echo)腳」的訊號,如11-14的圖說所示,謝謝!

  14. 趙老師 您好,

    我的書是超圖解Arduino互動設計入門第三版.
    想請問書中:
    第10章: 變頻控制LED燈光和馬達
    第11章: 使用Wii搖桿控制機械手臂
    第14章: 手機藍芽遙控機器人製作
    這些所需的硬體零件, 有在販售嗎?
    還是在哪個管道可以購買?

    感謝.

    1. 拍賣網站應該都能個別買到這些零件,最初實驗時,我不是一次買很多零組件,而是依照需要慢慢添購。

  15. 趙老師您好,我有購買您出版的超圖解Arduino互動設計入門,遇到以下問題想請教您:
    1. 第15章的藍芽序列通訊模組,接腳順序跟書上不同,請問是否有新版說明呢?
    2. 第16章的RFID-RC522模組,接腳順序跟書上不同,請問是否有新版說明呢?
    3. 第19章,我已安裝ESP8266套件,無法引用ESP8266WiFi.h與ESP8266WebServer.h,請問是否還需要做其他步驟呢?

    1. 您好,因電子模組廠商眾多,有些模組的接腳和書本的圖例不同,但是板子上通常都有印刷接腳名稱,像是藍牙序列通訊模組,只要認得電源(Vcc)、接地(GND)、傳送(TX)和接收(RX),不管它們的順序為何,照著書本的說明接線即可。

      ESP8266WiFi.h與ESP8266WebServer.h都是ESP8266開發環境內建的程式庫,跟著19-8頁步驟3操作,即可安裝,謝謝!

  16. 動手做7-6 LED捲動程式 編譯會產生記憶體不足 我使用Auduino 1.8.19環境
    想請教如何解 ? 謝謝

    Arduino:1.8.19 (Mac OS X), 開發板:”Arduino Uno”
    草稿碼使用了 3262 bytes (10%) 的程式儲存空間。上限為 32256 bytes。
    全域變數使用了 2074 bytes (101%) 的動態記憶體,剩餘 -26 bytes 給區域變數。上限為 2048 bytes 。
    Not enough memory; see https://support.arduino.cc/hc/en-us/articles/360013825179 for tips on reducing your footprint.
    data section exceeds available space in board
    開發板 Arduino Uno 編譯錯誤。

    1. 你好,請改用diy7_6_PROGMEM範例檔,前者把「字體定義」存在動態記憶體,這個版本的字體則是存在快閃記憶體。

  17. 我縮減fonts.h 不需要用到的字元. 編譯後記憶體夠用了.問題解決了 不好意思

  18. 趙老師 您好~
    我是ARDUINO的初學者~想請教老師一個問題~就是如何讓ARDUINO燒錄程式後能獨立運作(只需供給電源)~不需依靠USB線連接電腦~~以下是我參考別人的範例~要怎修改才能不使用電腦傳輸而自己運作?

    #include
    #include “TinyDHT.h”
    #define DHTPIN 8
    #define DHTTYPE DHT11
    //#define DHTTYPE DHT22 // DHT 22 如果用的是DHT22,就用這行
    //#define DHTTYPE DHT21 // DHT 21
    LiquidCrystal_PCF8574 lcd(0x27); // 設定i2c位址,一般情況就是0x27和0x3F兩種
    DHT dht(DHTPIN, DHTTYPE);

    void setup()
    {
    Serial.begin(9600);
    Serial.println(“DHTxx test!”);
    dht.begin(); //初始化DHT

    lcd.begin(16, 2); // 初始化LCD

    lcd.setBacklight(255);
    lcd.clear();
    lcd.setCursor(0, 0); //設定游標位置 (字,行)
    lcd.print(“*~ LUPH ~*.”);
    lcd.setCursor(0, 1);
    lcd.print(“~* FOREVER *~.”);
    delay(3000);
    } // setup()

    void loop()
    {
    delay(1000);
    float h = dht.readHumidity(); //取得濕度
    float t = dht.readTemperature(); //取得溫度C
    Serial.print(“Humidity: “);
    Serial.print(h);
    Serial.print(” %\t”);
    Serial.print(“Temperature: “);
    Serial.print(t);
    Serial.println(” *C “);

    lcd.clear();
    lcd.setCursor(0, 0); //設定游標位置 (字,行)
    lcd.print(“RH :”);
    lcd.setCursor(7, 0);
    lcd.print(h);
    lcd.setCursor(14, 0);
    lcd.print(“%”);

    lcd.setCursor(0, 1); //設定游標位置 (字,行)
    lcd.print(“Temp:”);
    lcd.setCursor(7, 1);
    lcd.print(t);
    lcd.setCursor(13, 1);
    lcd.print((char)223); //用特殊字元顯示符號的”度”
    lcd.setCursor(14, 1);
    lcd.print(“C”);

    } // loop()

  19. 趙老師好~~我有試過外接5V電源並拔掉USB線~但LCD確只有發亮而無顯示任何字幕

  20. 老師好~~後來我自己量了一下外部電源5.4V到板子上電壓只剩3.5V~~所以造成動作不完整~~現在已經排出異常~~可以使用外部電源驅動了~~感謝老師教導~~

  21. 赵英杰先生,您好:

    最近购买了您的著作《完美图解Arduion互动设计入门》,学到很多东西,也提升了DIY的兴趣。我想DIY一个开关机构,比如家里的门,自己回到家门口可以自动开门,别人却开不了。想请教一下实现的思路,非常感谢。

    本人在上海,如果有机会来大陆,一定请告诉我。

    此致,问候!

    王其荣

    1. 「无接触」自动开门,如果不考虑安全因素,目前想到:

      1. 人脸或肢体辨识
      2. 使用手机蓝牙配对,靠近时门锁自动联机开启。
      3. 在背包上贴RFID标签,靠近时门锁自动感应开启。

      原本计划今年暑假带小孩到上海和苏杭旅游,但因疫情尚未减缓而作罢,谢谢!

  22. 1.page 18-2 webduino 是只需要page17-22搭配乙太網路卡就可以,還是需要購買webduino fly的卡
    2.page 18-6引用的 include 引用的webduino程式庫,要如何找到?
    arduino\匯入程式庫\管理程式庫 關鍵字是什麼??
    還是要去哪裡download ??

    謝謝

    1. 1. 乙太網路實作的介面,只需要用到採用W5100晶片的乙太網路模組,跟動手做17-2單元相同。
      2. 書本使用的程式庫都已包含在範例原始檔,請參閱序言的最後一頁說明,謝謝!

  23. 趙老師您好: DIY18-1中程式使用了DHT11.
    但範例程式與書本裡都漏掉了要 dht.begin();
    所以diy18_1.ino是無法正確顯示的.
    敬上

  24. 趙老師您好. 續上則 diy18_1.ino 範例中:

    是否須加上 #include 程式庫宣告.

    以及

    if (isnan(h) || isnan(t)) 之後的判斷式相反了

    建議修改為

    if (isnan(h) || isnan(t)) {
    server << "無法讀取溫濕度值”;
    } else {
    server << "溫濕度計”;
    server << "溫度:” << t << "°C”;
    server << "濕度:” << h << "%”;
    }

    就能正確顯示溫溼度了

  25. 老師好,我是第二版的讀者,最近想做一個廚房計時器,希望計時結束時會有兩個led交互閃爍同時利用tone()不斷播放簡單的兩小節提示音,不過音符與音符之間的停頓似乎不適合使用delay(),因為整個系統會跟著停頓,想請教有什麼方法可以動態產生停頓的時間(拍子)?

    1. 改用「時間差」運算取代delay(),底下是個簡單的例子,令蜂鳴器發出si-so-si-so…的警報聲。

      #define SP_PIN 11       // 蜂鳴器接腳
      int interval = 500;         // 間隔時間
      int tones[2] = {650, 400};  // 音調頻率(旋律陣列)
      byte toneSize = sizeof(tones)/sizeof(int);
      
      unsigned long prevTime = 0;
      
      void setup() {
        pinMode(SP_PIN, OUTPUT);
      }
      
      void loop() {
          static int i = 0;
          if(millis() > prevTime + interval){
              prevTime = millis();
      
              tone(SP_PIN, tones[i], 500);
              if (++i % toneSize == 0) {
                i = 0;
              }
          }
      }
      
      
      也可以採用NonBlockingRTTTL程式庫來撥放旋律:
      https://github.com/end2endzone/NonBlockingRTTTL
  26. 感謝老師,我已經解決了,不過現在出現另一個狀況就是我的nodemcu進入深度睡眠ESP.deepSleep時,仍有一個接LED的腳位輸出高電平,我已經在進入睡眠前直接將腳位輸出LOW了,不知老師有沒有什麼建議?感謝您撥冗答覆。

    1. ESP8266進入睡眠狀態後,某些接腳會輸出高電位或低電位,而且它不像ESP32可透過RTC與協作處理器(ULP)維持狀態(例如,進入睡眠前,某個接腳輸出1,進入睡眠後仍維持1)。這是ESP8266進入深度睡眠後的接腳狀態變化:

      D1和D2:低電位
      D4~D8:高電位
      D3輸出2V

      相關說明可參閱“ESP8266 (ESP-12F) deep sleep and light sleep with Arduino”貼文的”Output pin states during sleep”單元。

  27. 你好
    我购买了 《超圖解 Arduino 互動設計入門 第四版 》
    请问如何获取文档呢?

  28. 請問第四版內文第五頁的下載網址還有效嗎? 買書之後,無法下載範例。謝謝!

  29. 您好,
    請問《超圖解Arduino 互動設計入門》第三版, 10-29頁,
    直流馬達要達到快速停止(剎車), 可以將兩個輸入訊號反轉;
    不好意思, 看不太明白, 是兩個腳位都[高]或[低]嗎?
    希望老師能幫忙釋疑, 感謝.

    1. 我指的是輸入跟原本相反的訊號。

      假設目前的1A是「高」,1B是「低」,馬達呈現正轉狀態。
      短暫地將1A改成「低」,1B改成「高」,將會導致馬達逆轉而形成急煞狀態。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top