前言
這一篇主要是給支持我們iCShop 的廣大朋友撰寫的基礎教學文,近期發現很多朋友或學生想開始學習Arduino ,下載了官方的Arduino IDE 後,試著照查詢到的教學網站或是觀看YouTube 學習,但使用起來好像沒有想像中的簡單,所以入坑的有點吃力。
本篇我們將針對「自走車」這一個非常輕鬆有趣的主題,透過大家都可以取得的免費資源來體驗寫程式的有趣之處。
不管您想製作循線的,還是避障的自走車,或是兩種都要的。
首先您需要有一台已經組好的自走車,配置相當常見也平價,大致上需要的東西如下~
主控板:Arduino UNO (正版、相容版、加強版、霹靂無敵酷炫版……都可以,但壞掉的不行)
擴充板:Arduino Sensor Shield V5.0 (為了方便連接感測器或是馬達與電源使用)
馬達驅動:L9110 或L9110S (有沒有加這個S都無所謂)
自走車車架(馬達、輪子、螺絲螺帽、銅柱、壓克力車板……等)
傳資料用的USB Type B to Type A傳輸線、電池。
如果您不想要這麼麻煩一個一個搜尋,可以直接依照您的喜好,到iCShop 選擇您要避障還是循線的套件包,本篇教學也會使用這些套件包。
擁有製作自走車的材料後,請參考「簡單製作自走車」示範文章試著自己動手組裝您的自走車。如果您是買套件包的朋友,要特別注意的是馬達驅動板的部份,示範文章是藍色的,而我們套件包內附的是紅色的,功能都一樣只差別在於螺絲孔的數量與位子,紅色的只需要一根螺絲,安裝的位子不管是哪種,都是在車底兩個馬達的中間。
製作完自走車後您需要下載寫程式的軟體,為了方便大家入門輕鬆趣玩,我們決定使用Makeblock 的mBlock5 ,它是使用圖形化拼接的方式來撰寫程式,且支援上傳程式功能。
以往是使用mBlock3 來撰寫,但是新版的mBlock5 已經支援Arduino,且上傳程式的速度比起mBlock3 加快了不少,所以我們會使用mBlock5 來撰寫本篇的示範程式。
有了組裝好的自走車,程式也下載安裝完成,就可以開始來寫程式囉!以下會分為三個部份:第一部份是基礎操作,第二部份是避障篇,第三部份是循線篇。建議大家一定要先看基礎操作,然後再依照您購買的套件包,選擇要看第二部份還是第三部份。
基礎操作
在還沒有安裝超音波或循線感應器前,需要先了解自走車的行進方式,首先打開mBlock5.3 。可以在主畫面左下方找到在設備分頁內有個加號圖案,點選加號圖案新增我們的設備。
選擇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% 的速度。
若是調整數度的數字給得太小 ,馬達會因為供電不足而轉不動喔!這點請注意。
截至目前為止,程式的運作為:當Ardunio Mega 啟動時,會無限循環執行放在「不停重複」裡面的圖塊程式,直到斷電為止。若是自走車的組裝沒有問題,將程式上傳到Arduino 後只要接上電池,自走車的兩個輪子應該會自己轉動起來。
那我們就來將程式上傳到Arduino 測試看看吧!首先要拿出USB 傳輸線連接Arduino UNO 與電腦,電腦是接一般常見的Type A(像隨身碟那種頭),而Arduino UNO 則是接上Type B(連接一般印表機那種),接上後點選下方的連接。
接著勾選「顯示所有可連接的設備」後選擇設備連接電腦的序列埠(圖中是COM3,依照個人電腦不同而有不同編號),選擇完畢後點選連接。
連接完畢後就可以看到「上傳」的按鈕,點選上傳將圖塊程式上傳到Arduino UNO 裡。
點選上傳後會跑出上傳進度視窗,等到跑到100% ,您的自走車輪子就會開始轉動囉!
輪子可以轉動後,接下來我們要來調整轉向,首先試著讓兩個輪子都是往前轉,若是您目前兩個輪子就是往前轉動的話就可以不用調整。小編運氣不好,只有一顆輪子是向前轉,由腳位9、10控制的輪子是向後轉的,所以需要調整。
有兩種方法可以調整,第一種方法是從接線下手,將接在腳位9、10 的兩條杜邦線對調接,即可改變轉向。第二種方法是更改程式寫法,將腳位9 的輸出改為0 ,腳位10 的輸出改為200 ,也就是對調這兩個腳位的參數,這樣也能改變轉向,哪種方法都可以!小編在這邊選擇第一種作法,單純個人喜好。
知道如何更改轉向後,試著挑戰撰寫除了前進以外的左右轉及後退吧~為了方便識別與使用,我們可以使用自訂積木功能來做各動作的分類。
點選「自訂積木」然後選擇「新增積木指令」。
接著在「積木名稱」的位置,輸入您要建立的積木名稱,在這邊小編是輸入:前進,輸入完畢後點選右下角的確認。
您可以看到剛剛新增的前進積木出現在兩個地方,一個是在積木選擇列表裡,另一個是在撰寫程式的白底區,而白底區的前進積木多了「定義」兩個字,顧名思義我們可以在它的下方定義這個前進積木的功能。
如下圖所示,我們可以將控制兩個輪子前進的圖塊程式,改移動到「定義前進」的積木底下,這樣一來我們就定義了在積木選擇列表裡的「前進」這個積木,代表會控制輪子向前轉動。
這時只要將積木選擇列表裡的「前進」拖曳到「不停重複」積木內即可,簡單說就是將原本需要四個圖塊程式,改為只需要一個即可。
試著如下圖新增其他方向的積木指令吧!
新增完畢後點選「控制」並拖拉出「等待(1)秒」的程式,這個程式能讓機器人暫停一段時間,而不立即執行下個動作。
將程式改為如下圖所示,並將程式上傳到Arduino UNO ,試著觀察看看「等待」這個圖塊程式所表示的意義。
您也可以將程式更改為沒有加上「等待」,如下圖所示,比較看看有什麼不同?
綜合以上我們已經學會了第一部份 – 基礎操作,您已經能簡單控制自走車移動,本篇就先介紹到這邊,下一篇會一口氣介紹避障與循線「Arduino 自走車 – 循線與避障(下篇)」,就選擇您買的套件類別選著看吧!