# 三色 RGB LED實習

RGB三色LED模組非常廣泛地被使用在創客的專題中，因為只要簡單的連接以及少許的程式，就可以讓LED產生出有趣的效果，在這一單元中我們就使用這個模組來做一些有趣的練習。

這次的RGB LED模組是下面這個：

![](/files/-LNmUPrYwF7W9CudRIyM)

它的特色是模組上已有現成的限流電阻，所以我們可以直接連接到開發板上使用，而它需要的電流不多，因此直接利用板上的信號的輸出電源即可點亮。如上圖所示，它的接腳從左邊數過來，分別是負極（接地）、B（藍）、G（綠）、R（紅）等4支接腳，我們可以使用杜邦線分別把它們連接到micro:bit的GND, P0, P1, P2等輸出。

{% hint style="warning" %}
請注意，不是每一個輸出入埠都是可以使用的，主要的空腳位為：#0, #1, #2, #8, #12, #13, #14, #15, #16, #19和#20
{% endhint %}

從正面看起來是以下這個樣子：

![](/files/-LNmW9zypzi5m1PV21nL)

背面看起來是這樣：

![](/files/-LNmWFv-GOdnOUtsUElZ)

控制輸出信號積木在「引腳」類，如下所示：

![](/files/-LNmWnw7EDnobi8N5TXo)

我們首先使用數位輸出的方式，分別輸出高電位到P0, P1, 以及P2：

![](/files/-LNm_4KSp59xAjzLSsQx)

上述這個程式會輪流讓你LED分別輪流顯示RGB三個顏色。如果我們使用了上一單元的隨機數來顯示的話，那麼可以變成以下這樣：

![](/files/-LNm_rnGeF-9_IxK2l3a)

由於三個接腳都有可能是任意的0或1，因此輸出的顏色就是這幾個種顏色的任意組合。

上面是以數位的接腳來看待LED，但是這顆模組其實是支援類別輸入的，也就是它可以由0到 1023，從不亮到逐次增加亮度，直到1023時為最亮，因此，我們把上述的程式全部改為類比寫入，會得到更多的色彩組合。

![](/files/-LNmaaIMxGZjpAwvSlQM)

既然輸出的數量可以從0到1023共有1024種變化，透過以下的程式，就可以從不亮逐漸地變化到最亮，再從最亮逐漸地變化到最暗，直到完全熄減為止。

還記得之前計數器的程式嗎？同樣的方式，為了達成這個效果，請先建立一個叫做level的變數：

![](/files/-LNmbGnj1O7R8AJjhTD5)

以及一個叫做delta的變數，在啟動時先把level設定為0，delta最設為1：

![](/files/-LNmbsnMqvUtOllsQ5qy)

然後，每一次都把level增加為delta的值，如果level大於1023，就把delta改為-1，如果level小於0的時候，就把delta設定為1，然後每一次都輸出level的值做為點亮LED的亮度值：

![](/files/-LNmd3pWLosDjuei74id)

同學們可以執行看看，是否有達成我們想要的效果呢？

{% hint style="info" %}
如果覺得亮度轉變的速度過慢，可以把delta的數字增加，例如+10和-10。
{% endhint %}

{% hint style="info" %}
上述的程式所改變的是白光，同學們也可以自行試試看別的顏色喔。
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://nkust.gitbook.io/micro-bit/san-se-rgb-led.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
