LEDマトリクス
micro:bitボード上では、オンボードLEDが5x5のマトリクス状に配置されており、合計25個のLEDがあります。各LEDが専用のGPIO(General Purpose I/O)ピンに接続された1個または2個のLEDしか持たない他のボードとは異なり、micro:bitではLEDごとに別々のGPIOピンを使うことはできません。もしそうすると、GPIOピンがLEDだけで全部使い切られてしまい、センサーやそのほかの入力に使えるピンが残らなくなります。
多重化: ピンを共有して多くのLEDを制御する
LEDごとに1本のピンを使う代わりに、micro:bitの5x5マトリクスでは10本のGPIOピンだけを使用します。内訳は、行用が5本、列用が5本です。LEDはグリッド状に配線されており、それぞれのLEDは1本の行と1本の列の交点にあります。
- 行ピンは電力を供給します(ロジックHIGHに設定)。
- 列ピンはグラウンドへの経路を提供します(ロジックLOWに設定)。
適切な行と列を選ぶことで、マイクロコントローラーは1つのLEDを点灯できます。
1つのLEDが点灯する仕組み
特定のLED、たとえば2行3列のLEDを点灯させるには、次のようにします。
- 2行目をHIGHに設定します。これにより、その行に電圧が供給されます。
- 3列目をLOWに設定します。これにより、その列がグラウンドに接続されます。
- 電流は行から、その交点にあるLEDを通って列へ流れ、LEDが点灯します。
高速スキャンによる複数LEDの点灯
異なる行にある複数のLEDを点灯させたい場合、micro:bitは一度に1行ずつ、非常に高速に点灯させます。
たとえば次のようになります。
- 1行目を有効にし、適切な列をLOWに設定していくつかのLEDを点灯します。
- 次に1行目を無効にし、2行目を有効にして、列ピンを更新します。
- これを5行すべてについて高速に繰り返します。
このスキャンは非常に高速に行われるため(1秒あたり数十回)、私たちの目にはちらつきが検出できません。その代わり、安定した画像として見えます。この効果は残像効果として知られています。
注: このスキャンが内部でどのように行われているかを気にする必要はありません。コードでは、必要な列をLOWに、対象の行をHIGHに設定するだけです。残りはmicro:bitが処理してくれます。
GPIOピンのマッピング
この章ではこの情報はあまり役に立ちませんが、後でHALを扱うときに、どの行と列がどのピンに対応しているかを知っておく必要があります。
micro:bit V2の回路図によると、LEDマトリクスのピンはnRF52833マイクロコントローラー上の次のGPIOに接続されています。
| マトリクスの役割 | 役割 | ポート | ピン |
|---|---|---|---|
| ROW1 | ソース | P0 | 21 |
| ROW2 | ソース | P0 | 22 |
| ROW3 | ソース | P0 | 15 |
| ROW4 | ソース | P0 | 24 |
| ROW5 | ソース | P0 | 19 |
| COL1 | シンク | P0 | 28 |
| COL2 | シンク | P0 | 11 |
| COL3 | シンク | P0 | 31 |
| COL4 | シンク | P1 | 05 |
| COL5 | シンク | P0 | 30 |
参考資料
- uBit.display(micro:bit v1向け) : これはmicro:bit v1向けです。micro:bit v2ではLEDのピン配置が異なるため、完全には一致しません。

