66
Arduino 入門手冊 撰寫者:鄭依佩 同學 指導教授:陸健榮、賈至達 中等教育階段 自然領域教學研究 中心

Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

Arduino 入門手冊

撰寫者:鄭依佩 同學

指導教授:陸健榮、賈至達

中等教育階段

自然領域教學研究

中心

Page 2: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

本書的源起

近來由於資訊免費開源軟、硬體的發展迅速,如 Arduino、Raspberry pi、

Micro:bit 等開源硬體和 Python、C、C++、JAVA等開放的軟體,以及相關的感應

器的開發,讓自然領域的教學可以融入多面向的學習,不僅提升老師對於教學熱

誠,也提升學生學習的樂趣。國立臺灣師範大學自然領與教學研究中心是以開發

與研究新課綱的課程為主,除了進行單科的課程研究外,還進行跨學科、跨領域

的課程設計;Arduino 恰好可以符合這樣的目的。在物理、化學、生物和地球科

學的學科課程發展上,藉由 Arduino 可以輕易的融合各學科和各領域開發新的課

程。

Arduino開放硬體觀念和 IDE程式設計可以讓有心學習的老師和學生輕鬆入

手,入門之後學生和老師就可以發揮自己的專長和創意,不僅是提升學生主動學

習意願,同時讓師生互動增加,而增進教學相長!在增加學生學習的興趣與熱情

過程中,也讓程式語言不經意地、不知不覺地融入在課程中,而成為很方便的工

具,日後的拓展性和應用性很高,而達成終生受用、終身學習的目的,這與將要

實施的 12年國民基本教育新課綱的精神相契合。

國立臺灣師範大學物理系陸健榮教授恰好在 105 學年度開新課程教授

Arduino 的課程;原本是想請陸老師執筆,但是他介紹選課的化學系鄭依佩同學

來撰寫 Arduino入門手冊。因為老師發現她的筆記很完整,也的確依佩就如陸老

師所說的,很認真和仔細,我很高興認識她。我原先還以為陸老師會介紹一位物

理系的同學來撰寫,但依佩同學是化學系的學生。我們兩人就花了半年多的時間,

完成手冊;期間我發現她真的十分會應用 Arduino 開源程式,還計畫用在化學的

課程中。依佩文筆很流暢,溝通能力好,顯見陸健榮教授是慧眼識英雄!我們每

次見面,依佩都很認真地報告撰寫的進度,不過因為我個人的時間很有限,因此

聚會討論的次數和時間都受到我工作的影響,而有所拖延,也耽誤她一部分學習;

可是她時間掌控得很好,不僅課業沒有落後,106年度上學期在化學系的成績排

名還是第一名,這期間也完成 Arduino 入門手冊的撰寫;實在是相當不容易。

目前已經完成的四章基礎入門的撰寫,十分容易閱讀;依佩一步步解說程式,

讀者很容易執行和修改。依佩還很熱心地寫了一份很有用的電路繪圖免費軟體

(Fritzing)的使用說明,請參見此書的附錄,本人十分推薦 Fritzing 電路繪圖的軟

體,使用起來十分的簡便,本手冊的電路繪圖,也都是用 Fritzing。最後歡迎各

位使用;也歡迎各位提供改正建議。

中等教育階段 自然領與教學研究中心 計畫主持人 賈至達 教授

謹誌於中華民國一七年四月

Page 3: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

目錄

第一章:Arduino簡介 ................................................................................................. 1

1-1 Arduino 介紹 .................................................................................................... 1

1-2 IDE介紹 ........................................................................................................... 7

1-3 電路元件基本介紹........................................................................................... 8

第二章:Blink ........................................................................................................... 10

2-1 使 Arduino 上的數位 13號插腳的 LED燈閃爍 ......................................... 10

2-2 使用麵包板外接 LED燈 ............................................................................... 17

2-3 以麵包板外接 LED燈測量人眼視覺暫留時間 ........................................... 26

第三章:toneMelody ................................................................................................ 29

3-1 無源蜂鳴器的使用 ......................................................................................... 29

3-2 利用 toneMelody使 Arduino 播放音樂 ........................................................ 33

第四章:序列埠監控視窗.......................................................................................... 39

4-1 與 Arduino 溝通 ............................................................................................. 39

4-2 自製電壓表 ..................................................................................................... 49

4-3 簡易光度計 ..................................................................................................... 52

附錄:Fritzing教學 .................................................................................................... 57

Page 4: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

1

第一章:Arduino 簡介

1-1 Arduino 介紹

1. 前言:

Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip

microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入/

輸出介面整合在一塊積體電路上,其優點為體積小、介面簡單。此外,Arduino

編寫程式所使用的開源軟體 IDE也是簡單易上手,即使不太瞭解程式語言,任

何人都可以利用 Arduino做出自己想做的東西。

Arduino 的官方網站中有一個讓大家上傳自己的專案的平台 Arduino

Project Hub,在這裡可以看到各式各樣、極富創意的專案,專案的上傳者們都

會以圖文說明使用器材、步驟、程式內容,或是透過影片說明。在這個網站除

了可以看到 Arduino 的各種應用,自己也可以按照步驟做出有趣、實用的東

西。透過他人的作品來學習,是種很好的學習方式。

除此之外,Arduino 與相關電子材料都容易取得,根據 Arduino 的官方網

站,Arduino在台灣的經銷商為 PlayRobot 瘋機器人,可以在此購買 Arduino,

也可以到其他商家購買。電子材料可以在電子材料行購買,在網路上搜尋可以

找到很多商家,也可以利用購物或拍賣網站取得。在準備材料的部分來說,

Arduino 所需器材皆易取得。

透過學習 Arduino,學生們除了可以學習電路的組裝、麵包板的使用,也可

以學習到程式語言的編寫,這些內容不但實用,而且還可以結合物理、化學的

實驗,例如:在本入門手冊的第四章會介紹自製電壓表,在進行物理實驗中電

學相關的部分就可以使用以 Arduino 製作的電壓表測量電壓。在本入門手冊的

第四章也會介紹利用 Arduino 製作簡易光度計,可與高中基礎化學(三)的「平衡

常數的測量」結合,除了使用比色法,也可以利用自製光度計求出溶液濃度。

Arduino 的教學資料可以在網路上或是坊間書籍找到,但資料這麼多,到底

要從哪裡開始呢?這本入門手冊正是為了讓老師們可以從 Arduino 的基礎開始

學習而編寫的,希望可以讓老師們輕鬆了解 Arduino,並且可以設計出相關的實

作課程,引導學生們進入 Arduino 與自造的世界。

Page 5: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

2

2. Arduino 簡介:

Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip

microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入/

輸出介面整合在一塊積體電路上,其優點為體積小、介面簡單。此外,Arduino

編寫程式所使用的開源軟體 IDE也是簡單易上手,即使不太瞭解程式語言,任

何人都可以利用 Arduino做出自己想做的東西。

可以參考 TED 影片《Massimo Banzi:Arduino 是如何打開想像力的》,影

片連結如下:

https://www.ted.com/talks/massimo_banzi_how_arduino_is_open_sourcing_ima

gination?language=zh-tw

此影片是由 Arduino創辦人之一的Massimo Banzi 介紹 Arduino 的誕生及特

色,以及各式各樣的應用。

此外,也可以參考中央研究院資訊服務處出版的電子報(2013年第 6期),

在這份電子報中有 Arduino 的基本介紹,文章連結如下:

http://newsletter.ascc.sinica.edu.tw/news/read_news.php?nid=2782

Arduino 硬體針對不同需求設計出各式各樣的開發板,對於剛開始接觸

Arduino 的人來說,UNO系列是最適合用來學習編寫程式與電路。UNO目前有

兩種,Arduino UNO 是 USB系列的 Arduino 開發板中的基礎,而另一款

圖 1-1 Arduino UNO 板

(圖片來源:

https://zh.wikipedia.org/wiki/Arduino#/media/File:Arduino_UNO_unpacked.jpg)

Page 6: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

3

Genuino UNO是 Arduino與 Adafruit 在 2015 年聯手推出的新品牌,Genuino

UNO整合了最新開發的 Arduino UNO,是目前 UNO系列中的最新版本。兩款

在外觀上、功能上皆十分相近,為閱讀方便,本入門手冊中的 Arduino UNO泛

指 Arduino UNO與 Genuino UNO。

3. Arduino UNO 構造說明:

以下簡單介紹 Arduino UNO常用的部分,詳細規格請參考 Arduino 官方網

站的說明:

https://www.arduino.cc/en/Main/ArduinoBoardUno?setlang=en

圖 1-2所標示的說明是 Arduino UNO經常使用的部分,在之後的章節會搭

配電路接法做更進一步的說明。

圖 1-2 Arduino UNO 板構造說明

(圖片來源:

https://zh.wikipedia.org/wiki/Arduino#/media/File:Arduino_UNO_unpacked.jpg)

類比輸入插腳

USB插孔

直流電源

輸入插孔

數位輸入/輸出插腳

電源燈

電源相關插腳

與 13插腳並聯的 LED 燈

重置鈕

Page 7: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

4

4. 各類應用:

在這裡簡單介紹 Arduino 的各種應用,可以由此了解在 Arduino 的幫助

下,人們可以快速地做出自己想要的東西,以下分為四個項目舉例:

(1) 入門手冊內:

(a) 自製電壓表:利用 Arduino 與 IDE的序列埠監控視窗,以及兩條雙公線

即可測量電路的電壓,詳細內容請參閱 4-2小節。

(b) 簡易光度計:利用 Arduino 與 IDE的序列埠監控視窗,以及 LED燈、

光敏電阻等電子材料,製作一部簡易的光度計,可以測量不同濃度的溶

液的透光率,藉以推算出未知濃度溶液之濃度,詳細內容請參閱 4-3小

節。

(2) TED介紹影片:

在《Massimo Banzi:Arduino 是如何打開想像力的》中,講者提到許多利

用 Arduino 製作的作品,以下簡單介紹幾個影片中的例子:

(a) 貓咪餵食容器(影片 3分 19秒開始):作者有養兩隻貓,其中一隻生病

了,所以作者需讓兩隻貓分開食用飼料。透過 Arduino 與貓咪們項圈中

安裝的晶片,可以識別貓咪的身分,讓牠們使用不同的飼料碗。

圖 1-3 貓咪餵食容器

Page 8: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

5

(b) 四軸飛行器(影片 6分 40秒開始):這是一種小型的直升機模型,原本

像這樣的四軸飛行器在前幾年都是由軍方掌握的技術,現在已經開源

了,使用方便,在網路上都可以買到。

(c) 「夠了」(影片 7分 14秒開始):利用 Arduino,在看電視時如果出現上

鏡率很高的人們,它會自動將電視靜音。

圖 1-4 四軸飛行器

圖 1-5 「夠了」

Page 9: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

6

(3) 科展:

在中華民國中小學科學展覽會中,Arduino 是個常見的研究設備,以下簡單

舉出幾個在科展中使用到 Arduino 的作品:

(a) 56屆國立大甲高級工業職業學校 讓 arduino 來做資源垃圾分類 (最佳

團隊合作獎)

(b) 56屆新北市立新北高級工業職業學校 手勢密碼鎖

(c) 54屆新北市立育林國民中學 卸貨系統安全裝置研究 (最佳創意獎)

(4) 網路資源:

除了在前言中提到的 Arduino Project Hub,在 Youtube上也有許多 Arduino

的教學影片,例如:Fritzing Org有製作一系列的 Arduino 影片,從最基本的電

路基礎至各式各樣進階應用都有。此外,Fritzing Org是一個開源的平台,他們

提供一套免費軟體 Fritzing可以繪製電路圖,這個軟體有正體中文版,使用上

簡單易操作,在本入門講義中 Arduino 的電路圖就是使用 Fritzing繪製的。

5. 參考資料:

(1) Arduino官方網站對 Arduino UNO與 Genuino UNO 的說明

https://www.arduino.cc/en/Main/ArduinoBoardUno?setlang=en

(2) Arduino官方專案分享平台 Arduino Project Hub

https://create.arduino.cc/projecthub

(3) Arduino經銷商

https://www.arduino.cc/en/Main/Buy

(4) Arduino在台經銷商PlayRobot 瘋機器人

http://www.playrobot.com/

(5) 中華民國第 56 屆中小學科學展覽會高級中等學校組

http://activity.ntsec.gov.tw/activity/race-1/56/senior.html

(6) 中華民國第 54 屆中小學科學展覽會國中組

http://activity.ntsec.gov.tw/activity/race-1/54/high.htm

(7) Fritzing Org的 Youtube 頻道

https://www.youtube.com/user/fritzingpcb/featured

(8) Fritzing Org

http://fritzing.org/home/

Page 10: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

7

1-2 IDE介紹

1. IDE簡介:

Arduino所使用的軟體為 IDE(Integrated Development Environment),這是一

個開源的軟體,IDE可以很簡單地編寫程式碼,並將程式上傳至 Arduino 中。

IDE的系統相容性很高,可以在 Windows、Mac OS X、Linux 上執行。IDE是

以 Java編寫的一套軟體,本身源自於 Processing以及其他開源軟體。IDE使用

與 C 語言及 C++相似的程式語言,並提供了函式庫,以 IDE編寫的程式的格式

為「sketch」。

2. IDE下載與安裝:

Arduino IDE可以從 Arduino 官方網站下載,網址如下:

https://www.arduino.cc/en/Main/Software

下載完成後,可以照著官方網站上的步驟進行安裝,Windows 的安裝步驟

的網址如下:https://www.arduino.cc/en/Guide/Windows?setlang=en

3. 介面說明:

圖 1-6 Arduino IDE 介面說明

編譯 上傳 新增 開啟 儲存

檔案名稱

序列埠監控視窗

程式編寫處

訊息顯示處 目前使用的開發

板與序列埠

Page 11: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

8

以上簡單介紹 IDE的介面,在之後的章節會仔細介紹 IDE的使用。

4. 參考資料:

(1) Arduino官方網站-Software

https://www.arduino.cc/en/Main/Software

(2) 維基百科-Arduino/軟體

https://zh.wikipedia.org/wiki/Arduino#.E8.BB.9F.E9.AB.94

1-3 電路元件基本介紹

1. 基礎電子材料與電路說明:

以下影片是 Arduino創辦人之一的Massimo Banzi 介紹基礎的電路知識,例

如:電源(正極)、電線、電阻、接地線(負極)、串聯、並聯,以及常用電子材

料、麵包板的使用。

https://www.youtube.com/watch?v=E3W8Fxc7tHo

2. 什麼是麵包板?

在以下影片的 3分 58秒~5分 23秒中介紹什麼是麵包板,以及麵包板的

方便之處:

https://www.youtube.com/watch?v=xIlhSKaM4yo

3. 電路符號說明:

在繪製電路元件時,會使用簡單的符號來表示電路元件,以下列出幾個常

用的電路符號,詳細說明請見維基百科的「電路符號」條目:

https://zh.wikipedia.org/wiki/%E9%9B%BB%E8%B7%AF%E7%AC%A6%E8%99

%9F

直流電源

交流電源

發光二極體(LED

燈) 光電二極體

電阻 光敏電阻

Page 12: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

9

接地(GND)

電路圖

https://zh.wikipedia.org/wiki/%E9%9B%BB%E8%B7%AF%E5%9C%96

4. 參考資料:

如以上內容所附網址。

Page 13: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

10

第二章:Blink

2-1 使 Arduino 上的數位 13號插腳的 LED燈閃爍

1. 功能簡介:

Blink 就是通路與斷路不停重複,Blink 如同字面上的意思,就像是眨眼睛

一樣,也可以把 Blink 想成像是電燈開關一樣,不停地開開關關。Blink 在

Arduino 的程式中是一個可以簡單觀察 Arduino 物理輸出的程式,透過此程式可

以學習 Arduino 的基本介面及操作。

本小節會介紹 Blink 的程式的基礎,之後的小節會介紹 Blink 的延伸應用。

2. 使用器材:

(1) Arduino UNO

(2) 電腦(已安裝好 IDE)

(3) USB接線(用來連接 Arduino UNO與電腦)

圖 2-1 Blink 電路圖

Page 14: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

11

3. 程式說明:

/* 1

Blink 2

Turns on an LED on for one second, then off for one second, repeatedly. 3

4

Most Arduinos have an on-board LED you can control. On the UNO, MEGA and 5

ZERO 6

it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to 7

the correct LED pin independent of which board is used. 8

If you want to know what pin the on-board LED is connected to on your Arduino 9

model, check 10

the Technical Specs of your board at https://www.arduino.cc/en/Main/Products 11

12

This example code is in the public domain. 13

14

modified 8 May 2014 15

by Scott Fitzgerald 16

17

modified 2 Sep 2016 18

by Arturo Guadalupi 19

20

modified 8 Sep 2016 21

by Colby Newman 22

*/ 23

24

25

// the setup function runs once when you press reset or power the board 26

27

void setup() 28

29

// initialize digital pin LED_BUILTIN as an output. 30

pinMode(LED_BUILTIN, OUTPUT); 31

32

33

34

// the loop function runs over and over again forever 35

void loop() 36

37

一段註解(多於一行)的開始(給使用者看的,說明程

式的內容與功用,程式執行時會直接跳過註解)

一段註解的結束

//表註解,但只有後面一行是 以下進行設定

用來傳遞參數 大括號中間是表示副程

式內容、副程式的設定

M 需大寫

小括號內逗號前面:要執行程式的插腳

小括號內逗號後面:功能(需大寫) 以下執行迴圈(loop)

Page 15: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

12

digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage 38

level) 39

delay(1000); // wait for a second 40

digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage 41

LOW 42

delay(1000); // wait for a second 43

44

在 Blink 中不需宣告插腳功能,因為程式中 LED_BUILTIN(第 31 行)即代表

數位插腳 13號,此插腳本身就與 UNO上的 LED燈並聯,所以在編寫程式時

不需宣告。

在第 40行中的 delay的秒數單位是毫秒,即千分之一秒,所以若設為

delay(500),就是 LED 燈的亮與暗會延遲 0.5 秒。

1. 實作步驟:

(2) 開啟電腦中的 IDE

(1) 將 Arduino UNO與電腦以 USB線連接。

圖 2-2

HIGH需大寫,表輸出

high(5V:high,0V:low)

Page 16: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

13

1

2

3

(3) 點選工具,確認所使用的 Arduino 板為 Arduino UNO。

圖 2-3

1

2 3

(4) 點選工具,確認序列埠是在最新的 COM(即數字最大的 COM)。

圖 2-4

Page 17: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

14

1

2

3 4

(5) 開啟檔案>範例>01.Basics>Blink

圖 2-5

為編譯, 為上傳。

先按下編譯。

(6) 按下「編譯」鍵,以確認程式沒有錯誤。

圖 2-6

Page 18: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

15

若程式沒有錯誤,此處會

顯示「編譯完畢。」

(7) 若程式沒有錯誤,紅框處會顯示「編譯完畢。」

圖 2-7

按下上傳後若沒有錯誤,此

處會顯示「上傳完畢。」

(8) 確認程式沒有錯誤後,再按下「上傳」鍵。若上傳成功,紅框處會

顯示「上傳完畢。」

圖 2-8

Page 19: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

16

2. 延伸應用:

(1) 使用麵包板外接 1個 LED燈、外接 3 個 LED 燈(見 2-2小節)。

(2) 以麵包板外接 LED燈,測量人眼視覺暫留時間,透過此實作可以學習如何

處理數據、了解何謂高斯曲線及常態分佈(見 2-3小節)。

3. 結語:

對於初學者來說,Blink 是一個很適合作為 Arduino 入門的程式,可以透過

Blink 的程式學習 Arduino 程式編寫的要素與重點。Blink 也是個很實用的程

式,如果想要確認 Arduino 是否正常運作,可以照著本小節的方法將 Blink 上傳

至 Arduino,LED燈有照著 delay的秒數閃爍,表示 Arduino 有正常運作。

4. 參考資料:

(1) Arduino官方 Blink 教學:https://www.arduino.cc/en/Tutorial/Blink

(9) 上傳完畢後,數位 13號插腳的 LED燈會不停閃爍。根據設定的時

間間隔閃爍,在範例中的設定是 500毫秒,LED燈會亮 500毫秒,再滅

500 毫秒,不停重複。

圖 2-9

上傳完畢後,此處的 LED

燈會閃爍(間隔 500毫秒)

Page 20: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

17

2-1 使用麵包板外接 LED 燈

1. 功能簡介:

在 2-1小節中已經介紹過 Blink 程式的基本內容,在此小節中會介紹如何使

用麵包板外接 LED燈,學習使用麵包板與電路元件,並學習上拉電路與下拉電

路。

電源(5V) 電源(5V)

圖 2-10 上拉電路 圖 2-11 下拉電路

發光二極體

發光二極體 電阻(220Ω)

電阻(220Ω)

GND GND

圖 2-12 下拉電阻的電路圖

Page 21: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

18

2. 使用器材:

(1) Arduino UNO

(2) 電腦(已安裝好 IDE)

(3) USB接線

(4) 麵包板,1個

(5) LED燈,3顆

(6) 杜邦雙母線,3條

(7) 杜邦雙公線,2條

(8) 電阻(220歐姆),3個

3. 程式說明:

在 2-1小節中已經介紹過 Blink 程式的內容,我們可以簡化 Blink 的內容,

讓程式更加簡潔。

//宣告 1

int RedPin = 13; 2

//設定 3

void setup() 4

pinMode(RedPin, OUTPUT); 5

6

//執行 7

void loop() 8

digitalWrite(RedPin, HIGH); 9

delay(500); 10

digitalWrite(RedPin, LOW); 11

delay(500); 12

13

如果是使用麵包板外接三個 LED燈,在宣告、設定、執行部分都需加上另

外兩個 LED燈的指令,如下所示:

//宣告 1

int RedPin = 10; 2

int YellowPin = 13; 3

int GreenPin = 7; 4

5

//設定 6

void setup() 7

pinMode(RedPin, OUTPUT); 8

Page 22: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

19

pinMode(YellowPin, OUTPUT); 9

pinMode(GreenPin, OUTPUT); 10

11

12

//執行 13

void loop() 14

digitalWrite(RedPin, HIGH); 15

delay(100); 16

digitalWrite(RedPin, LOW); 17

delay(100); 18

19

digitalWrite(YellowPin, HIGH); 20

delay(100); 21

digitalWrite(YellowPin, LOW); 22

delay(100); 23

24

digitalWrite(GreenPin, HIGH); 25

delay(100); 26

digitalWrite(GreenPin, LOW); 27

delay(100)28

Page 23: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

20

4. 實作步驟:

一般電路中所使用的 LED燈只需 2V的電源,但 UNO的電源供給為 5V,

因此在電路中需要加上一個保護電阻(220歐姆)避免 LED燈燒壞。

根據電阻的色碼表,220歐姆的電阻色碼標示為「紅紅黑黑」,紅色表示

「2」、黑色表示「0」,第二個黑(即色碼的第四位)是次冪,代表是 10的幾次

方,所以「紅紅黑黑」寫成數字是220 × 100。而電阻色碼通常會有五位,第五

位的顏色代表公差,在此使用的電阻色碼為「紅紅黑黑棕」,棕色表示公差為

±1%。

表 2-1 電阻色碼表(來源:維基百科

https://zh.wikipedia.org/wiki/%E9%9B%BB%E9%98%BB%E8%89%B2%E7%

A2%BC)

色碼 代表數字 倍率 誤差

黑 0 ×100 –

棕 1 ×101 ±1% F

紅 2 ×102 ±2% G

橙 3 ×103 –

黃 4 ×104 –

綠 5 ×105 ±0.5% D

藍 6 ×106 ±0.25% C

紫 7 ×107 ±0.1% B

灰 8 ×108 ±0.05% A

白 9 ×109 –

金 – ×10-1 ±5% J

銀 – ×10-2 ±10% K

透明 – – ±20% M

上拉電阻:

圖 2-12 220歐姆電阻

Page 24: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

21

以下步驟是使用上拉電阻的接法,上拉電阻是指將保護用的電阻接在電路

元件(在此為 LED燈)之前,如下圖所示:

電源(5V)

發光二極體

電阻(220Ω)

GND

(1) 雙公線一頭接在 GND(接地),一頭接在麵包板的第 2列。

接電路時應先接地,以避免觸電的危險。一般都用黑線接在 GND

上。

圖 2-13

Page 25: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

22

(2) 將 LED長腳、電阻一腳接在麵包板上第 25行,LED短腳接在第 2

列,電阻的另一腳接到 19行。

圖 2-14

(3) 拿一條橘色雙公線(盡量不要使用黑色的線,黑色的線都用來接地,

以免搞混),一頭接麵包板的第 19行,一頭接在 UNO板的數位輸入/輸

出 13 插腳。

圖 2-15

Page 26: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

23

5. 延伸應用:

除了使用單色的 LED 燈,也可以利用 RGB LED燈與可變電阻製作可調式

光源,詳細作法如下連結:

https://create.arduino.cc/projecthub/shakram02/arduino-color-mixer-

d6264a?ref=platform&ref_id=424_popular__beginner_&offset=6

還可以利用 6 顆 LED 燈與按鈕製作以燈亮的數目代表骰子的數字大小,詳

細作法如下連結:

https://create.arduino.cc/projecthub/EvdS/led-dice-

885cf1?ref=platform&ref_id=424_popular__beginner_&offset=1

6. 結語:

在本小節中,可以學習到麵包板與電路的基本使用,以及認識電阻色碼與

上拉電路、下拉電路,再加上前個小節 Blink 程式的使用,相當適合作為

Arduino 的入門課程。

7. 參考資料:

(1) 維基百科-上拉電阻:

(4) 開啟 IDE後,開啟範例 Blink,編譯後上傳至 Arduino。詳細步驟請

見 2-1小節之實作步驟。

上傳成功後,LED燈便會閃爍。

圖 2-16 電路完成圖。

Page 27: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

24

https://zh.wikipedia.org/wiki/%E4%B8%8A%E6%8B%89%E7%94%B5%E9%9

8%BB

(2) 維基百科-電阻色碼:

https://zh.wikipedia.org/wiki/%E9%9B%BB%E9%98%BB%E8%89%B2%E7%

A2%BC

Page 28: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

25

2-2 以麵包板外接 LED燈測量人眼視覺暫留時間

1. 功能簡介:

在此小節中可以學習如何利用 Arduino UNO 與麵包板外接 LED燈來測量

人眼的視覺暫留時間,並透過此實作學習如何處理實驗數據,以及了解何謂高

斯曲線及常態分佈。

2. 使用器材:

(1) Arduino UNO

(2) 電腦(已安裝好 IDE)

(3) 麵包板,1個

(4) LED燈,1個(顏色可限定都使用紅色)

(5) 電阻(220歐姆),1個

(6) 雙公線,2條

3. 程式說明:

在此使用的程式為 Blink,與 2-2小節使用的程式相同,詳細說明可參考 2-

2小節。在實驗中需要更改的地方只有 delay的秒數(第 10行與第 12 行),逐漸

減少秒數,直到眼睛看不出 LED燈閃爍,此秒數(單位為毫秒)即是實驗者眼睛

視覺暫留的時間。

//宣告 1

int RedPin = 13; 2

//設定 3

void setup() 4

pinMode(RedPin, OUTPUT); 5

6

//執行 7

void loop() 8

digitalWrite(RedPin, HIGH); 9

delay(10); 10

digitalWrite(RedPin, LOW); 11

delay(10); 12

Page 29: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

26

4. 實作步驟:

利用 Arduino UNO 的 Blink 指令,並使用麵包板外接一顆 LED燈,可參考

2-2小節中的實作步驟。調整指令中 High、Low的 delay的秒數,直到眼睛看不

出 LED燈的閃爍,此秒數即為視覺暫留時間。

可以讓班上學生們進行一次實驗後,將實驗結果寫在黑板上,然後利用

Excel 進行數據分析,以下為數據處理範例:

(1) 利用 Excel 將班上同學們的實驗數據記錄下來,如以下表格所示:

表 2-2 班上同學們的視覺暫留時間數據(依照在教室的座位):(單位:毫秒)

第一排 第二排 第三排 第四排

9 11 10

9 10 12 11

10 11 11 11

10 10 10 11

9 10 11 11

10 9

12 10 13

12 9 11

12 9 11

10 12 9 13

(2) 統計人數對秒數關係,整理成表格,並利用 Excel 的圖表功能製作直條

圖,如下所示:

表 2-3 人數對秒數關係表

秒數(毫秒) 人數

9 7

10 10

11 10

12 5

13 2

Page 30: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

27

圖 2-18 人數對視覺暫留時間作圖

由圖 2-18可知本實驗結果與常態分佈相似,若樣本數更多的話,應該可以

更接近常態分佈。

5. 結語:

在本小節中利用 Arduino UNO、外接 LED燈與 Blink 程式,測量人眼的視

覺暫留時間,除了可以應用第 2章所學的 Blink 與電路接法,也可以讓學生學

習如何整理實驗數據,並使用 Excel 進行數據處理。

6. 參考資料:

(1) 維基百科-視覺暫留:

https://zh.wikipedia.org/wiki/%E8%A6%96%E8%A6%BA%E6%9A%AB%E7%

95%99

(2) 維基百科-常態分佈:

https://zh.wikipedia.org/wiki/%E6%AD%A3%E6%80%81%E5%88%86%E5%B

8%83

7

10 10

5

2

0

2

4

6

8

10

12

9 10 11 12 13

人數

秒數(毫秒)

視覺暫留時間

Page 31: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

28

第三章:toneMelody

3-1 無源蜂鳴器的使用

1. 功能簡介:

在本小節中,利用無源蜂鳴器、Arduino 與 Blink 程式,可以使無源蜂鳴器

發出聲音。如同在第 2章中利用 Blink 使 LED 燈閃爍,Blink 規律地開與關(即

程式中的 delay時間)可以控制無源蜂鳴器發出頻率固定的聲音。

蜂鳴器是一種可以發出聲音的電子元件,根據發聲原理可分為機械型、機

電型及壓電型。蜂鳴器又可以用是否含有震盪源分為有源蜂鳴器及無源蜂鳴

器,所謂的「源」就是震盪源的意思,兩者差別在於有源蜂鳴器本身含有震盪

電路,所以一通電就會鳴叫;而無源蜂鳴器不含震盪電路,所以需要以頻率 2k

~5k的方波驅動。一般來說,相較於有源蜂鳴器,無源蜂鳴器的價格較便宜。

在本章所使用的無源蜂鳴器為壓電型蜂鳴器,即是利用壓電效應來發出聲

音。壓電效應是指藉由電壓的改變使壓電材料發生形變(稱為逆壓電效應),或

是藉由壓電材料的形變造成電場的改變(稱為正壓電效應),而壓電型蜂鳴器是

利用逆壓電效應,使蜂鳴器中的壓電材料振動以發出聲音。

關於蜂鳴器與壓電效應等更詳細的介紹,請見參考資料中所附資訊。

2. 使用器材:

(1) Arduino UNO

(2) 電腦(已安裝好 IDE)

(3) 麵包板,1個

(4) 杜邦雙公線,2條

(5) 無源蜂鳴器,1個

3. 程式說明:

在本小節中使用在 2-2小節中介紹的 Blink 程式,或是直接開啟 IDE 中的

範例 > 01.Basics > Blink 也可以。delay時間在 2-2小節中是控制 LED燈閃爍時

間間隔,在此小節則是控制無源蜂鳴器發出聲響的頻率,無源蜂鳴器會像節拍

器一樣規律地發出聲音,若將 HIGH與 LOW 的時間都減少,無源蜂鳴器發出

的聲音頻率便會增加。

//宣告 1

int Buzzer = 13; 2

//設定 3

void setup() 4

pinMode(Buzzer, OUTPUT); 5

6

//執行 7

Page 32: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

29

void loop() 8

digitalWrite(Buzzer, HIGH); 9

delay(500); 10

digitalWrite(Buzzer, LOW); 11

delay(500); 12

13

4. 實作步驟:

無源蜂鳴器與 LED燈相似,元件有分正極、負極,如圖 3-1所示。在連接

電路時須注意正負極是否接到正確的位置。

圖 3-1 無源蜂鳴器。左圖:無源蜂鳴器的正面。右圖:無源蜂鳴器的底

部,接腳處會標示正極與負極,連接電路時即按照標示連接。

Page 33: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

30

此時無源蜂鳴器便會按照 delay時間的設定,發出固定頻率的聲音。

5. 延伸應用:

在本小節中只有簡單介紹無源蜂鳴器的使用,在下個小節將會介紹運用

toneMelody這個程式使 Arduino播放音樂。

6. 結語:

在本小節中,利用 Arduino UNO、無源蜂鳴器與 Blink 程式,使無源蜂鳴

器發出聲音,除了複習 Blink 程式的使用,也可以學習到無源蜂鳴器的使用及

圖 3-2 電路完成圖。無源蜂鳴器的正極連接電路的正極,無源蜂鳴器的

負極連接電路的負極。

(1) 開啟 IDE後,複製程式說明中的程式碼或開啟範例 Blink,編譯後上

傳至 Arduino。詳細步驟請見 2-1小節之實作步驟。

上傳成功後,LED燈便會閃爍。

(2) 將無源蜂鳴器的負極以雙公線連接至 UNO板的 GND,將無源蜂鳴

器的正極以雙公線連接至 UNO板的數位 13插腳。

(因為一般的無源蜂鳴器可直接接受 UNO板的輸出電壓,所以不須連接

保護電阻。)

Page 34: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

31

電路接法,以及了解壓電效應的應用。

7. 參考資料:

(1) 維基百科-蜂鳴器的介紹:https://en.wikipedia.org/wiki/Buzzer

(2) 維基百科-壓電效應:https://zh.wikipedia.org/wiki/壓電效應

Page 35: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

32

3-2 利用 toneMelody使 Arduino 播放音樂

1. 功能簡介:

在本小節中,利用無源蜂鳴器、Arduino 與 toneMelody程式,可以使無源

蜂鳴器播放音樂。

2. 使用器材:

(1) Arduino UNO

(2) 電腦(已安裝好 IDE)

(3) 麵包板,1個

(4) 杜邦雙公線,2條

(5) 無源蜂鳴器,1個

3. 程式說明:

開啟 IDE中的範例 > 02.Digital > toneMelody。

/* 1

Melody 2

3

Plays a melody 4

5

circuit: 6

* 8-ohm speaker on digital pin 8 7

8

created 21 Jan 2010 9

modified 30 Aug 2011 10

by Tom Igoe 11

12

This example code is in the public domain. 13

14

http://www.arduino.cc/en/Tutorial/Tone 15

16

*/ 17

#include "pitches.h" 18

19

// notes in the melody: 20

int melody[] = 21

NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, 22

NOTE_C4 23

; 24

int表宣告,

在此宣告這首曲子的音符

在 toneMelody中引入資料庫"pitches.h",

在程式說明的最後面會介紹

Page 36: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

33

25

// note durations: 4 = quarter note, 8 = eighth note, etc.: 26

int noteDurations[] = 27

4, 8, 8, 4, 4, 4, 4, 4 28

; 29

30

void setup() 31

// iterate over the notes of the melody: 32

for (int thisNote = 0; thisNote < 8; thisNote++) 33

34

// to calculate the note duration, take one second 35

// divided by the note type. 36

//e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. 37

int noteDuration = 1000 / noteDurations[thisNote]; 38

tone(8, melody[thisNote], noteDuration); 39

40

// to distinguish the notes, set a minimum time between them. 41

// the note's duration + 30% seems to work well: 42

int pauseBetweenNotes = noteDuration * 1.30; 43

delay(pauseBetweenNotes); 44

// stop the tone playing: 45

noTone(8); 46

47

48

49

void loop() 50

// no need to repeat the melody. 51

52

for的用法會在程式說

明的最後面介紹

在此範例中沒有重複播放,

所以不需設定迴圈的執行

int表宣告,

在此宣告這首曲子的節奏,

即是四分音符或是八分音符

Page 37: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

34

第 18行為#include "pitches.h",可以在 IDE中看到有兩個標籤頁,如下圖

所示:

若點選至 pitches.h,可以看到的畫面如下:

圖 3-3 toneMelody於 IDE的畫面。紅框處是標籤頁,左邊的 toneMelody

是程式內容,也就是程式說明中的內容,而右邊的 pitches.h 為引入的資料

庫。

Page 38: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

35

在標籤頁事先定義好音高後,在 toneMelody中編寫程式就可以直接寫

「NOTE_音高」來表示,不須再寫出該音高的頻率,可以使程式更加簡潔。

第 33行的 for在 Arduino 中是「有控制的重複指令」,for的用法說明如

下:

for (initialization; condition; increment)

//statement(s);

例如:

for(int x = 2; x < 100; x = x * 1.5)

圖 3-4 pitches.h標籤頁。pitch 即是指「音高」,在這個標籤頁中可以看

到定義了各種音符(NOTE)的頻率。

開始 條件 增量

做大括號內的指令

Page 39: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

36

println(x);

執行後的結果為:2,3,4,6,9,13,19,28,42,63,94

在這個範例中因為沒有設定小數點,所以出現的數字都是無條件捨去。

4. 實作步驟:

無源蜂鳴器的電路接法與 3-1小節相似,差別只在於 toneMelody中的正極

為數位 8號插腳。

圖 3-5 電路完成圖。無源蜂鳴器的正極連接電路的正極,無源蜂鳴器的

負極連接電路的負極。

(1) 開啟 IDE後,開啟範例 toneMelody,編譯後上傳至 Arduino。

(2) 將無源蜂鳴器的負極以雙公線連接至 UNO板的 GND,將無源蜂鳴

器的正極以雙公線連接至 UNO板的數位 8號插腳。

(因為一般的無源蜂鳴器可直接接受 UNO板的輸出電壓,所以不須連接

保護電阻。)

Page 40: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

37

5. 延伸應用:

瞭解了 toneMelody的內容之後,就可以自行寫曲以 Arduino 與無源蜂鳴器

播放,以下為一些 Arduino 論壇中關於用 toneMelody寫曲的文章,也有更詳細

的音樂編寫說明與範例可以參考:

(1) 以 Arduino 與壓電蜂鳴器播放星際大戰主題曲:

https://gist.github.com/nicksort/4736535

(2) 播放樂譜?UNO + 一個喇叭就足夠了:

http://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=13565

(3) Arduino 學習心得-簡單編製各種歌曲:

http://www.geek-workshop.com/thread-288-1-1.html

6. 結語:

在本小節中可以學習如何引入資料庫,在編寫程式時可以更加方便,也可

以讓程式看起來簡潔明瞭,此外也可以讓學生認識音高與頻率的關係,並可以

利用 toneMelody編寫歌曲。

7. 參考資料:

(1) Arduino官方 toneMelody教學:

https://www.arduino.cc/en/Tutorial/toneMelody

(2) Arduino官方 include教學:

https://www.arduino.cc/reference/it/language/structure/further-syntax/include/

(3) 維基百科-音高:

https://zh.wikipedia.org/wiki/%E9%9F%B3%E9%AB%98

(4) Arduino官方 for教學:

https://www.arduino.cc/reference/en/language/structure/control-structure/for/

Page 41: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

38

第四章:序列埠監控視窗

4-1 與 Arduino溝通

1. 功能簡介:

在本小節中,利用 Arduino UNO的類比輸入插腳與 IDE的序列埠監控視

窗,可以查看 Arduino 中的參數,例如電壓。

圖 4-1 Arduino UNO 板的類比輸入插腳位置

(圖片來源:

https://zh.wikipedia.org/wiki/Arduino#/media/File:Arduino_UNO_unpacked.jpg)

類比輸入插腳

圖 4-2 Arduino IDE 介面中「序列埠監控視窗」鍵的位置

序列埠監控視窗

Page 42: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

39

量測數據在實驗中是非常重要的部分,得到數據後才可以進行分析。透過

本章節的介紹,可以學習到如何利用 Arduino 與 IDE進行數據的量測。

2. 使用器材:

(1) Arduino UNO

(2) 電腦(已安裝好 IDE)

(3) 麵包板,1個

(4) 杜邦雙公線,3條

(5) LED燈,1個

(6) 電阻(220歐姆),1個

圖 4-3 電路完成圖。利用 A0與雙公線測量電壓大小。

Page 43: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

40

3. 程式說明:

本小節使用的程式如下,先將此段文字複製到 IDE中,編譯後執行。

在此程式中有兩個部分,第一個部分是利用 2-2小節所學的 Blink,使 LED

燈閃爍,在 Blink 電路中 LED燈的電壓是量測的目標。第二個部分就是這個小

節要學習的「序列埠監控視窗」,在這個小節中是量測 LED燈在發光時的高電

壓與熄滅時的低電壓分別為多少。

const int ledPin = 13; // LED connected to digital pin 13 as output 1

const int sensorPin = 0; // connect input signsl to analog input 0 2

const int delaytime = 500; // declare delay time in ms 3

int reading; // declare an integer variable named as reading 4

5

void setup() 6

7

pinMode(ledPin, OUTPUT); // enable output on the led pin 13 8

Serial.begin(9600); // initialize Serial Monitor 9

10

11

void loop() 12

13

digitalWrite(ledPin, HIGH); // set the LED on 14

reading = analogRead(sensorPin); // read the analog input 0 15

Serial.print("Reading Value of HI: "); 16

Serial.println(reading); // print reading to serial monitor 17

delay(delaytime); // wait duration dependent on light level 18

19

digitalWrite(ledPin, LOW); // set the LED off 20

reading = analogRead(sensorPin); // read the analog input 0 21

Serial.println("Reading Value of LO: "); 22

Serial.println(reading); // print reading to serial monitor 23

delay(delaytime); 24

25

上述程式說明如下:

const int ledPin = 13; // LED connected to digital pin 13 as output

const int sensorPin = 0; // connect input signsl to analog input 0

const int delaytime = 500; // declare delay time in ms

int表宣告

結束時要有分號(13後面)

sensor:監看;用A0

插腳來監看。設sensor

常數為整數0

設常數為整數 500

此行為delay的時間

Page 44: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

41

int reading; // declare an integer variable named as reading

void setup()

pinMode(ledPin, OUTPUT); // enable output on the led pin 13

Serial.begin(9600); // initialize Serial Monitor

void loop()

digitalWrite(ledPin, HIGH); // set the LED on

reading = analogRead(sensorPin); // read the analog input 0

Serial.print("Reading Value of HI: ");

Serial.println(reading); // print reading to serial monitor

delay(delaytime); // wait duration dependent on light level

digitalWrite(ledPin, LOW); // set the LED off

reading = analogRead(sensorPin); // read the analog input 0

Serial.println("Reading Value of LO: ");

Serial.println(reading); // print reading to serial monitor

delay(delaytime);

宣告變數:讀數(reading)

要監看的常數,從A0的插腳讀進來

13腳為輸出

此為敘述,數字可以改

數字是傳給序列埠的速度

因為要以序列埠輸出,所以要設定 執行迴圈

HIGH表示LED為亮

類比輸入為READ

(註:輸出為WRITE)

這行的意思是:用類比輸入插腳讀完

數值,把結果放到等號左邊的reading

()裡寫0也可以,因為在宣告中設為0

把它從序列埠視窗印(print)出來

""之間的內容只是文字內容,

可以寫量測目標為何

println:印出讀數來 停個一秒,

讓我們可以

使LED暗下來

用類比輸入腳讀完數值,把

結果放到等號左邊的reading

在print後加上ln

就會換行,即是

line的意思

Page 45: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

42

4. 實作步驟:

(2) 先把 LED以下拉電阻接好,詳細接法可參考 2-2小節。

圖 4-4

(3) 再拿一條白色雙公線,一頭接 A0,一頭接 13腳,可從 A0 得知 13

腳傳來的電壓為多少。

圖 4-5

Page 46: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

43

將程式複製至IDE,編譯後執行,此時點選放大鏡,即「序列埠監控視

窗」,會出現以下數據:

Reading Value of HI: 954

Reading Value of LO:

0

Reading Value of HI: 956

Reading Value of LO:

0

Reading Value of HI: 956

Reading Value of LO:

0

UNO板本身記憶體是用10Bit來儲存,可以有2^10=1024種組合,數位輸入

(analogin)只能在0~5V的範圍內,所以5V約為monitor表示的1023。

提醒:每次使用完序列埠監控視窗後,一定要將序列埠監控視窗關閉!

之後再進行程式的修改。

延伸 1 顯示改為電壓值:

reading = reading*(5-0)/(1023-0); //Rescaling the reading to voltage

可以顯示出電壓,數學上的單位轉換

const int ledPin = 13; // LED connected to digital pin 13 as output 1

const int sensorPin = 0; // connect input signsl to analog input 0 2

圖 4-6 電路完成圖。

Page 47: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

44

const int delaytime = 500; // declare delay time in ms 3

int reading; // declare an integer variable named as reading 4

5

void setup() 6

7

pinMode(ledPin, OUTPUT); // enable output on the led pin 13 8

Serial.begin(9600); // initialize Serial Monitor 9

10

11

void loop() 12

13

digitalWrite(ledPin, HIGH); // set the LED on 14

reading = analogRead(sensorPin); // read the analog input 0 15

reading = reading*(5-0)/(1023-0); //Rescaling the reading to voltage 16

Serial.print("Reading Value of HI: "); 17

Serial.println(reading); // print reading to serial monitor 18

delay(delaytime); // wait duration dependent on light level 19

20

digitalWrite(ledPin, LOW); // set the LED off 21

reading = analogRead(sensorPin); // read the analog input 0 22

reading = reading*(5-0)/(1023-0); //Rescaling the reading to voltage 23

Serial.println("Reading Value of LO: "); 24

Serial.println(reading); // print reading to serial monitor 25

delay(delaytime); 26

27

顯示結果如下(有把LOW的讀值的ln去掉)

Reading Value of HI: 4

Reading Value of LO: 0

Reading Value of HI: 4

Reading Value of LO: 0

IDE不會做四捨五入,都是無條件捨去,所以像是4.1或4.9都會捨去小數點

後的數字變成只有4。而在延伸二的設定中,可以顯示出數據的小數的部分。

記得把序列埠視窗關掉

延伸2顯示改為有小數位:

將原本程式中第4行的int(表整數),改為float(小數點可以移來移去的)即

可,如下所示:

const int ledPin = 13; // LED connected to digital pin 13 as output 1

const int sensorPin = 0; // connect input signsl to analog input 0 2

const int delaytime = 500; // declare delay time in ms 3

float reading; // declare an integer variable named as reading 4

5

void setup() 6

7

Page 48: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

45

pinMode(ledPin, OUTPUT); // enable output on the led pin 13 8

Serial.begin(9600); // initialize Serial Monitor 9

10

11

void loop() 12

13

digitalWrite(ledPin, HIGH); // set the LED on 14

reading = analogRead(sensorPin); // read the analog input 0 15

Serial.print("Reading Value of HI: "); 16

Serial.println(reading); // print reading to serial monitor 17

delay(delaytime); // wait duration dependent on light level 18

19

digitalWrite(ledPin, LOW); // set the LED off 20

reading = analogRead(sensorPin); // read the analog input 0 21

Serial.println("Reading Value of LO: "); 22

Serial.println(reading); // print reading to serial monitor 23

delay(delaytime); 24

25

結果如下:

Reading Value of HI: 4.67

Reading Value of LO: 0.00

Reading Value of HI: 4.67

Reading Value of LO: 0.00

延伸3設定顯示的小數點位數:

在第 17行與第 23行,將 Serial.println(reading);的括號裡加上「,3」,可顯

示小數點後三位,即 Serial.println(reading,3);

如下所示:

const int ledPin = 13; // LED connected to digital pin 13 as output 1

const int sensorPin = 0; // connect input signsl to analog input 0 2

const int delaytime = 500; // declare delay time in ms 3

int reading; // declare an integer variable named as reading 4

5

void setup() 6

7

pinMode(ledPin, OUTPUT); // enable output on the led pin 13 8

Serial.begin(9600); // initialize Serial Monitor 9

10

11

void loop() 12

13

digitalWrite(ledPin, HIGH); // set the LED on 14

reading = analogRead(sensorPin); // read the analog input 0 15

Serial.print("Reading Value of HI: "); 16

Serial.println(reading,3); // print reading to serial monitor 17

delay(delaytime); // wait duration dependent on light level 18

Page 49: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

46

19

digitalWrite(ledPin, LOW); // set the LED off 20

reading = analogRead(sensorPin); // read the analog input 0 21

Serial.println("Reading Value of LO: "); 22

Serial.println(reading,3); // print reading to serial monitor 23

delay(delaytime); 24

25

結果如下:

Reading Value of HI: 4.668

Reading Value of LO: 0.000

Reading Value of HI: 4.668

Reading Value of LO: 0.000

5. 延伸應用:

(1) 將測量電壓的對象改為其他電路元件或電源,根據 4-1小節所學製作一個

簡單的電壓表(見 4-2小節)。

(2) 利用 IDE中的範例:AnalogInOutSerial,並以 LED燈製作光源、光敏電阻

作為偵測光源之元件,進行物體、溶液光線穿透率的測量,自製一個簡易

的光度計(見 4-3小節)。

6. 結語:

序列埠監控視窗的應用相當廣泛,在 4-1小節中,簡單介紹如何用類比輸

入插腳與序列埠監控視窗進行電路的電壓測量,也同時複習 Blink 的下拉電路

的接法,以及學習如何修改程式碼,將呈現的數據改成想要的形式。在之後的

兩小節中,會介紹更多序列埠監控視窗的應用。

7. 參考資料:

(1) 陸健榮教授的教育議題專題課程授課講義(已獲得老師的同意)

Page 50: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

47

4-2 自製電壓表

1. 功能簡介:

在本小節中,利用 4-1小節所學的序列埠監控視窗及程式碼,將 Arduino

製作成一個簡易的電壓表。不過 UNO板可接受的電壓大小有限,雖然官方網

站上寫的輸入電壓可為 7~12 V,但插腳的最大可接受電壓為 5 V,所以測量對

象還是以 5 V以下的元件比較安全。

2. 使用器材:

(1) Arduino UNO

(2) 電腦(已安裝好 IDE)

(3) 杜邦雙公線,2條

3. 程式說明:

在4-1小節中的程式已經將測量電壓的部分寫好了,只要直接將4-1小節的

程式直接複製到IDE,不過在程式中還有Blink的功能,因此需要把使LED閃爍

相關的內容刪掉。簡化後的程式如下:

const int sensorPin = 1; // connect input signal to analog input 0 1

const int delaytime = 1000; // declare delay time in ms 2

float reading; // declare an integer variable named as reading 3

4

void setup() 5

6

Serial.begin(9600); // initialize Serial Monitor 7

8

9

void loop() 10

11

reading = analogRead(sensorPin); // read the analog input 0 12

reading = reading*(5-0)/(1023-0); //Rescaling the reading to voltage 13

Serial.print("Reading Value of V: "); 14

Serial.println(reading,3); // print reading to serial monitor 15

delay(delaytime); // wait duration dependent on light level 16

17

Page 51: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

48

4. 實作步驟:

在測量電路的電壓時,只要像4-1小節一樣將一條雙公線以並聯的方式與電

路元件相接即可。如果只有要測量電池的話,就需要另外拿一條雙公線接地

線,以形成一個通路,以下步驟說明為測量電池電壓的方法。

(1) 拿一條白色雙公線,一頭接在 A0。再拿一條黑色雙公線,一頭接

在 GND。

圖 4-7

Page 52: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

49

(3) 將程式複製到 IDE,編譯後執行,確定電池與 UNO板已經以雙公線接

好後,點選放大鏡,即「序列埠監控視窗」,就會出現電池的電壓數

據。

5. 結語:

在本小節中,利用 Arduino 與 IDE的序列埠監控視窗測量電壓,將 4-1小

節中介紹的內容學以致用,以簡單的材料就能製作電壓表,在實驗中便可以使

用自製的電壓表測量。

(2) 將想測量的電池與兩條雙公線連接。電池正極與白色雙公線連接,

電池的負極與黑色雙公線連接。

圖 4-8

Page 53: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

50

4-3 簡易光度計

1. 功能簡介:

在本小節中利用 LED 燈做為光源,以光敏電阻作為偵測器測量光線強度

(如下圖所示),製作簡易光度計。光度計可以測量光線的穿透率,藉由溶液濃

度與溶液對光源的吸收度之關係,以比爾-朗伯定律(Beer–Lambert law,又稱

比爾定律)進行溶液的定量分析,因此光度計在化學領域中扮演很重要的角色。

若欲得知溶液的濃度,可以利用光度計與溶液的標準品製作檢量線,再測

量未知濃度溶液的光線穿透率就可知道該溶液的濃度,這樣的實驗方法即是利

用比爾定律,關於比爾定律更詳細的內容請見參考資料。需要注意的是,光度

計需要使用單色光光源進行測定,可利用特定波長的 LED燈或利用濾光片或光

柵。

光敏電阻是一種利用光電導效應(Photoconductivity)的電阻,光敏電阻的電

阻大小與其照射到的光線強弱有關,當光線照射時,光敏電阻內的電子被光源

激發後成為自由電子,所以光線強度越大,產生的自由電子越多,使得電阻越

小。

光敏電阻與光電二極體相比,其優點為可以使用交流電,因為光敏電阻的

光電效應與電極無關;而其缺點是反應時間較長,且受溫度的影響較大。

2. 使用器材:

(1) Arduino UNO

(2) 電腦(已安裝好 IDE)

(3) 麵包板,1個

(4) LED燈,1個以上(可根據不同的待測物選擇不同顏色的光)

(5) 光敏電阻,1個

(1)LED燈 (2)光敏電阻

Page 54: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

51

(6) 杜邦雙公線,9條

(7) 杜邦雙母線,4條

(8) 電阻,220歐姆 1個、10k歐姆 1個

3. 程式說明:

開啟範例 > 03.Analog > AnalogInOutSerial

/* 1

Analog input, analog output, serial output 2

3

Reads an analog input pin, maps the result to a range from 0 to 255 4

and uses the result to set the pulsewidth modulation (PWM) of an output pin. 5

Also prints the results to the serial monitor. 6

7

The circuit: 8

* potentiometer connected to analog pin 0. 9

Center pin of the potentiometer goes to the analog pin. 10

side pins of the potentiometer go to +5V and ground 11

* LED connected from digital pin 9 to ground 12

13

created 29 Dec. 2008 14

modified 9 Apr 2012 15

by Tom Igoe 16

17

This example code is in the public domain. 18

*/ 19

20

// These constants won't change. They're used to give names 21

// to the pins used: 22

const int analogInPin = A0; // Analog input pin that the potentiometer is attached to 23

const int analogOutPin = 9; // Analog output pin that the LED is attached to 24

25

26

27

int sensorValue = 0; // value read from the pot 28

int outputValue = 0; // value output to the PWM (analog out) 29

30

void setup() 31

// initialize serial communications at 9600 bps: 32

Page 55: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

52

Serial.begin(9600); 33

34

35

void loop() 36

// read the analog in value: 37

sensorValue = analogRead(analogInPin); 38

// map it to the range of the analog out: 39

outputValue = map(sensorValue, 0, 1023, 0, 100); 40

// change the analog out value: 41

//analogWrite(analogOutPin, outputValue); 42

43

// print the results to the serial monitor: 44

Serial.print("sensor = " ); 45

Serial.print(sensorValue); 46

Serial.print("\t output = "); 47

Serial.println(outputValue); 48

49

// wait 2 milliseconds before the next loop 50

// for the analog-to-digital converter to settle 51

// after the last reading: 52

delay(500); 53

54

把數字改成 100

用 map就可以使光源最大強度映射到

100,進行實驗時較方便進行分析

延遲 2毫秒難以觀察,

所以改成 500毫秒

Page 56: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

53

在第 40行中,有使用”map”這個指令,map的功能為:映射、投射、轉

換,也就是說可以將數值進行投射,將原本的數值以相同比例縮放。

以下為 map(sensorValue, 0, 1023, 0, 100)其中參數的說明:

sensorValue:數值的來源,即要映射的數值是由哪個插腳讀取的。

0, 1023:要被映射的數值的範圍,即原始數值大小範圍。當 UNO的 A0插腳讀

取到電路的電壓後,其數值範圍為 0~1023,對應的實際電壓為 0V~5V。

0, 100:映射後的數值範圍。若原始數值為 0,映射後的新數值會是 0;若原始

數值為 1023,映射後的新數值會是 100。

4. 實作步驟:

(1) 確認程式後上傳至 UNO,光敏電阻會接收光源強度,開啟序列埠監控視窗

可以看到接收到的光源強度(大小從 0到 100)。用手遮住光敏電阻,強度會

變小,以此確認電路有正常運作。

(2) 將欲測量的物品(例如:裝有溶液的試管)置於 LED燈與光敏電阻之間,開

啟 IDE中的序列埠監控視窗,就能查看光敏電阻接收到的光強度。

將 LED燈與光敏電阻的正極都接到電源 5V,以下拉電路的方式接保護

電阻(220歐姆)。

將光敏電阻的負極連接至 A0插腳,用來偵測光敏電阻所接受到的光線

強度。

圖 4-9 光度計電路接法。

Page 57: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

54

注意:在測量時盡量避免光敏電阻受環境光源的干擾,以免影響測量結

果。

5. 延伸應用:

簡易光度計可以測量光強度,除了用來進行溶液濃度的實驗,像是高中化

學實驗中的比色計實驗就可以利用光度計求出硫氰化鐵溶液的濃度,也可以進

行各式與光線變化相關的實驗。

在科學 Online網站中也可以查詢到光電比色計的實驗設計,例如:化學教

室活動:自製簡易光電比色計(Homemade Simple Spectrophotometer),這個主

題有一系列的文章講解比色計的原理、製作、實驗設計與數據處理,詳細內容

請見參考資料的網站連結。

6. 結語:

在本小節中,利用 4-1小節的序列埠監控視窗與 LED燈、光敏電阻,製作

簡易的光度計以測量光強度,除了可以學習序列埠監控視窗的應用,也可以將

Arduino 應用至實驗的測量。

7. 參考資料:

(1) 陸健榮教授的教育議題專題課程授課講義(已獲得老師的同意)

(2) Arduino官方 AnalogInOut 教學:

https://www.arduino.cc/en/Tutorial/AnalogInOutSerial

(3) 維基百科-光度計:

https://zh.wikipedia.org/wiki/%E5%85%89%E5%BA%A6%E8%A8%88

(4) 維基百科-比爾-朗伯定律:

https://zh.wikipedia.org/wiki/%E6%AF%94%E5%B0%94-

%E6%9C%97%E4%BC%AF%E5%AE%9A%E5%BE%8B

(5) 化學教室活動:自製簡易光電比色計(Homemade Simple

Spectrophotometer)〔I〕:

http://highscope.ch.ntu.edu.tw/wordpress/?p=27250

(6) 化學教室活動:自製簡易光電比色計(Homemade Simple

Spectrophotometer)〔II〕:

http://highscope.ch.ntu.edu.tw/wordpress/?p=27269

(7) 化學教室活動:自製簡易光電比色計(Homemade Simple

Spectrophotometer)〔III〕:

http://highscope.ch.ntu.edu.tw/wordpress/?p=27288

(8) 化學教室活動:自製簡易光電比色計(Homemade Simple

Spectrophotometer)〔IV〕:

http://highscope.ch.ntu.edu.tw/wordpress/?p=27327

Page 58: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

55

附錄:Fritzing教學

1. Fritzing介紹:

Fritzing是一個可以繪製電路圖、麵包板裝置圖、PCB板等等圖形的開源軟

體,最初由德國的 University of Applied Science Potsdam 開發。Fritzing可以免

費下載,軟體操作簡單、容易上手,在製作課程講義、課程說明時皆可利用。

本入門手冊中的電路圖與裝置圖就是利用 Fritzing繪製的,因此將在附錄中說

明 Fritzing的安裝方法,並以實例介紹 Fritzing的操作方法。

Fritzing在Windows、Mac、Linux 等作業系統上皆可使用,而且操作介面

的語言可選擇正體中文。Frizting的電子元件資料庫內容十分豐富,除了常見的

LED燈、電阻、電池等等,也有 Arduino UNO 板的圖形可以利用。Fritzing可

以 PNG格式輸出圖片,在製作教材時相當方便,繪製好的圖也可以儲存成

Fritzing自有格式的檔案,只要以 Fritzing開啟就能進行修改。除此之外,還能

利用 Fritzing記錄電路是如何接的,有時候電路的接法較為複雜,若是下一次

還要再接出一樣的電路,除了以紙筆或拍照的方式記錄,還可以用 Fritzing繪

製裝置圖,而且未來若需修改裝置圖也相當便利。

2. Fritzing安裝方法:

首先,進入 Fritzing的官方網站:http://fritzing.org/home/,點選 Download

後會出現圖 I-1的畫面。

Fritzing為開源軟體,本身為非營利組織,因為在軟體的更新與開發、推廣

自造等方面需要資金,所以在下載前會出現是否捐款贊助的畫面,可以先選擇

不贊助以進行下載,選擇「No Donation」後按下「Download」,便可根據電腦

的作業系統選擇對應的連結,如圖 I-2所示。如果老師們覺得 Fritzing軟體操作

方便,或是願意支持 Fritzing推廣自造的精神的話,還請贊助支持 Fritzing!

圖 I-1 Fritzing下載軟體頁面。選擇「No Donation」後按下

「Download」

Page 59: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

56

以Windows 系統為例,按下連結後會開始下載壓縮檔,將該壓縮檔解壓

縮,並執行 Fritzing應用程式進行安裝(紅色方框處)。

3. Fritzing操作介紹:

以下利用 2-2小節中以 Arduino UNO板搭配麵包板外接 LED燈為例子,進

行 Fritzing的操作說明:

圖 I-2 Fritzing下載軟體頁面,點選電腦的作業系統相對應的連結以下載

安裝用的檔案。

圖 I-3 已解壓縮的 Fritzing資料夾。執行紅色方框中的應用程式檔以進

行軟體的安裝。

Page 60: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

57

(1) 開啟 Fritzing軟體後,首先會看到「Welcome」畫面,在此畫面中

可以看到近期使用的繪圖(Sketches)與 Fritzing 的最新消息。

點選「麵包板」後可開始繪製裝置圖。

圖 I-4 Fritzing的Welcome畫面。在「Welcome」該列的按鈕分別為:麵

包板(繪製裝置圖)、概要圖(繪製電路圖)、PCB(繪製 PCB板)、Code(編寫程

式,功能與 Arduino IDE 相似)。

(2) 點選Welcome旁邊的麵包板後,便會看到以下畫面。左邊為繪圖

區,右上方為「元件」(電子元件的資料庫),右下方為「內容」(元

件的細節設定)。

圖 I-5

Page 61: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

58

(3) 在「元件」中可以看到代表 Arduino 的圖形(於紅色方框內),點選

後會出現 Arduino 的各系列開發板。

這次要使用的開發板為 UNO板,選擇並將其拖曳至繪圖區中。

圖 I-6

1

2

(4) 此時在繪圖區中就會出先 UNO板,接下來繪製接線的部分。

滑鼠游標在繪圖區時推動滾輪可放大/縮小視窗畫面,可將畫面放大

後,點選 UNO板的 GND,拖曳至麵包板的第 2列。

再點選 UNO 板的數位 13插腳,拖曳至麵包板的第 1列,這樣就能

畫出實驗操作時使用的杜邦線了。

圖 I-7

Page 62: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

59

(5) 修改接線的顏色:點選接線後,在右下方的「內容」可選擇接線顏

色。可將由數位 13插腳接出的線材改為橘色,接地線改為黑色,

使辨識方便。

圖 I-8 在紅色方框處可修改線材的顏色。

(6) 接下來要畫 LED燈與電阻。

在「元件」區點選「CORE」,在 CORE中可以看到常見的電子元

件,找到需要的元件後將其拖曳至繪圖區。

圖 I-9

Page 63: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

60

(6) 也可以利用搜尋找到需要的元件,在搜尋框中輸入關鍵字並按下搜

尋(搜尋框最右邊的放大鏡)就會出現結果,找到後就將其拖曳至繪

圖區內。

圖 I-10

(7) 每個元件都可以調整大小、位置、旋轉角度,只要以右鍵點選該元

件就可進行調整,或是可以利用「內容」的選項更改。

圖 I-11

Page 64: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

61

(8) 調整電子元件的規格:在「內容」區可改變電子元件的規格,例如

可以改變所選電阻的電阻值,修改後電阻的色碼會依照所設電阻大

小改變。

圖 I-12

(9) 將裝置圖繪製完成後便可進行圖片輸出,點選檔案 > 匯出 > as

Image > PNG,即可將裝置圖以 PNG格式的圖片輸出。

圖 I-13

Page 65: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

62

(10) 繪製完成後,也可以將檔案以 Fritzing格式(.fzz)儲存,以便日後進

行修改。點選檔案 > 另存新檔,就可以儲存。

圖 I-14

(11) Fritzing除了可以繪製裝置圖之外,點選至「概要圖」可以繪製電路

圖,編輯方法就如同在「麵包板」頁面的操作。

圖 I-15

Page 66: Arduino · 2018-06-12 · 2 2. Arduino簡介: Arduino是一個開放原始碼(open source)的單晶片微處理器(single-chip microcomputer),可以把它想成一個微型電腦,將中央處理器、記憶體、輸入

63

4. 結語:

Fritzing是一個操作簡單、功能完整的軟體,在記錄電路接法、編寫教材上

都相當方便。若是老師們願意支持 Fritzing推廣自造的精神的話,還請在下載

Fritzing時贊助!

5. 參考資料:

(1) Fritzing Org:

http://fritzing.org/home/

(2) 維基百科-Fritzing:

https://en.wikipedia.org/wiki/Fritzing