注釈
こんにちは、FacebookのSunFounder Raspberry Pi & Arduino & ESP32愛好者コミュニティへようこそ!Raspberry Pi、Arduino、ESP32について、他の愛好者と一緒に深く学んでいきましょう。
参加する理由
専門家のサポート: コミュニティやチームから、購入後の問題や技術的な課題を解決できます。
学びと共有: ヒントやチュートリアルを交換し、スキルを向上させましょう。
独占プレビュー: 新製品の発表や先行情報をいち早く入手できます。
特別割引: 最新製品に対する独占割引をお楽しみいただけます。
祝祭プロモーションとギブアウェイ: ギブアウェイや季節限定のプロモーションに参加できます。
👉 一緒に探求し、創造しませんか?今すぐ [こちら] をクリックして参加しましょう!
2.2 レベルを表示する
このレッスンでは、Raspberry Pi Pico 2を使用してLEDバーグラフを制御する方法を学びます。LEDバーグラフは、10個のLEDが並んだもので、通常は音量や信号強度、その他の測定値などのレベルを表示するために使用されます。LEDを順番に点灯させて、レベル表示のエフェクトを作成します。

必要なもの
このプロジェクトには、以下のコンポーネントが必要です。
セットを購入するのが便利です。リンクはこちら:
名称 |
キット内容 |
リンク |
|---|---|---|
Newton Lab Kit |
450+ |
以下のリンクから個別に購入することもできます。
SN |
コンポーネント |
数量 |
リンク |
|---|---|---|---|
1 |
1 |
||
2 |
Micro USBケーブル |
1 |
|
3 |
1 |
||
4 |
数本 |
||
5 |
10個(220Ω) |
||
6 |
1 |
回路図

このプロジェクトでは、LEDバーグラフの10個のLEDそれぞれがRaspberry Pi Pico 2に接続されています。LEDのアノード(正端子)はGPIOピンのGP6からGP15に接続され、カソード(負端子)は220Ωの抵抗を通してGND(グラウンド)ピンに接続されます。
配線図
コードの記述
注釈
2.2_display_the_level.pyファイルをnewton-lab-kit/micropythonパスから開くか、以下のコードをThonnyにコピーして「実行」ボタンを押すか、 F5 キーを押して実行してください。Thonnyの右下にある「MicroPython (Raspberry Pi Pico).COMxx」インタープリタが選択されていることを確認してください。
import machine
import utime
# LEDに接続されているGPIOピンを定義
pins = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
leds = []
# 各ピンを出力として初期化し、ledsリストに格納
for pin_number in pins:
led = machine.Pin(pin_number, machine.Pin.OUT)
leds.append(led)
while True:
# LEDを1つずつ点灯させてレベルの上昇をシミュレート
for led in leds:
led.value(1) # LEDを点灯
utime.sleep(0.2)
# LEDを1つずつ消灯させてレベルの下降をシミュレート
for led in leds:
led.value(0) # LEDを消灯
utime.sleep(0.2)
プログラムを実行すると、LEDバーグラフのLEDが最初から最後まで順番に点灯し、レベルが上昇するエフェクトが作成されます。その後、LEDは1つずつ消灯し、レベルが下降するエフェクトがシミュレートされます。
コードの理解
このプロジェクトでは、MicroPythonでリストとループを使用して複数のLEDを制御しており、コードが効率的で読みやすくなっています。
コードの重要な部分を分解してみましょう:
モジュールのインポート:
import machine: Raspberry Pi Pico 2のハードウェア機能にアクセスするためのモジュール。import utime: 遅延などの時間関連の関数を使用するためのモジュール。
ピンの定義とLEDの初期化:
pinsリストにLEDに接続されているGPIOピン番号を格納し、空のリストledsを作成してLEDオブジェクトを格納します。# LEDに接続されているGPIOピンを定義 pins = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15] leds = []
forループを使って、各ピン番号に対して出力ピンを設定し、対応するPinオブジェクトをledsリストに追加します。for pin_number in pins: led = machine.Pin(pin_number, machine.Pin.OUT) leds.append(led)
レベル表示エフェクトの作成:
while True:ループは無限に実行されます。レベルの上昇:
forループを使ってledsリスト内の各ledに対して処理を行います。led.value(1)でLEDを点灯させます。utime.sleep(0.2)で次のLEDを点灯させる前に200msの遅延を加えます。
for led in leds: led.value(1) utime.sleep(0.2)
レベルの下降:
別の
forループを使って、各LEDを1つずつ消灯します。led.value(0)でLEDを消灯させます。
for led in leds: led.value(0) utime.sleep(0.2)
さらに実験してみましょう
コードを使って、以下のように実験をしてみましょう:
速度を変更する:
utime.sleep(0.2)の遅延時間を調整することで、LEDの点灯速度を速くしたり遅くしたりできます。
順番を逆にする:
reversed(leds)を使って、LEDの順番を逆にできます。for led in reversed(leds): led.value(1) utime.sleep(0.2)
ピンポンエフェクトを作成する:
LEDを左から右へ、そして右から左へ点灯させるエフェクトを作成します。
while True: for led in leds: led.value(1) utime.sleep(0.1) for led in reversed(leds): led.value(0) utime.sleep(0.1)
結論
各LEDを個別に制御することによって、Raspberry Pi Pico 2を使用してシンプルで効果的なレベル表示を作成しました。このプロジェクトは、Pythonのリストとループを活用し、複数の出力を効率的に管理する方法を示しています。
複数のGPIOピンを使いこなし、リストやループといったプログラミング構造を使うことは、アニメーション作成、複数のセンサー制御、インタラクティブなデバイス作成など、より複雑なプロジェクトに必要不可欠です。
参考文献
