2.2 レベルを表示¶
最初のプロジェクトはLEDを点滅させるだけのシンプルなものです。このプロジェクトでは、一般的に電力やボリュームレベルを表示するために使用される、プラスチックケースに10個のLEDを含むLEDバーグラフを使用します。
必要なコンポーネント
このプロジェクトでは、以下のコンポーネントが必要です。
全体のキットを購入する方が便利です、リンクは以下の通りです:
名前 |
このキットに含まれるアイテム |
リンク |
---|---|---|
ケプラーキット |
450以上 |
以下のリンクから個別にも購入できます。
SN |
コンポーネント |
数量 |
リンク |
---|---|---|---|
1 |
1 |
||
2 |
マイクロUSBケーブル |
1 |
|
3 |
1 |
||
4 |
複数 |
||
5 |
10(220Ω) |
||
6 |
1 |
回路図
LEDバーグラフには10個のLEDがあり、それぞれが個別に制御できます。各LEDのアノードはGP6〜GP15に接続され、カソードは220オームの抵抗を介してGNDに接続されています。
配線
コード
注釈
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)