N E HS . P E T E R W A N G
1
國立新竹科學園區
實驗高級中等學校
機器人動手做
期中專題報告
姓 名 : 王 平
班 級 : 1 0 1
座 號 : 1 4
N E H S . P E T E R W A N G
2.
N E HS . P E T E R W A N G
2
目錄
實作結果
軟體及硬體應用
命令格式
程式碼解說
遇到的困難與挑戰
心得與反思
前言與動機
3.
N E HS . P E T E R W A N G
3
前言
這是我在上了高中選修課後做的第一個小專題,老師設計
此專題的用意是為了讓我們先熟悉一些工具的用法,以及
學習Arduino的一些基礎語法和功能,為的是之後能做更大
的專案,對於未來能夠繼續往這方面發展,也有非常實際
的幫助。
4.
N E HS . P E T E R W A N G
4
動機
因為對電子電機領域非常有興趣,加上也很樂於學習物理
及數學方面的知識,所以選了機器人動手做的課程。剛開
始預期自己學到更多軟體方面的應用,做完這個專題以後,
發現比較偏向硬體的實作,但從中也更了解軟硬體之間連
結的基本概念與關係。
5.
N E HS . P E T E R W A N G
5
實作結果
圖為Arduino UNO板連接馬達及
燈條的初始狀況
左邊馬達已經經過校正
右邊燈條已經測試顏色及亮度
燈泡及馬達原狀
6.
N E HS . P E T E R W A N G
6
燈泡及馬達接收指令後之結果
圖為Arduino UNO板連接馬達
及燈條並完成指令後之狀態
左邊馬達轉動角度為90度
右邊燈條設定顏色為紅色
實作結果
7.
N E HS . P E T E R W A N G
7
軟體及硬體應用
n Arduino是這次專題主要使用的工具,
報告的重點軟硬體都與Arduino的應
用與學習相關
n 圖左上是用來寫程式碼的應用程式
也就是我們熟知的Arduino
n 圖左下是Arduino UNO板
屬於此次專題中最重要的硬體設備
8.
N E HS . P E T E R W A N G
8
命令格式
L E D 顏 色 伺 服 馬 達 轉 角 L E D 亮 度
@ # $
以下三種皆為分割符號
當程式碼接收到此符
號就代表
已經讀取完LED顏
色的輸入
當程式碼接收到此符號
就代表
已經讀取完LED亮度
的輸入
並且結束所有輸入
當程式碼接收到此符
號就代表
已經讀取完伺服馬達
轉角的輸入
此為在主函式中接收的判斷式 此為在主函式中接收的判斷式 此為在主函式中接收的判斷式
9.
N E HS . P E T E R W A N G
9
程式碼解說
是引用伺服馬達控制的函式庫
是定義一個控制伺服馬達的物件
int 定義整數
char 定義字元
angle 伺服馬達角度
c 輸入字元變數
a 計算用變數
col 燈條顏色記錄的腳位
b 燈條亮度
01
02
03
04
05
06
07
08
09
10.
N E HS . P E T E R W A N G
1 0
程式碼解說-初始化
初始化的函式
設定傳輸速度
馬達控制線接在腳位9
連接燈條的紅色腳位設為輸出模式
連接燈條的綠色腳位設為輸出模式
連接燈條的籃色腳位設為輸出模式
01
02
03
04
05
06
01
02
03
04
05
06
11.
N E HS . P E T E R W A N G
1 1
主要執行函式
high代表關燈,燈條一開始是暗的
available試看arduino有無接收
read是將讀進來的數字放進c中
當接收到第一個分割符號#
就儲存伺服馬達轉角
當接收到第二個分割符號@代表
已經存完腳位顏色
當接收到結尾符號就存燈條亮度
01
02
03
04
05
06
07
08
12.
N E HS . P E T E R W A N G
1 2
程式碼解說-初始化
當接收到 r 代表是要輸出紅色
腳位存3
當接收到 g 代表是要輸出綠色
腳位存4
當接收到 b 代表是要輸出籃色
腳位存5
這裡是用來計算角度和亮度的公式,
利用ascii code把文字轉數字
最後用函式庫已經寫好的函 式,
控制馬達轉動角度,以 及控制燈條顏色及亮度
01
02
03
04
05
06
07
08
09
10
01
02
03
04
05
06
07
08
09
10
13.
N E HS . P E T E R W A N G
1 3
困難及挑戰
有時候接腳位會不
知道不同腳位的用
意或用途,或是如
何設定腳位,是我
覺得自己需要再加
強的部分。
在中間有個計算角
度及亮度的公式,
是透過與同學討論
才想出來的,是在
其中較具有挑戰性
的部分。
在寫程式碼的過程
中,時常會忘記或
誤解函式的用途,
需要花時間去理解
與應用,例如控制
馬達轉動或燈條亮
度的函式…等。
除了Arduino本身
軟硬體相容的問題,
還有程式設定的問
題,都會造成上傳
不成功,都是自己
需要學習解決與調
整的。
0 1 0 2 0 3 0 4
14.
N E HS . P E T E R W A N G
1 4
這堂機器人選修課,讓我得以初步涉入電子電機相關的領域,也可以學習電子電機相關的
基本概念。課堂中除了電學知識,電路板接線,也有涉及資訊領域的概念,透過學習簡單
的程式碼,來控制簡單的機械,這門選修課啟發我對電子電機領域的興趣,也對我學習有
所幫助。
另外,這門課除了增進自己對硬體方面的了解,也因為自己一直有學習C++,因此就程式碼
編譯的過程來說,語法的部分都還算熟悉。不過,運用到一些函式庫的副函式時,有時會
因為不了解其功能或用法,導致硬體運作失敗,因此歷經多次嘗試,才使得燈條以及馬達
都成功運作,這實作的經驗很寶貴,也讓自己獲益良多。
在這次製作期中專題的過程中,發現自己對於程式碼控制機器的運作頗有興趣,但有些部
分還需多練習應用才能更熟悉。期許自己接下來能更進深學習研究,挑戰充實自己,繼續
往自己有興趣的電資方向邁進。
心得與反思