Step.6 FlipCode 玩 E300
Last updated
Last updated
首先,在學習FlipCode之前,應先了解FlipCode的兩個基本性質。
可以一邊瀏覽說明,一邊使用FlipCode實際操作。要使用FlipCode之前,請準備好FlipCode軟體(線上版或是APP版本皆可),安裝說明請至:準備軟體工具。
程序性代表的是當我們在撰寫FlipCode時,程式都是有順序性的執行指令,也就是說,當拉了兩個程式在重複執行的拼圖中,程式會「由上到下」按照順序執行指令,如下方圖示。
以上方圖示為例,程式會先執行「直流馬達1速度200」的程式,接著執行「直流馬達2速度0」的程式。
不過,在使用FlipCode進行程式編輯時,若使用者沒有將程式拼圖放置在初始化或重複執行的拼圖中,而是放置畫面在其他空白處,拼圖會呈現灰底,表示不會執行此程式,如下方圖示。
因此,在使用FlipCode時,記得養成良好的習慣,將需要的程式連接在一起,並放在初始設定或重複執行的拼圖中,不需要的程式可以刪除,或是放在初始設定或重複執行的拼圖之外。
在FlipCode畫面中,程式主要分成兩個區塊:
初始設定:初始設定裡的程式只有在開機時,會最先執行,執行一次,執行完畢則不會再執行直到重新開機。
重複執行:重複執行裡的程式,會一直重複執行直到關機。
因此,重複性就是代表當我們在撰寫FlipCode時,放在重複執行拼圖中的指令會不停的重複執行,以下方圖示為例。
程式將會呈現「直流馬達1速度200延遲一秒」,接著執行「直流馬達1速度0延遲一秒」,接著再回到「直流馬達1速度200延遲一秒」,一直不同反覆執行動作,直到關機或是下一次燒錄為止。
因此,在使用FlipCode時,出現不如預期的結果,很大的可能是因為重複性,以下方圖示為例,想想看,程式會如何執行。
比較前方的例子,這個範例在「直流馬達1速度0」後方並沒有加「延遲」,因此,程式在執行到「直流馬達1速度0」後,會非常快速的接續執行「直流馬達1速度200延遲一秒」的程式,也就是說我們將不會在機器人身上看到「直流馬達1速度0」程式的執行。
在了解完FlipCode的基本性質後,請利用USB線將機器人與電腦連接起來,讓我們來認識FlipCode的基本功能。
點選想要的程式,按著拖拉至右方初始化、重複執行的拼圖中或拖拉至空白處,接著放開。
刪除程式的方式有四種,其中又分為單個程式刪除與全部程式刪除:
首先先將機器人打開,接著將USB線插入機器人與電腦。
Port處會顯示「Detecting」,表示正在偵測可燒錄的機器人。
接著選擇最新出現的Port。
請記得開啟機器人電源,才能顯示Detecting。
自動出現對應的FlipBrain和Port後,接著點選Upload。
看到綠色勾勾就代表燒錄成功了,可以拔下USB線,試看看你寫的程式囉。
燒錄完成後,請按模式切換鈕,機器人才會開始執行動作。
點選Save後,可在框中輸入檔案名稱,所有的FlipCode都會統一先儲存在下載(Download)的資料夾中。
在了解完基本的FlipCode的基本性質與基本功能後,讓我們試試幾個基本的程式吧。
詳細的FlipCode指令介紹可至機器人的神經元-FlipCode查閱。
使用程式:函式、直流馬達
首先,我們必須知道在讓E300前進時,需要控制兩顆輪子,而兩顆輪子分別由直流馬達1與直流馬達2控制,觀察E300主控板可知,直流馬達1控制左邊輪子、直流馬達2控制右邊輪子。
想想看當E300要前進時,兩邊馬達旋轉為何?
很多人會認為直流馬達1與直流馬達2旋轉的方式會相同,但事實上,當我們將E300拿起來,正面看著左方與右方的輪胎,會發現左方是以逆時鐘方向旋轉,而右方則是以順時鐘方向旋轉,如下方圖示。
到目前為止,我們知道在撰寫「前進」的程式時,需要控制直流馬達1與直流馬達2,並且直流馬達1為逆時鐘,直流馬達2為順時鐘。
函式可以定義機器人所擁有的功能,一種功能一個函式,如下方圖示。
將函式命名完成後,裡面的程式仍須自己撰寫,如下方圖示。
在函式裡面的程式並不會立刻被執行,需另外將函式名稱拉入畫面表示呼叫機器人執行這個功能。
完成撰寫後,試著Upload到E300當中,看看你的E300是否可以前進了吧!
延伸任務
讓E300走出直線:當你發現E300無法走出直線,而是呈現左偏或右偏,意味著你的馬達存在著速度差。你可以試著調整一邊的馬達速度,將他們調成一致。
停止、左轉、右轉的函式:當你完成前進的函式,試著寫寫看停止、左轉、右轉的函式吧。
使用程式:函式、直流馬達、延遲
首先,我們必須了解「延遲」這個程式,「延遲」代表上一個動作持續的時間,單位為毫秒,一千毫秒等於一秒鐘,也就是說這個程式代表延遲1秒。
接著先讓我們完成「前進」與「停止」的函式。
接著試著將「延遲」的程式加進去吧,完成前進一秒後停止五秒。
延伸任務
倒車入庫:試看看在桌面上貼出一個小框框,讓E300停進框框中。
使用程式:函式、直流馬達、延遲、如果執行、超音波感應器
到這裡,我們已經學會「函式、直流馬達、延遲」,這個任務主要是要學習「如果執行」,這次的「如果執行」是搭配「超音波感應器」使用。
因此,我們必須先了解一下「超音波感應器」的感測原理,「超音波感應器」是利用發射超音波反射回傳一個數值(單位為公分),代表著它與前方物品的距離。
假設今天障礙物的位置位於15公分處。
可以根據下方圖示先拉出一個「超音波感應器數值小於15公分」的條件。
接著加入「如果執行」,代表當超音波感應器回傳的數值小於15公分,則執行動作。
接著,只要再加入我們先前學會的函式與延遲,就可以完成超音波感應器的碰到障礙物時,E300停止前進的動作囉。
這個程式僅會讓E300停止一秒後就會繼續前進,還記得FlipCode的基本性質中的重複性嗎,這就是為何程式會這樣執行的原因。
延伸任務
超音波感應器遇到障礙物後停止:試看看還有什麼其他的程式寫法。
超音波感應器遇到障礙物後左轉:試試看,完成一台小特斯拉,看到障礙物會繞過去。