> For the complete documentation index, see [llms.txt](https://fliprobot.gitbook.io/knowledge-base/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://fliprobot.gitbook.io/knowledge-base/nervous-system-of-fliprobot-flipcode/flipcode-toolbar-logic-function-serial.md).

# 工具列說明(邏輯、運算、內部元件)

## 邏輯：  <a href="#logic" id="logic"></a>

可設定不同的條件和判斷，讓機器人有系統性的進行思考，就像我們在生活中，面對不同的問題、情境而進行思考，例如：看到紅燈停、聽見鈴聲就回教室…等。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2F7fknL0FBDOQN5jB8i5Q4%2Ffile.png?alt=media)&#x20;

### ❶邏輯判斷-如果…執行：  <a href="#if-do" id="if-do"></a>

當所設定的條件成立時，就會執行指定的動作。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2F6FJ9hXr13I5575rWKc0q%2Ffile.png?alt=media)

> 舉例說明：
>
> 如下圖，如果超音波感應器回傳的偵測距離小於15公分的條件成立時，執行蜂鳴器發出Do的聲音。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FB4IlvE4jsLkE2ADCk60R%2Ffile.png?alt=media)

點選左上方藍色小齒輪，將需要使用的判斷式拉入右方【如果】的框中，即能增加或改變邏輯判斷的條件和形式。&#x20;

![](https://3604010070-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMkf3T5TFv8DQHoxabU%2F-LOXhU_V7D9u8LRa0yVT%2F-LOXihWccbCpv2FyUyFT%2F1.gif?alt=media\&token=cd18f20e-d8f0-42a3-8712-454f34469599)

邏輯判斷共有「三種」條件設定的型態： &#x20;

1. 如果…執行&#x20;
2. 如果…執行…否則&#x20;
3. 如果…執行…否則如果…執行。&#x20;

#### 1.如果…執行：&#x20;

只能設定一種條件，當條件成立執行動作。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FQvP4PBbDf07ZgMCUwE9y%2Ffile.png?alt=media)

> 舉例說明：
>
> 如下圖，如果超音波感應器回傳的偵測距離小於15公分的條件成立時，執行蜂鳴器發出Do的聲音。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2Fjp3kpYgCUOWWUNe5zYKt%2Ffile.png?alt=media)

#### 2.如果…執行…否則：&#x20;

能設定兩種條件：成立、不成立。當設定條件成立時，執行動作，否則執行條件不成立的動作。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2F7KQfsBRVslN5bW3nDe8v%2Ffile.png?alt=media)

> 舉例說明：
>
> 如下圖，如果超音波感應器回傳的偵測距離小於15公分的條件成立時，執行蜂鳴器發出Do的聲音，否則執行蜂鳴器發出Re的聲音(表示超音波感應器的偵測距離大於等於15公分)。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2F8VAedEc7peSg4JulN6bs%2Ffile.png?alt=media)

#### 3.如果…執行…否則如果…執行：&#x20;

可以設定兩種以上的條件，如果有設定的條件成立時，會執行所設定的動作。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FoUa2EW1RLiE99dK5Fpkh%2Ffile.png?alt=media)

> 舉例說明：
>
> 如下圖，如果超音波感應器回傳的偵測距離小於10公分的條件成立時，執行蜂鳴器發出Do的聲音，否則如果超音波感應器回傳的偵測距離小於20公分的條件成立時，執行蜂鳴器發出Re的聲音，否則如果超音波感應器回傳的偵測距離小於30公分的條件成立時，執行蜂鳴器發出Mi的聲音。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FCBSxskGJXNQM2nUo0y7w%2Ffile.png?alt=media)

如果程式需要三種以上的條件時，可以將這三種邏輯判斷式搭配使用，第一層如果…執行、中間否則如果…執行、最後是否則；在程式最後使用否則的寫法除了比較簡短以外，也不需要擔心是否有其他條件忘了設定，因為只要前面兩項條件都不成立，不論任何狀況都會執行最後否則所設定的指令。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FG4pB9TtJTKSFV8NGpxab%2Ffile.png?alt=media)

> 舉例說明：
>
> 如下圖，如果超音波感應器回傳的偵測距離小於10公分的條件成立時，執行蜂鳴器發出Do的聲音；否則如果超音波感應器回傳的偵測距離小於20公分的條件成立時，執行蜂鳴器發出Re的聲音；否則執行蜂鳴器發出Mi的聲音。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FeUxwAOSwrJp7jpvC1xW3%2Ffile.png?alt=media)

### ❷邏輯關係-大於、小於、等於  <a href="#comparison-operators" id="comparison-operators"></a>

大家可以發現這個拼圖也是屬於左凸方塊，所以它會回傳一個布林值(真假值)。利用大於、小於、等於…等運算工具，對第一個值與第二個值進行比對，結果不是真(符合)就是假(不符合)。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FuvqyByXu59lP5zFNlKBN%2Ffile.png?alt=media)

> 舉例說明：
>
> 判斷紅外線感應器1號的回傳數值等於１的條件是否成立，若是條件成立這個拼圖的值就是【真】，不符合的話，值就是【假】。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FdGAkfv9Hz1QANPfOso4Y%2Ffile.png?alt=media)

共有三種形式可以使用，淺色框中的倒三角為下拉式按鈕，可選擇大於、小於、等於…等運算工具。&#x20;

![](https://3604010070-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMkf3T5TFv8DQHoxabU%2F-LOXhU_V7D9u8LRa0yVT%2F-LOXjCHal1VB9oncNobW%2F2.gif?alt=media\&token=f469e568-4dba-4cf8-9389-c28446bb3b32)

### ❸邏輯運算-且、或   <a href="#and-or" id="and-or"></a>

左凸方塊，也是回傳的是布林值，會依照前後兩個框中的條件進行比較比較，比較的結果為布林值(真假值)，比較的條件符合為真、不符合為假；且能增加更多的條件設定或範圍。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FQfgZzEXHaWb7MTEE7tjc%2Ffile.png?alt=media)

共有兩種形式可以使用，在淺色框中的下拉式按鈕可選擇且、或。&#x20;

![](https://3604010070-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMkf3T5TFv8DQHoxabU%2F-LOXhU_V7D9u8LRa0yVT%2F-LOXjI-lAHocy0iwzlw5%2F3.gif?alt=media\&token=5071b7c7-7e98-4570-ba38-c95078550754)

第一種形式為且，表示前後兩者的條件都需符合，回傳的值才會是【真】；通常會搭配【如果】的判斷拼圖進行完整的程式指令。&#x20;

> 舉例說明：
>
> 如果超音波感應器回傳的偵測距離大於等於0且小於15公分的條件成立時，執行蜂鳴器發出Do的聲音。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FXVJDfmbd3mCRrbyv3b3b%2Ffile.png?alt=media)

第二種形式為或，表示前後者【只要有其中一個條件符合】，回傳的值就會是【真】；通常會搭配【如果】的判斷拼圖進行完整的程式指令。&#x20;

> 舉例說明：&#x20;
>
> 如果紅外線感應器1號的回傳數值等於1或紅外線感應器2號的回傳的數值等於1，其中一項條件成立時，執行蜂鳴器發出Do的聲音。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FWok37l3xewSN0ltz4vSa%2Ffile.png?alt=media)

### ❹邏輯運算-真、假  <a href="#true-false" id="true-false"></a>

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FiLauAv2c5f2WnxJHjTsg%2Ffile.png?alt=media)

布林值拼圖，可設定值為真或假，在程式運用中，我們也常用數字1和0來代表真假，1代表真、0代表假。&#x20;

共有兩種形式可以使用，淺色框中的下拉式按鈕可選擇真、假。&#x20;

![](https://3604010070-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMkf3T5TFv8DQHoxabU%2F-LOYIwEJrhJjSpHJfde9%2F-LOYHg3jGR6ZUei6_Tyy%2F4.gif?alt=media\&token=322ee96c-7c2e-47ca-be7f-2cfeb0aa0ddd)

> 舉例說明：
>
> 如果紅外線感應器1號的回傳數值等於真(1)的條件成立時，執行蜂鳴器發出Do的聲音。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FyEhOmKiCkS20sIW0If37%2Ffile.png?alt=media)

> 舉例說明：
>
> 如果紅外線感應器1號的回傳數值等於假(0)的條件成立時，執行蜂鳴器發出Re的聲音。

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FDXEocTOoZsJWw2BHTDcZ%2Ffile.png?alt=media)

### ❺邏輯運算-不成立  <a href="#not" id="not"></a>

簡單來說就是把拼圖裡面的布林值進行反向轉換，真變假，假變真。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2F7ujVLvOCwse7LQErnn2Y%2Ffile.png?alt=media)

> 舉例說明：
>
> 若紅外線感應器為真的條件成立，應該要回傳【真】值，但是因為加上不成立，真就會變成假，所以最後的結果為【假】的值。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FH3oqrknaXSsC154ILIUc%2Ffile.png?alt=media)

> 舉例說明：
>
> 如果紅外線感應器1號的回傳數值不等於0的條件成立時，執行蜂鳴器發出Do的聲音。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FMnh7F8QzcHoI6oMK4VLW%2Ffile.png?alt=media)

### ❻邏輯運算-空  <a href="#null" id="null"></a>

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FVkB8bX6h5AinUrRhO9Wx%2Ffile.png?alt=media)

這個值代表在記憶體中，未儲存任何值，亦不包含0，因為0也是一種數值。&#x20;

## 控制：  <a href="#control" id="control"></a>

可以設定機器人執行指令的時間或次數。 &#x20;

![](https://3604010070-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMkf3T5TFv8DQHoxabU%2F-Ly8oEh31JcFJN1WeS4d%2F-Ly8ogpU1jMeSmlp0dX9%2Fimage.png?alt=media\&token=28aa7f63-c4b4-4ce8-b907-f2b9eb52c90a)

### ❶取得目前毫秒數 <a href="#delay" id="delay"></a>

可以取得目前的時間，單位是毫秒數。

![](https://3604010070-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMkf3T5TFv8DQHoxabU%2F-Ly8pVp0C4MQA2v6hUK9%2F-Ly8qIRVAmuEMTX6P5yW%2Fimage.png?alt=media\&token=02386a72-ccac-4555-8cdb-be4998c13f7b)

> 舉例說明：
>
> 首先取得目前的時間，儲存在「開始時間」的變數中，接著如果從開始時間起算，到現在還沒有超過5000毫秒(即：現在時間-開始時間<5000)，則LED燈亮紅燈，直到超過了5000毫秒，LED燈亮綠燈。

![](https://3604010070-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMkf3T5TFv8DQHoxabU%2F-M0MVCJYHlatnKXmvkYk%2F-M0MVZ5FDTq6gWqPRFd3%2Fimage.png?alt=media\&token=4c4682cc-20cc-44cd-996d-bd7900c10b3d)

### ❷延遲  <a href="#delay" id="delay"></a>

控制前一個指令延遲的時間，單位為毫秒(1秒=1000毫秒)，因為FlipCode執行程式時速度非常快，所以如果沒有設定指令持續的時間，容易發生指令用非常快的速度執行完畢，也因為執行速度太快，無法確定是否有正確執行指令。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FcKwl4YaSb2l2kRhQakFk%2Ffile.png?alt=media)

> 舉例說明：
>
> 我們希望機器人能執行的指令為蜂鳴器發出Do的聲音1秒後，蜂鳴器再發出Re的聲音1秒，如左方圖；若沒有增加延遲，程式就會在蜂鳴器發出Do和Re的指令中快速切換，因為速度太快，導致於最後只能呈現其中一種動作，如右方圖。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FyakfKQER2wVip9vWYaj4%2Ffile.png?alt=media)

### ❸循環計數  <a href="#for-loop" id="for-loop"></a>

可以控制指令執行的次數，變數名稱可在淺色框中的下拉式按鈕進行修改，中間的兩個綠色拼圖可以設定次數的範圍，而最右方的綠色拼圖表示每次執行完指令後增加的數值。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FRsrNF40KD0edBOGxP7in%2Ffile.png?alt=media)

> 舉例說明：
>
> 為了能準確地執行範圍內的動作，請將循環計數的拼圖拉入初始化的區塊中，再設定名稱為執行次數，變數範圍為1\~10，拉入馬達1號以200的速度，持續運轉0.5秒和停止0.5秒的拼圖；這個程式表示開機後會有一個變數叫做執行次數，一開始的數值為1，會執行馬達1號運轉0.5秒再停止0.5秒的動作，每次做完指令變數就會+1，直到變數數值為10停止動作，總共做了10遍。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FioLSU6ZGYPqbTsf8kUOR%2Ffile.png?alt=media)

### ❹重複  <a href="#while-loop" id="while-loop"></a>

可以重複執行指令，就是和重複執行(loop)一樣，放在裡面的程式會一直重複執行，共有兩種設定條件的方式，第一種是當某個條件成立時(真值)，重複執行設定的指令；另一種是當條件不成立時(假值)，重複執行設定的指令。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FeNG8WbU20NfQbzeP2t6x%2Ffile.png?alt=media)

共有兩種形式可以使用，在淺色框中的下拉式按鈕，可選擇當或直到。&#x20;

![](https://3604010070-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMkf3T5TFv8DQHoxabU%2F-LOYIwEJrhJjSpHJfde9%2F-LOYHv39AVOK5GsPoAOU%2F5.gif?alt=media\&token=123cba52-dcab-4037-ac9c-6d9e8cadf834)

> 舉例說明：
>
> 如下圖，當紅外線感應器回傳的數值等於1的條件成立時，會重複執行直流馬達1號運轉0.5秒和停止0.5秒的動作；條件不成立則會不執行動作。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FCjNxCsNh2Q5gdD4m75sy%2Ffile.png?alt=media)

> 舉例說明：
>
> 如下圖，當紅外線感應器回傳的數值不等於1的條件成立時，會重複執行直流馬達1號運轉0.5秒和停止0.5秒的動作；條件不成立時(紅外線感應器回傳的數值等於1)，則會不執行動作。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FEgqJuSvgo4QpulU0dUvP%2Ffile.png?alt=media)

## 數學：  <a href="#math" id="math"></a>

程式中需要用的數值和數學運算 &#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FiV1jIb4w4mxEIPQqL1Aa%2Ffile.png?alt=media)

### ❶數字  <a href="#digit" id="digit"></a>

在淺色框中可以輸入任何數字，表示給予某個指令一個數值。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FzoHIe2CjRJoqJ4CHFcCz%2Ffile.png?alt=media)

> 舉例說明：&#x20;
>
> 直流馬達Ｍ1號的輸出數值為255。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FA9FAsKyEzCNzdDjv6FTC%2Ffile.png?alt=media)

> 舉例說明：&#x20;
>
> 延遲0.5秒。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FUvPmJz7aubzsG9WFXR7P%2Ffile.png?alt=media)

### ❷數學運算  <a href="#arithmetic-operators" id="arithmetic-operators"></a>

可以使用於數學運算中的加減乘除以及次方。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FAp0TMqRsm77lf7ffwPca%2Ffile.png?alt=media)

共有五種形式可以使用，在淺色框中的下拉式按鈕，可選擇不同的運算模式。

![](https://3604010070-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMkf3T5TFv8DQHoxabU%2F-LOYIwEJrhJjSpHJfde9%2F-LOYI8Z6rnvIgvXEjluJ%2F6.gif?alt=media\&token=ad70cc18-7a3e-49c1-aa64-a648fe9c1d6a)

> 舉例說明：
>
> 可以在前後的框中，拉入數字的拼圖、變數或能回傳數值相關的其他拼圖進行數學運算。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FbHj7jPMPQDT3joRIvuyJ%2Ffile.png?alt=media)

### ❸取小值  <a href="#min" id="min"></a>

在兩數值中取最小值，在前後淺色框中，可以輸入任何跟數值相關的拼圖，並在兩者中找出最小的那一方數值。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FmWtuxQzklgExjlg3vmJH%2Ffile.png?alt=media)

> 舉例說明：&#x20;
>
> 5、3中，最小的數值為3，則回傳數值3。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FjAMVwXMRqAFJqV1Wnjmp%2Ffile.png?alt=media)

### ❹取大值  <a href="#max" id="max"></a>

在兩數值中取最大值，在前後淺色框中，可以輸入任何跟數值相關的拼圖，並在兩者中找出最大的那一方數值。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FiXKiiDlyDrKxwu1wVQMH%2Ffile.png?alt=media)

> 舉例說明：&#x20;
>
> 20、255中，最大的數值為255，則回傳數值255。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FXVxJdOvEU9njwHSNDiqi%2Ffile.png?alt=media)

### ❺限制數字  <a href="#constrain" id="constrain"></a>

限制數值的範圍，在右方的兩個淺色框中，可以輸入任何跟數值相關的拼圖，並表示為最左方數值的範圍。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2Fe4aB06utYoNWIvKbZxq5%2Ffile.png?alt=media)

> 舉例說明：&#x20;
>
> 左方的限制數字會藉於0\~100之間。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FbuDzfNxg8xB3rC2XVPLW%2Ffile.png?alt=media)

### ❻映射值  <a href="#map" id="map"></a>

更改數值範圍，表示最左方的數值範圍限制，從中間個兩個數值範圍，更改為最右方的兩個數值範圍，在淺色框中，可以輸入任何跟數值相關的拼圖。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2F2f1HFPoMfBLc7hmkQbfH%2Ffile.png?alt=media)

> 舉例說明：&#x20;
>
> 數值範圍從0\~100更改為0\~500。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2Fnloim9v7EtpHtzHiFW9y%2Ffile.png?alt=media)

> 舉例說明：&#x20;
>
> 例如你有個光線感應器會回傳一個0到1023數值，但是因為你程式的需求，不希望回傳的值那麼大，想要把回傳的值，根據比例轉換成1至10，所以可以利用這個拼圖來處理。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FU8VAyfWiFmle9CKwLaIy%2Ffile.png?alt=media)

## 文字：  <a href="#text" id="text"></a>

可在淺色框中輸入要進行溝通的文字的，需注意不能輸入中文 &#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FUMXUMXO1sErDZdkDRrAa%2Ffile.png?alt=media)

### ❶文字  <a href="#text-text" id="text-text"></a>

在淺色框中輸入文字。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2F9wJ7UJ0Wcm3V5hYHWHQ3%2Ffile.png?alt=media)

> 舉例說明：&#x20;
>
> 點選序列埠會顯示Hi。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FuRcnlZtZkjI2OwzfT55q%2Ffile.png?alt=media)

## 變數：  <a href="#variables" id="variables"></a>

像是一個盒子，盒子裡你可以放入任何可以被變動的數值、字串、指令…等 &#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FxKzJGJ6nTlWuWCsJOppG%2Ffile.png?alt=media)

### ❶建立變數  <a href="#set-variable" id="set-variable"></a>

點選變數中的建立變數，就會出現可以幫變數命名的小視窗，在框中輸入新變數為變數名稱，按下確定後，就可以看到工具列出現先變數的功能選項，第一個拼圖是幫新變數賦予數值、字串…等內容 。&#x20;

![](https://3604010070-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMkf3T5TFv8DQHoxabU%2F-LOYN6Q9FjZSNhVWtYD7%2F-LOYS-hZaXjavJRvOHbC%2F7.gif?alt=media\&token=005cd5d6-2d93-4953-a3c0-b45f49191909)

> 舉例說明：新增一個變數命名為「新變數」，並賦予「新變數」數值為50&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FbMIcwKXyX6juM7HoNTDf%2Ffile.png?alt=media)

> 舉例說明：新增一個變數命名為「新變數」，並賦予「新變數」為字串「Hi」&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FPIwux9rThtvIqlsIUdAA%2Ffile.png?alt=media)

> 舉例說明：&#x20;
>
> 新增一個變數命名為「新變數」，並賦予「新變數」為超音波感應器偵測距離的回傳數值&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FQJYW5AjDrpGhlXbwHwsu%2Ffile.png?alt=media)

> 舉例說明：&#x20;
>
> 新增一個變數命名為「新變數」，並賦予「新變數」為紅外線感應器回傳的數值乘於5&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FauirBmN05oXoO8TwiEHa%2Ffile.png?alt=media)

> 舉例說明：&#x20;
>
> 新增一個變數命名為「新變數」，並賦予「新變數」為超音波感應器回傳的距離除10，並判斷當「新變數」的數值小於10，執行直流馬達Ｍ1號以200的速度往順時針方向運轉，否則執行直流馬達Ｍ1號以200的速度往逆時針方向運轉&#x20;

![](https://3604010070-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMkf3T5TFv8DQHoxabU%2F-LOYUEFG4c8D5DesV0hc%2F-LOYX43dqjXc9DwcJEJA%2Fimage.png?alt=media\&token=c4f74d81-b951-47c0-b730-beec9e2804d1)

## &#x20;函式  <a href="#functions" id="functions"></a>

可以將繁雜的程式指令包在一個拼圖中，減少重複製作的時間，而在需要使用這些指令時，只需使用製作完成的函式，不需要再重複製作。 &#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2F45FCCYl98r2tveYbQ792%2Ffile.png?alt=media)

### ❶到做些什麼  <a href="#do-something" id="do-something"></a>

執行包在函式中的指令。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2F6y69VrKPawVrJEgQzXaB%2Ffile.png?alt=media)

> 舉例說明：
>
> 首先先拉出一個新的函式，在做些什麼淺色框中可以將函式命名，先將函式命名為「前進」，並拉入直流馬達設定馬達控制號碼、旋轉方向以及速度。&#x20;
>
> 組裝好FlipRobot後，將要控制的馬達號面向自己，會發現兩邊的旋轉方向不同，因為FlipRobot組裝時，兩顆馬達位置是對稱的，所以旋轉方向會不相同，以前進為例：直流馬達M1號向前運轉的方向是逆時針、直流馬達M2號向前運轉的方向是順時針。&#x20;

![](https://3604010070-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMkf3T5TFv8DQHoxabU%2F-LOYN6Q9FjZSNhVWtYD7%2F-LOYQuqZRHJSDpQ4MjeL%2F8.gif?alt=media\&token=76b15e18-d84f-458e-85c3-4aa24009ddea)

> 完成建立新函式後，記得要將建立好的新函式指令拉入初始化或是重複執行的區塊中，如果少了這個步驟，會發現燒錄後機器人不會執行指令，這是因為程式目前只有告訴機器人，我們有了一個新功能做作「前進」，但是不會執行。&#x20;
>
> 切換到Arduino原始碼的畫面中可以清楚看到，在程式上方已經定義好「前進」的功能，但是在setup()或loop()中沒有任何指令，所以機器人不會動；如果要讓機器人執行指令，必須將做好的新函式指令「前進」拉入初始化或是重複執行的區塊中；切換到Arduino原始碼的畫面，就會發現setup()或loop()中出現「前進」的指令，這樣機器人才會執行動作。&#x20;

![](https://3604010070-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMkf3T5TFv8DQHoxabU%2F-LOYN6Q9FjZSNhVWtYD7%2F-LOYQkCKog-tx_1wihdM%2F9.gif?alt=media\&token=d9c08d4a-0472-46f1-844e-003e758e1c78)

> 舉例說明：&#x20;
>
> 前進1秒後，右轉0.5秒，接著停止1秒再左轉0.5秒。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2F4iF9s4LrG4pxbw1dVmoZ%2Ffile.png?alt=media)

### ❷到做些什麼，返回  <a href="#do-something-return" id="do-something-return"></a>

執行完函式後會回傳一個數值。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FU163ckeVNr6W7Do6IyFB%2Ffile.png?alt=media)

> 舉例說明：
>
> 執行完函式，會回傳一個數值，執行完「前進」的指令後，會回傳的5這個數值，並將「5」從序列埠中顯示出來。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FDvFw9JYlefIGu4dzI6Ec%2Ffile.png?alt=media)

### ❸如果返回  <a href="#if-return" id="if-return"></a>

只能放在函式中來使用，會判斷設定的條件是否成立，如果成立則立即回傳數值並中斷函式進行。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FvwKbbR5qMYUypL91DJ78%2Ffile.png?alt=media)

> 舉例說明：
>
> 只能在函式中使用，若放在函式以外的位置，會發現拼圖呈現灰底的狀態，表示無法使用；這一種函式的使用方法會進行條件的判斷，如果條件成立，會立刻中斷函式並回傳數值，以下圖為例：設定「前進」的函數回傳數值為5，在「前進」的函式中增加兩個判斷式，如果1>0的條件成立，回傳數值3、如果2>0的條件成立，回傳數值4，並設定初始化在序列埠印出「前進」的回傳數值；燒錄程式後會發現，序列埠中出現的回傳數值為3，代表函式進行到第一個判斷式【如果1>0的條件成立，回傳數值3】就中斷程式並回傳數值3；另外也可以發現重複執行中有另一個判斷函式為【如果7>8的條件成立，回傳數值9】呈現灰底，是因為沒有放在函式中，所以無法使用。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FyUu3rFqhjJqhLiqs3mTV%2Ffile.png?alt=media)

## 輸入輸出：  <a href="#io" id="io"></a>

控制晶片板接收和發送的資料或訊號，例如：蜂鳴器、LED燈和其他晶片板上的原件、腳位…等。 &#x20;

![](https://3604010070-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMkf3T5TFv8DQHoxabU%2F-LOYN6Q9FjZSNhVWtYD7%2F-LOYNmztIK43GICEV5pi%2Fimage.png?alt=media\&token=7084d758-1976-4b34-9aa9-1ad6f740d642)

### ❶高、低電位  <a href="#high-low" id="high-low"></a>

控制訊號的電位，高電位代表放電、低電位代表不放電 。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FN4nedPuEYLJsUi4aZ4cb%2Ffile.png?alt=media)

### ❷腳位  <a href="#pin" id="pin"></a>

在FlipRobot主控板上有很多的腳位可以使用，但有些已經被限定是某些元件的特殊腳位，例如：12號腳位用來控制蜂鳴器；但也有一些腳位沒有被限制，可以讓使用者設定，例如：7號、8號、A4、A5…等。&#x20;

腳位用來接收或發送訊號，在FlipCode中，若有看到拼圖上有寫PIN代表的是腳位號碼。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FGax6QSLSVEycGWQyjUSf%2Ffile.png?alt=media)

在淺色框中的下拉式按鈕可以選擇不同的腳位號碼來控制腳位。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FeJ0lt35EB3GjOaQGyiCR%2Ffile.png?alt=media)

在腳位名稱上，也分為兩種類別：&#x20;

* 「數位腳位」：純數字表示，例如：7。&#x20;
* 「類比腳位」：字母A加上數字，例如：A4。&#x20;

在FlipCode中，類比訊號可以被數位化、數位訊號可以類比化。&#x20;

#### 數位腳位：  <a href="#digital-pin" id="digital-pin"></a>

常用1、0表示回傳的數值，1表示有回傳數值、0表示沒有回傳數值，所以只會出現有或沒有兩種答案，可以使用在電源有沒有被接通、感應器有沒有回傳值、LED有沒有亮燈…等使用。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FhlBKCh8tJ2NYXlEqjEKM%2Ffile.png?alt=media)

> 舉例說明：&#x20;
>
> 將10號腳位設定為高電位的數位訊號，如果10號腳位有通電回傳數值就會是1，執行直流馬達M1號以200的速度往順時針方向運轉；沒有通電回傳數值為0，執行直流馬達M1號不動。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FoDY9C3wtg0DEMP1JSR7v%2Ffile.png?alt=media)

#### 類比腳位：  <a href="#analog-pin" id="analog-pin"></a>

類比訊號可以有更多連續性的訊號，例如：超音波感應器偵測到的距離數值、電流大小、光線強弱…等，若要設定一個腳位為類比腳位，訊號範圍為0\~1023。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FT5MiS5YYGSRorhQX0ARF%2Ffile.png?alt=media)

> 舉例說明：&#x20;
>
> 新增一個變數命名為【回傳值】，並賦予值為A3類比腳位回傳的數值；在新增另一個變數命名為【輸出值】，並賦予值為變數回傳值除以4(將數值0\~1023縮小至0\~255左右)；設定5號腳位用類比化的方式，輸出變數【輸出值】的數值，延遲0.3秒後，在序列埠顯示目前變數【輸出值】的數；所以在序列埠中可以看到，5號腳位的數值開始會慢慢連續性的遞減，而這個數值是由A3腳位回傳再由5號腳位輸出所得。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FFMi80o1EBBxeyJeZC28c%2Ffile.png?alt=media)

### ❸蜂鳴器  <a href="#buzzer" id="buzzer"></a>

控制蜂鳴器是否發出聲音、發出聲音的頻率及時間；在FlipRobot主控板上，有一個發聲裝置-蜂鳴器，我們可以透過不同的FlipCode拼圖來控制蜂鳴器發聲的行為。&#x20;

簡單分為三種：發聲頻率、音階發聲、不發聲。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FK4N9Wt8HiJJUU0pYYtO6%2Ffile.png?alt=media)

#### 發聲頻率  <a href="#tone-frequency" id="tone-frequency"></a>

下圖三種都須輸入發聲頻率，也就是蜂鳴器的聲音頻率，蜂鳴器會依照頻率的數值發出聲音，例如：頻率523為標準音Do；比較不同的是第一種需要選擇蜂鳴器的腳位，蜂鳴器的腳位為12號，若選擇了錯誤的腳位蜂鳴器則不會發出聲音；還有第三種蜂鳴器拼圖，多了持續時間的功能，表示聲音持續的時間，如果使用其他沒有持續時間的蜂鳴器拼圖，可以搭配延遲的拼圖來使用。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FTPb1QKBReEbjjQEzpVED%2Ffile.png?alt=media)

> 舉例說明：&#x20;
>
> 三種蜂鳴器發出頻率523(Do) 0.5秒的使用方式。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FxD8rXP4tJlgddu5tDt1y%2Ffile.png?alt=media)

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FnAJ5bEYDO7dHxobwlGJb%2Ffile.png?alt=media)

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FCAYbpX3p9jzspmk2DhQi%2Ffile.png?alt=media)

#### 音階發聲  <a href="#tone-scale" id="tone-scale"></a>

這兩種是已經內建了Do、Re、Mi…等7個音。 \
使用者在淺色框中的下拉式按鈕可以選擇不同的音高。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FiYYvihYeCQsabxYQYDod%2Ffile.png?alt=media)

> 舉例說明：
>
> 兩種蜂鳴器發出Do 0.5秒的使用方式。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2F4oyxFe005mOsumJET7JC%2Ffile.png?alt=media)

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FXBVw0Meqx56gCJpRWwzV%2Ffile.png?alt=media)

#### 不發聲 <a href="#mute" id="mute"></a>

這兩種是用來控制蜂鳴器不發出聲音。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FmBJnLpaUPVRo8bZaozVN%2Ffile.png?alt=media)

> 舉例說明：
>
> 兩種蜂鳴器發出Do 0.5秒後不發出聲音0.5秒的使用方式。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2F2sWXCsQigBGJDwKpIx4X%2Ffile.png?alt=media)

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FmrgBvUK07Qa0p2U2ySSw%2Ffile.png?alt=media)

### ❹接收內建按鈕訊息  <a href="#built-in-button" id="built-in-button"></a>

控制按鍵開關；在FlipRobot主控板右上方設有一個按鍵功能，可以使用接收內建按鈕的拼圖來控制按鈕在不同狀態下執行的指令；常用1、0表示按鈕的狀態，1表示按鈕按下(有回傳數值)、0表示按鈕沒有按下(沒有回傳數值) 。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2F6O44K86wsXHCR3Ys3ZCJ%2Ffile.png?alt=media)

> 舉例說明：
>
> 按下按鍵時，蜂鳴器發出Do的聲音，沒有按按鈕時，蜂鳴器不發出聲音。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FIl58mUM2euMdN7KVEIe9%2Ffile.png?alt=media)

### ❺LED&#x20;

控制LED亮燈的狀態，在FlipRobot主控板上有兩種不同型態的LED燈，所以也使用了不同的程式拼圖來控制。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FXbhrx9ffgrg0DQfUpEVB%2Ffile.png?alt=media)

在FlipRobot晶片板中央有一顆能發出白光的LED燈，下方圖就是用來控制單顆LED燈亮燈或不亮燈，在淺色框中的下拉式按鈕，可以選擇控制高、低電位，高電位代表亮燈、低電位代表不亮燈。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FcsvA6Th9o9axBC6PDVdu%2Ffile.png?alt=media)

> 舉例說明：
>
> LED亮燈0.5秒後不亮0.3秒。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FIaKFeOKjRO4NdPiLj4U9%2Ffile.png?alt=media)

在FlipRobot主控板靠近超音波插孔的位置，有兩顆RGB LED燈，一般的LED燈只能發出一種光，但是RGB LED燈因為使用了RGB三原色的原理，所以可以透過RGB數值調出不同顏色的光；淺色框中的下拉式按鈕，可以選擇控制RGB LED燈號，以主控板為主，主控板的左方為RGB LED1號、右方為RGB LED2號。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2F3SQJobCrS6imMiJ5oEwN%2Ffile.png?alt=media)

> 舉例說明：
>
> RGB LED 1號亮紅燈0.5秒後，亮綠燈0.5秒，再亮藍燈0.5秒。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2Fa3T6I5Ny3gADIJ83Sfji%2Ffile.png?alt=media)

## 文字輸出：  <a href="#serial" id="serial"></a>

用來和其他晶片板或電腦進行溝通；在機器人的世界中，其實是使用0、1來進行溝通，我們所使用的數字、字串、圖形…等，都是由0、1構成的，而序列埠就是用來跟機器溝通用的模組。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FpkYZc2FXyi5TS9WYauL5%2Ffile.png?alt=media)

### ❶序列埠可用  <a href="#serial-available" id="serial-available"></a>

機器人在進行溝通時，會將收到訊息先儲存在一個暫存區中，而序列埠可用的功能就是用來判斷暫存區裡是否有任何訊息。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FEzjozjwYe8iDKsuhT8Jb%2Ffile.png?alt=media)

> 舉例說明：
>
> 判斷序列埠可用大於0的條件是否成立，用來判斷序列埠中是否有任何訊息。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FEWAarqWqHqNLLWuUM0ZY%2Ffile.png?alt=media)

### ❷序列埠讀取  <a href="#serial-read" id="serial-read"></a>

負責判斷和讀取暫存區中收到的第一則訊息，因為機器人溝通時，可能會使用字串、數字、圖形…等不同方式來進行溝通，而序列埠讀取的功能就是用來判斷收到的訊息，是否和設定的條件符合。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2F1SUWMiWceSDLCmJElze7%2Ffile.png?alt=media)

> 舉例說明：
>
> 判斷暫存區的訊息的餘數值0的條件是否則立。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FaaslzEU15KqbF0bikhMO%2Ffile.png?alt=media)

> 舉例說明：
>
> 判斷當暫存區有收到訊息時，執行判斷訊息如果等於字元A的條件成立，執行蜂鳴器發出Do的聲音；否則執行蜂鳴器發出Re的聲音。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FZuRaCYThTGm4peigT6g4%2Ffile.png?alt=media)

#### 發送訊息  <a href="#send-message" id="send-message"></a>

以下為兩種發送訊息的方式，第一種以數字的方式發送訊息、另一種是以字元的方式發送訊息。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2F2Qh9NTfWkWLGNtAZdP92%2Ffile.png?alt=media)

### ❸序列埠寫入  <a href="#serial-write" id="serial-write"></a>

以數字的方式發送訊息，並將訊息經由序列埠傳給機器；在機器人的世界中，為了讓彼此溝通更方便，所以將某些常用的字元、圖案用數字碼的方式來代表，例如：字元「A」的數字碼是65；所以當序列埠發送數字訊息時，如果和已經被設定的字元或圖案相同，就會顯示數字碼所代表的字元或圖案。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2Fh1O9F9m5DlinlNFLHpKb%2Ffile.png?alt=media)

### ❹清空暫存  <a href="#serial-flush" id="serial-flush"></a>

將訊息暫存區的檔案清空。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FZRUy74Z0MVwx4LfGEXry%2Ffile.png?alt=media)

### ❺序列埠印出  <a href="#serial-print" id="serial-print"></a>

以字元的方式發送訊息，字元的意思就是文字，所以在傳送訊息時，不會再被轉為數字碼，例如：發送訊息65，在程式中顯示的會是傳送訊息字元’6’、字元’5’。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2FCZvSFHsZ8Jc8cs6Jo2bW%2Ffile.png?alt=media)

> 舉例說明：
>
> 開機後，序列埠寫入訊息數字碼65會顯示A；序列埠印出訊息66，會顯示字串66。&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LMkf3T5TFv8DQHoxabU%2Fuploads%2F5tlt7VsnehwhJoWGBgHk%2Ffile.png?alt=media)
