2.2 レベルを表示

最初のプロジェクトはLEDを点滅させるだけのシンプルなものです。このプロジェクトでは、一般的に電力やボリュームレベルを表示するために使用される、プラスチックケースに10個のLEDを含むLEDバーグラフを使用します。

img_led_bar_pin

必要なコンポーネント

このプロジェクトでは、以下のコンポーネントが必要です。

全体のキットを購入する方が便利です、リンクは以下の通りです:

名前

このキットに含まれるアイテム

リンク

ケプラーキット

450以上

Kepler Kit

以下のリンクから個別にも購入できます。

SN

コンポーネント

数量

リンク

1

Raspberry Pi Pico W

1

BUY

2

マイクロUSBケーブル

1

3

ブレッドボード

1

BUY

4

ジャンパーワイヤー

複数

BUY

5

抵抗器

10(220Ω)

BUY

6

LEDバーグラフ

1

回路図

sch_ledbar

LEDバーグラフには10個のLEDがあり、それぞれが個別に制御できます。各LEDのアノードはGP6〜GP15に接続され、カソードは220オームの抵抗を介してGNDに接続されています。

配線

wiring_ledbar

コード

注釈

  • kepler-kit-main/micropython のパス内の 2.2_display_the_level.py ファイルを開くか、このコードをThonnyにコピーしてから「Run Current Script」をクリック、または単にF5キーを押して実行してください。

  • 右下隅にある「MicroPython(Raspberry Pi Pico)」インタープリタをクリックするのを忘れないでください。

  • 詳細なチュートリアルは コードを直接開いて実行する を参照してください。

import machine
import utime

pin = [6,7,8,9,10,11,12,13,14,15]
led= []
for i in range(10):
    led.append(None)
    led[i] = machine.Pin(pin[i], machine.Pin.OUT)

while True:
    for i in range(10):
        led[i].toggle()
        utime.sleep(0.2)

プログラムが実行されていると、LEDバーグラフ上のLEDが順番に点灯し、その後消えます。

動作の仕組みは?

LEDバーは、10本のピンによって制御される10個のLEDで構成されています。つまり、これらのピンを定義する必要があります。 一つひとつ定義するのは煩雑な作業なので、ここでは Lists(リスト) を使用しています。

注釈

Pythonのリストは、一度に複数の要素を扱うことができる非常に多機能なデータ型であり、カンマで区切られた要素を角括弧[]内に配置することで作成されます。

pin = [6,7,8,9,10,11,12,13,14,15]

このコード行によって pin というリストが定義され、10個の要素 6,7,8,9,10,11,12,13,14,15 が含まれます。 インデックス演算子 [] を使用して、リスト内の項目にアクセスすることができます。Pythonでは、インデックスは0から始まります。したがって、10個の要素を持つリストは、0から9までのインデックスを持ちます。 このリストを例にすると、 pin[0]6 であり、 pin[4]10 です。

次に、10個のLEDオブジェクトを定義するために使用される空のリスト led を宣言します。

led = []

リストの長さが0であるため、配列に対する直接的な操作、たとえばled[0]を出力するなど、は機能しません。新しい項目を追加する必要があります。

led.append(None)

この append() メソッドの結果として、リスト led には最初の項目が追加され、長さが1になり、 led[0]None (nullを意味する)という現在の値にもかかわらず有効な要素になります。

次のステップは、ピン6に接続されている led[0] を、最初のLEDオブジェクトとして定義することです。

led[0] = machine.Pin(6, machine.Pin.OUT)

最初のLEDオブジェクトが定義されました。

以上から、10個のピン番号をリスト pin として作成しました。これにより、まとめて操作を行いやすくなります。

led[0] = machine.Pin(pin[0], machine.Pin.OUT)

for 文を使用して、10本のピンすべてが上記の文を実行するようにします。

import machine

pin = [6,7,8,9,10,11,12,13,14,15]
led= []
for i in range(10):
    led.append(None)
    led[i] = machine.Pin(pin[i], machine.Pin.OUT)

もう一つの for ループを使用して、LEDバーの10個のLEDが順番に状態を切り替えるようにします。

for i in range(10):
    led[i].toggle()
    utime.sleep(0.2)

このコード片をwhileループ内に配置することで、コードの完成です。

import machine
import utime

pin = [6,7,8,9,10,11,12,13,14,15]
led= []
for i in range(10):
    led.append(None)
    led[i] = machine.Pin(pin[i], machine.Pin.OUT)

while True:
    for i in range(10):
        led[i].toggle()
        utime.sleep(0.2)