作者:CIRCUS Pi
近期發現很多朋友或學生想開始學習 Arduino ,下載了官方的 Arduino IDE 後,照著查詢到的教學網站或是觀看 Youtube 學習,卻發現使用起來沒有想像中的簡單,因而入坑的有點吃力。
有藉於此,我們將針對「自走車」這一個輕鬆好入門的主題,透過大家都可以取得的免費資源來體驗寫程式的有趣之處。
不管您想製作循線的,還是避障的自走車,或是兩種都要的,首先您需要有一台已經組好的自走車,配置相當常見也平價,大致上需要的東西如下:
- 主控版:Arduino UNO (正版、相容版、加強版、霹靂無敵酷炫版…都可以,但壞掉的不行)
- 擴充版:Arduino Sensor Shield V5.0(為了方便連接感測器或是馬達與電源使用)
- 馬達驅動:L9110 或 L9110S(有沒有加這個 S 都無所謂)
- 自走車車架(馬達、輪子、螺絲螺帽、銅柱、壓克力車板…等)
- 傳資料用的 USB TypeB to TypeA 傳輸線、電池。
如果您不想要這麼麻煩一個一個搜尋,您可以直接依照您的喜好,到 iCShop 選擇您要避障還是循線的套件包,本篇教學也會使用這些套件包:
擁有製作自走車的材料後,請參考先前的示範文章(簡單製作自走車)試著自己動手組裝您的自走車。如果您是買套件包的朋友,要特別注意的是馬達驅動板的部份,示範文章是藍色的,而我們套件包內附的是紅色的,功能都一樣只差別在於螺絲孔的數量與位子,紅色的只需要一根螺絲,安裝的位子不管是哪種,都是在車底兩個馬達的中間。
製作完自走車後您需要下載寫程式的軟體,為了方便大家入門輕鬆趣玩,我們決定使用 Makeblock 的 mBlock5,它是使用圖形化拼接的方式來撰寫程式,且支援上傳程式功能。
以往是使用 mBlock3 來撰寫,但是新版的 mBlock5 已經支援 Arduino,且上傳程式的速度比起 mBlock3 加快了不少,所以我們會使用 mBlock5 來撰寫本篇的示範程式。
有了組裝好的自走車,程式也下載安裝完成,就可以開始來寫程式囉!以下會分為三個部份,第一部份是基礎操作,第二部份是避障篇,第三部份是循線篇。建議大家一定要先看基礎操作,然後再依照您購買的套件包,選擇要看第二部份還是第三部份。
基礎操作
在還沒有安裝超音波或循線感應器前,需要先了解自走車的行進方式,首先打開 mBlock5 。可以在主畫面左下方找到在設備分頁內有個加號圖案,點選加號圖案新增我們的設備。
選擇 Arduino UNO 並在右下角點選確認。
選擇完我們使用的設備後,就可以在圖塊程式積木選擇列表內,看到與 Arduino 相關的圖塊程式,待會將會使用這些圖塊程式來撰寫自走車行進的程式。
在寫行進的程式前,程式需要一個主要的開頭,表示遇到什麼事件而進行什麼動作。
先點選「事件」然後將「當 Ardunio Mega 啟動時」的圖塊拖拉到空白處。
有仔細看過 Arduino 系列產品的朋友一定會發現,我們明明使用的是 Arduino UNO ,為什麼是當 Arduino Mega 啟動時呢? 其實這是翻譯沒弄好的問題,當切到英文畫面時是顯示「When Arduino UNO starts up」喔,所以即便在中文介面下它是顯示 Mega 也不用在意,就當它是顯示 Arduino UNO 吧!在接下來的教學描述中依舊會以 Arduino Mega 來說明。
接下來點選「控制」,並將裡面的「不停重複」拖拉出來並放在「當 Ardunio Mega 啟動時」的下方。
接下來我們要對自走車的輪子下達轉動的程式指令,程式指令會由 Arduino 的腳位下達訊號到馬達驅動板,再由驅動板直接驅動馬達。
如果您組裝自走車的過程,是參考剛剛提過的「示範文章 – 簡單製作自走車」,那麼您的 Arduino 負責下達指令的腳位為 5、6 腳位(控制其中一顆馬達)以及 9、10 腳位(控制另一顆馬達),控制的方式是發送 PWM 訊號(範圍是 0 – 255),數字給的越大馬達轉動的速度就越快,反之則越慢或停止。至於什麼是 PWM ,有興趣的朋友可以自己Google ,簡單講就是可以控制速度的指令。
如下圖點選「腳位」,並拖拉出「設置 PWM (5)輸出為(0)」這個圖塊程式到「不停重複」內。
詳細的馬達控制是這樣的,單一顆馬達是由兩個腳位控制,假設這兩個腳位分別是 5、6,當 5 號腳位設定輸出為 0,另一支 6 號腳位設定輸出為 0 – 255 的數,則馬達將會依照填入的數字大小,朝某個轉向做相應速度的旋轉(可能是正轉向或反轉向)。
若改由 5 號腳位設定輸出為 0 – 255 的數,6 號腳位設定輸出為 0,則馬達將會依照填入的數字大小,朝與剛剛相反的轉向做相應速度的旋轉。
依照剛剛所描述的…因為要控制兩顆馬達,如下圖所示,一口氣拖拉出四個圖塊程式到「不停重複」內,並在「設置 PWM」的後方填入控制的腳位編號(5、6、9、10),然後在「輸出為」的後方依照剛剛的控制說明填入數值,在此範例是填入 200,在 0 – 255 的範圍中屬於大約接近 80% 的速度。
P.S. 若是調整數度的數字給得太小 ,馬達會因為供電不足而轉不動喔!這點請注意。
截至目前為止,程式的運作為:當 Ardunio Mega 啟動時,會無限循環執行放在「不停重複」裡面的圖塊程式,直到斷電為止。若是自走車的組裝沒有問題,將程式上傳到 Arduino 後只要接上電池,自走車的兩個輪子應該會自己轉動起來。
那我們就來將程式上傳到 Arduino 測試看看吧!首先要拿出 USB 傳輸線連接 Arduino UNO 與電腦,電腦是接一般常見的 TypeA(像隨身碟那種頭),而 Arduino UNO 則是接上 TypeB(連接一般印表機那種),接上後點選下方的連接。
接著勾選「顯示所有可連接的設備」後選擇設備連接電腦的序列埠(圖中是 COM3,依照個人電腦不同而有不同編號),選擇完畢後點選連接。
連接完畢後就可以看到「上傳」的按鈕,點選上傳將圖塊程式上傳到 Arduino UNO 裡。
點選上傳後會跑出上傳進度視窗,等到跑到 100% ,您的自走車輪子就會開始轉動囉!
輪子可以轉動後,接下來我們要來調整轉向,首先試著讓兩個輪子都是往前轉,若是您目前兩個輪子就是往前轉動的話就可以不用調整。小編運氣不好,只有一顆輪子是向前轉,由腳位 9、10 控制的輪子是向後轉的,所以需要調整。
有兩種方法可以調整,第一種方法是從接線下手,將接在腳位 9、10 的兩條杜邦線對調接,即可改變轉向。第二種方法是更改程式寫法,將腳位 9 的輸出改為 0 ,腳位 10 的輸出改為 200 ,也就是對調這兩個腳位的參數,這樣也能改變轉向,哪種方法都可以!小編在這邊選擇第一種作法,單純個人喜好。
知道如何更改轉向後,試著挑戰撰寫除了前進以外的左右轉及後退吧!為了方便識別與使用,我們可以使用自訂積木功能來做各動作的分類。
點選「自訂積木」然後選擇「新增積木指令」。
接著在「積木名稱」的位置,輸入您要建立的積木名稱,在這邊小編是輸入:前進,輸入完畢後點選右下角的確認。
您可以看到剛剛新增的前進積木出現在兩個地方,一個是在積木選擇列表裡,另一個是在撰寫程式的白底區,而白底區的前進積木多了「定義」兩個字,顧名思義我們可以在它的下方定義這個前進積木的功能。
試著如下圖新增其他方向的積木指令吧!
新增完畢後點選「控制」並拖拉出「等待(1)秒」的程式,這個程式能讓機器人暫停一段時間,而不立即執行下個動作。
將程式改為如下圖所示,並將程式上傳到 Arduino UNO ,試著觀察看看「等待」這個圖塊程式所表示的意義。
- 【CIRCUS Pi】ESP32教學系列:用ESP32玩91段電子紙 - 2025/03/24
- 【CIRCUS Pi】ESP32教學系列:硬體中斷 - 2024/12/25
- 【CIRCUS Pi】使用 Arduino UNO R4 WiFi 輕鬆製作 LED Matrix 動畫 - 2024/10/14
訂閱MakerPRO知識充電報
與40000位開發者一同掌握科技創新的技術資訊!
2020/08/14
請問何時還會開自走車的課?
上課需要有Arduino 程式經驗!請問可以去哪裡上課學習?
2020/06/08
不好意思 我想詢問【自造DIARY】Arduino輕鬆入門 - 循線與避障自走車(上篇)
避障車要如何設計成不自行行走的模式呢?
希望能是感應到障礙後才行走一段距離並停下><