Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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を点灯できます。

microbit

1つのLEDが点灯する仕組み

特定のLED、たとえば2行3列のLEDを点灯させるには、次のようにします。

  1. 2行目をHIGHに設定します。これにより、その行に電圧が供給されます。
  2. 3列目をLOWに設定します。これにより、その列がグラウンドに接続されます。
  3. 電流は行から、その交点にあるLEDを通って列へ流れ、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ソースP021
ROW2ソースP022
ROW3ソースP015
ROW4ソースP024
ROW5ソースP019
COL1シンクP028
COL2シンクP011
COL3シンクP031
COL4シンクP105
COL5シンクP030

参考資料