Step.6 FlipCode 玩 E300

首先,在學習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的基本功能。

基本功能

拖曳程式

點選想要的程式,按著拖拉至右方初始化、重複執行的拼圖中或拖拉至空白處,接著放開。

刪除程式

刪除程式的方式有四種,其中又分為單個程式刪除與全部程式刪除:

1.將程式拉回左方工具列

2.將程式拉至右下方的垃圾桶

3.點選上方Clear All可以刪除畫面上所有程式

4.按滑鼠右鍵選擇刪除區塊

燒錄程式

首先先將機器人打開,接著將USB線插入機器人與電腦。

Port處會顯示「Detecting」,表示正在偵測可燒錄的機器人。

接著選擇最新出現的Port。

請記得開啟機器人電源,才能顯示Detecting。

自動出現對應的FlipBrain和Port後,接著點選Upload。

看到綠色勾勾就代表燒錄成功了,可以拔下USB線,試看看你寫的程式囉。

燒錄完成後,請按模式切換鈕,機器人才會開始執行動作。

儲存程式

點選Save後,可在框中輸入檔案名稱,所有的FlipCode都會統一先儲存在下載(Download)的資料夾中。

在了解完基本的FlipCode的基本性質與基本功能後,讓我們試試幾個基本的程式吧。

詳細的FlipCode指令介紹可至機器人的神經元-FlipCode查閱。

任務一:讓E300前進

  • 使用程式:函式、直流馬達

首先,我們必須知道在讓E300前進時,需要控制兩顆輪子,而兩顆輪子分別由直流馬達1與直流馬達2控制,觀察E300主控板可知,直流馬達1控制左邊輪子、直流馬達2控制右邊輪子。​​​

想想看當E300要前進時,兩邊馬達旋轉為何?

很多人會認為直流馬達1與直流馬達2旋轉的方式會相同,但事實上,當我們將E300拿起來,正面看著左方與右方的輪胎,會發現左方是以逆時鐘方向旋轉,而右方則是以順時鐘方向旋轉,如下方圖示。

​ 到目前為止,我們知道在撰寫「前進」的程式時,需要控制直流馬達1與直流馬達2,並且直流馬達1為逆時鐘,直流馬達2為順時鐘。

函式可以定義機器人所擁有的功能,一種功能一個函式,如下方圖示。

將函式命名完成後,裡面的程式仍須自己撰寫,如下方圖示。

在函式裡面的程式並不會立刻被執行,需另外將函式名稱拉入畫面表示呼叫機器人執行這個功能。

完成撰寫後,試著Upload到E300當中,看看你的E300是否可以前進了吧!

延伸任務

  1. 讓E300走出直線:當你發現E300無法走出直線,而是呈現左偏或右偏,意味著你的馬達存在著速度差。你可以試著調整一邊的馬達速度,將他們調成一致。

  2. 停止、左轉、右轉的函式:當你完成前進的函式,試著寫寫看停止、左轉、右轉的函式吧。

任務二:讓E300前進一秒後停止五秒

  • 使用程式:函式、直流馬達、延遲

首先,我們必須了解「延遲」這個程式,「延遲」代表上一個動作持續的時間,單位為毫秒,一千毫秒等於一秒鐘,也就是說這個程式代表延遲1秒。

接著先讓我們完成「前進」與「停止」的函式。

接著試著將「延遲」的程式加進去吧,完成前進一秒後停止五秒。

延伸任務

  1. 倒車入庫:試看看在桌面上貼出一個小框框,讓E300停進框框中。

任務三:超音波感應器的碰到障礙物時,E300停止前進

  • 使用程式:函式、直流馬達、延遲、如果執行、超音波感應器

到這裡,我們已經學會「函式、直流馬達、延遲」,這個任務主要是要學習「如果執行」,這次的「如果執行」是搭配「超音波感應器」使用。

因此,我們必須先了解一下「超音波感應器」的感測原理,「超音波感應器」是利用發射超音波反射回傳一個數值(單位為公分),代表著它與前方物品的距離。

假設今天障礙物的位置位於15公分處。

可以根據下方圖示先拉出一個「超音波感應器數值小於15公分」的條件。

接著加入「如果執行」,代表當超音波感應器回傳的數值小於15公分,則執行動作。

接著,只要再加入我們先前學會的函式與延遲,就可以完成超音波感應器的碰到障礙物時,E300停止前進的動作囉。

這個程式僅會讓E300停止一秒後就會繼續前進,還記得FlipCode的基本性質中的重複性嗎,這就是為何程式會這樣執行的原因。

延伸任務

  1. 超音波感應器遇到障礙物後停止:試看看還有什麼其他的程式寫法。

  2. 超音波感應器遇到障礙物後左轉:試試看,完成一台小特斯拉,看到障礙物會繞過去。

Last updated