# 遙控小車硬體組裝及程式入門

## 遙控小車簡介

本單元使用的遙控小車，是由moto:bit所驅動控制的套件模組。它的規格如下：

{% embed url="<https://www.taiwaniot.com.tw/product/microbit-%E6%A9%9F%E5%99%A8%E4%BA%BA%E8%87%AA%E8%B5%B0%E8%BB%8A%E5%A5%97%E4%BB%B6-sparkfun-microbot-kit-%E5%8E%9F%E8%A3%9D%E9%80%B2%E5%8F%A3/>" %}

我們組裝完成之後，從上面看起來是這個樣子：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LSwu3KdpSZi6UJZpGJH%2F-LSwv5_ncfBem_ii-d1c%2F2018-12-05%2010.49.49.jpg?alt=media\&token=571a1fab-b3b6-44ea-8af8-e3ce033aee00)

近一點看的話，如下：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LSwu3KdpSZi6UJZpGJH%2F-LSwv8zJUTSg9BcMAoK4%2F2018-12-05%2010.49.55.jpg?alt=media\&token=f157e67b-6e61-44ea-a840-81d87c860b31)

它的底下有3個紅外線感測器，可以用來做自車循跡之用：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LSwu3KdpSZi6UJZpGJH%2F-LSwvIn51f4Ao2qGtuBl%2F2018-12-05%2010.50.02.jpg?alt=media\&token=90ed8316-7be5-4909-88d5-cc85b0e0efa6)

整個架構還有許多的空間，可以讓我們多加裝一些裝置上去，之後我們會再教如何新增額外的感測器以及裝置：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LSwu3KdpSZi6UJZpGJH%2F-LSwvRHaiPeWYiwC8dvn%2F2018-12-05%2010.50.16.jpg?alt=media\&token=b652e876-9049-4c30-907f-6517c40ff228)

## 小車驅動積木的安裝

由於這台小車的開發公司已經做好了一些現成的積木可以使用，所以我們要做的只是先把他們做好的積木拿進來使用就可以了，請到micro:bit的環境，找到「擴展」積木的功能，如下：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LSwu3KdpSZi6UJZpGJH%2F-LSwwSkYD75iKIT1lvO7%2F2018-12-05_13-56-38.png?alt=media\&token=97527120-60b5-42e9-a67b-3caab17d4ce0)

在擴展積木的介面中輸入moto:bit搜尋，即可找到控制小車用的積木：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LSwu3KdpSZi6UJZpGJH%2F-LSwwm3VuNrW6cURCBez%2F2018-12-05_13-58-37.png?alt=media\&token=967bc53f-aa25-41e9-b4e1-16012ab7f0f7)

點選這個積木之後，回到程式設計環境，就可以看到多出來的控制積木了，如下所示：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LSwu3KdpSZi6UJZpGJH%2F-LSwx3fC29mQTHXd0DcE%2F2018-12-05_14-00-22.png?alt=media\&token=9b831913-8eee-4eac-b260-5094e1db08f5)

在moto:bit的積木中總共有3個積木可以使用，分別用來控制馬達的開以及關，還有左右馬達前進還是後退的速度，以及設定馬達的轉向等。

## 讓小車開始前進

假設我們想要讓小車在按下A按鈕是左轉一圈，B按鈕時右轉一圈，則可以設計以下的程式積木：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LSwu3KdpSZi6UJZpGJH%2F-LSx-EzkdyoWwCT0Zm9p%2F2018-12-05_14-14-24.png?alt=media\&token=db273b13-9d33-40b0-9f19-5e7e0e770c35)

上面的程式燒錄完成之後，小車就會在按下按鈕之後進行原地迴圈的功能。但是，如果要讓小車遶大一點的圈圈的話，那麼另外一輪就不能都不動，而是要跟著動，但是要慢一些，由於比較大圈了，所以中間暫停的時間也就可以改長一點，程式修改如下：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LSwu3KdpSZi6UJZpGJH%2F-LSx0bFO4JIRcQPg3p3z%2F2018-12-05_14-19-50.png?alt=media\&token=28f3bf4b-df16-4df7-adb5-1d12100e6967)

接下來，我們也可以加上同時按下A和B按鈕時，車子可以直行前進，程式積木如下：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LSwu3KdpSZi6UJZpGJH%2F-LSx1ZkrSRIuvE9pQhHE%2F2018-12-05_14-24-31.png?alt=media\&token=99118f42-8526-4530-8851-0506ab469d29)

在充分練習之後，同學們自己是否可以想出更多有趣的組合了呢？以下是一個繞S形的版本，同學們也可以試試看自己的版本喔。

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LSx2t099oNM__gf19HL%2F-LSx31bvmsdtvTQwNY0M%2F2018-12-05_14-30-21.png?alt=media\&token=671bd963-dc4c-42ce-87b3-c4bba7dd2f1d)

## 遙控車版本

由於 micro:bit本身即具有無線電廣播的能力，因此拿另外一片來當做遙控器是再好不過了。接下來我們來看看如何達成遙控的功能。

### 遙控器micro:bit製作

要做一台遙控車，除了車子本身要有被遙控的能力之外，當然還要有遙控器才能夠用來控制車子。因為micro:bit預設有無線電廣播的功能，因此可以很簡單地就製作出搖控器。micro:bit的廣播積木有以下這幾種：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LaVeL45NNwA9efTh2B8%2F-LaVfOOaseKppIYtyyJH%2F2019-03-21_22-34-29.png?alt=media\&token=60c37677-f200-4b00-a6b1-5859aabdc030)

由於板子可能會同時很多片在附近，因此要使用無線電廣播的第一件事，就是讓兩片或多片彼此想要通訊的板子使用相同的廣播群組，這個設定的工作，請在一開始「當啟動時」的積木中設定使用，如下所示：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LaVeL45NNwA9efTh2B8%2F-LaVfpbp5hdjcQ9ugo89%2F2019-03-21_22-36-47.png?alt=media\&token=25f4790a-24ed-49dd-9a81-9f60b3ac817a)

所以，在這個例子中，搖控器和車子上的板子，都要設定如上所示的相同群組。而廣播的內容可主要有三種型式，第一種是傳送一個數字，第二種是傳送一個「鍵--值」對，第三種則是傳送一段文字。為了簡化示範的內容，在這個例子中我們只打算傳送數字，利用不同的數字內容，來決定要如何控制車子的行動。

在此，我們定義的控制鍵如下：

| 遙控器操作 | 傳送之數字 | 代表意義 |
| ----- | ----- | ---- |
| A     | 1     | 左轉   |
| B     | 2     | 右轉   |
| A+B   | 3     | 前進   |

雖然在上面的表格中我們列出當按下A按鈕時會左轉，但是在遙控器的動作其實只是廣播數字1出去而已，真正左轉的動作，是在車子上的micro:bit板子中要做的回應操作，另外兩個按鈕方式也是同樣的情形。

遙控器上的完成程式積木如下：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LaVeL45NNwA9efTh2B8%2F-LaVi4fVqQz1qofUYKyf%2F2019-03-21_22-46-35.png?alt=media\&token=e66da297-0423-4674-ab00-e3bb3e3127e3)

遙控器的程式就這麼簡單喔。

### 車子上的micro:bit

前面的遙控器只是負責下命令，真正要讓車子前進或轉彎的操作，是在車子上的板子來完成的。對於車子上的micro:bit而言，第一件事也是要設定和遙控器上相同的廣播群組，接著就根據收到的數字，決定要進行的操作。設定廣播群組的積木如下：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LaVeL45NNwA9efTh2B8%2F-LaVjJ6pjuu5tNAVtu3c%2F2019-03-21_22-52-15.png?alt=media\&token=beaaac9e-e535-4879-ad51-9713dc0c43f5)

為了簡化程式的設計，先來分別設計出左轉、右轉、和前進的函式。建立函式的位置如下：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LaVeL45NNwA9efTh2B8%2F-LaVjwUbaCbN4mhlBwxK%2F2019-03-21_22-54-13.png?alt=media\&token=336e7e20-a64b-4333-b805-41db639784e3)

在按下建立一個函式按鈕時，micro:bit會詢問我們要建立的函式名稱，我們可以使用中文名字「左轉」來命名。命名完畢之後，就可以看到「左轉」這個函式了：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LaVeL45NNwA9efTh2B8%2F-LaVkPNNoMkLkMA01zn8%2F2019-03-21_22-56-18.png?alt=media\&token=1601f6f8-c9d3-4a4e-8f63-56c845a3fe9b)

接下來依序建立右轉以及前進這兩個函式，如下所示：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LaVeL45NNwA9efTh2B8%2F-LaVkboL67BYCvikdYuY%2F2019-03-21_22-57-59.png?alt=media\&token=b9508a2a-1e67-4100-85de-33bd698c25e5)

當函式名稱命名之後，就可以在程式設計區分別為這些函式進行定義，前進的函式定義如下：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LaVeL45NNwA9efTh2B8%2F-LaVl1p23MstbCrQsv3W%2F2019-03-21_22-59-52.png?alt=media\&token=eaa11686-d839-4b0f-8b8c-a1a2d62fe07c)

上面這段程式積木可以讓車子前進0.5秒。接著左轉：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LaVeL45NNwA9efTh2B8%2F-LaVlh_gec0XNIX2gepo%2F2019-03-21_23-02-46.png?alt=media\&token=255f46b1-0e97-42d3-9f4e-48d1ac66bef8)

以及右轉：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LaVeL45NNwA9efTh2B8%2F-LaVltxsj9iz6l_Ie7GA%2F2019-03-21_23-03-38.png?alt=media\&token=196f4f94-16de-40a5-b143-d491f5499d54)

同學們可以分出它們之間的差異嗎？

有了這些積木之後，接著就可以利用廣播所收到的數字，決定要驅動哪一個動作了，程式如下所示：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LaVeL45NNwA9efTh2B8%2F-LaVmeJAEgfufaouHO76%2F2019-03-21_23-06-48.png?alt=media\&token=6be2be50-f010-4f42-87b9-f951ce10b018)

同學可以修改上述程式積木的數字，實際上遙控看看喔。

## 比賽影片

<https://www.facebook.com/wesleyscratch/videos/506461176498336/>
