2.1 こんにちは、LED!

"Hello, world!"を出力することがプログラミング学習の第一歩であるように、LEDをプログラムで制御することは、物理的なプログラミングを学ぶ際の伝統的な導入となっています。

必要な部品

このプロジェクトでは、以下の部品が必要です。

キット全体を購入することは非常に便利です。リンクは以下になります:

名前

このキットのアイテム

リンク

Kepler Kit

450以上

Kepler Kit

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

SN

コンポーネント

数量

リンク

1

Raspberry Pi Pico W

1

BUY

2

Micro USBケーブル

1

3

ブレッドボード

1

BUY

4

ジャンパーワイヤー

数本

BUY

5

抵抗器

1(220Ω)

BUY

6

LED

1

BUY

回路図

sch_led

この回路は単純な原理で動作し、図に示されているように電流の方向が示されています。GP15が高レベル(3.3v)を出力すると、220ohmの電流制限抵抗を経てLEDが点灯します。GP15が低レベル(0v)を出力すると、LEDは消灯します。

配線

wiring_led

回路を組む際は、電流の方向に従いましょう!

  1. Pico WボードのGP15ピンでLEDが供給され、ここから回路が始まります。

  2. LEDを保護するために、電流は220オームの抵抗器を通過しなければなりません。抵抗器の一方の端子はPico W GP15ピンと同じ行(私の回路では行20)に挿入し、他方の端子はブレッドボードの空いている行(行24)に挿入してください。

    注釈

    220オームの抵抗器のカラーリングは赤、赤、黒、黒、茶です。

  3. LEDを取り上げると、一方のリードが他方よりも長いことがわかります。長いリードを抵抗器と同じ行に、短いリードをブレッドボードの中央の隙間を挟んで同じ行に接続してください。

    注釈

    長いリードは陽極であり、回路の正側を表します。短いリードは陰極であり、回路の負側を表します。

    陽極はGPIOピンに抵抗器を介して接続する必要があり、陰極はGNDピンに接続する必要があります。

  4. オス-オス(M2M)ジャンパーワイヤーを使用して、LEDの短いピンをブレッドボードの負電源バスに接続します。

  5. ジャンパーを使用して、Pico WのGNDピンを負の電源バスに接続します。

コード

注釈

  • kepler-kit-main/micropython のパスの下で 2.1_hello_led.py ファイルを開くか、このコードをThonnyにコピーしてから、"Run Current Script"をクリックするか、単にF5を押して実行してください。

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

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

import machine
import utime

led = machine.Pin(15, machine.Pin.OUT)
while True:
    led.value(1)
    utime.sleep(2)
    led.value(0)
    utime.sleep(2)

コードが実行された後、LEDが点滅するのが見えるでしょう。

動作の仕組みは?

GPIOを使用するには、 machine ライブラリが必要です。

import machine

このライブラリには、MicroPythonとPico Wとの間で通信するために必要なすべての命令が含まれています。 このコード行がない場合、GPIOを制御することはできません。

次に注目するべき行は以下のとおりです。

led = machine.Pin(15, machine.Pin.OUT)

ここでオブジェクト led が定義されています。技術的には、x、y、banana、Michael_Jackson、または任意の文字など、任意の名前にすることができます。 プログラムを読みやすくするためには、目的を説明する名前を使用するのが最善です。

この行の第二部分(等号の後ろの部分)では、 machine ライブラリ内のPin関数を呼び出しています。これはPicoのGPIOピンに何をすべきかを指示するために使用されます。 Pin 関数には2つのパラメーターがあります:最初の1つ(15)は設定するピンを表し、 第二のパラメーター(machine.Pin.OUT)は、ピンが入力ではなく出力であるべきことを指定します。

上記のコードではピンが「設定」されていますが、LEDを点灯させるわけではありません。これを行うためには、ピンを「使用」する必要もあります。

led.value(1)

GP15ピンは以前に設定され、 led と名付けられました。この文の機能は、 led の値を1に設定してLEDを点灯させることです。

全体として、GPIOを使用するには、以下のステップが必要です:

  • machineライブラリをインポートする : これは必須であり、一度だけ実行されます。

  • GPIOを設定する : 使用する前に、各ピンを設定する必要があります。

  • 使用する : ピンに値を割り当てることで、ピンの動作状態を変更します。

上記のステップに従って例を書くと、次のようなコードになります:

import machine
led = machine.Pin(15, machine.Pin.OUT)
led.value(1)

これを実行すると、LEDを点灯させることができます。

次に、"消灯"文を追加してみましょう:

import machine
led = machine.Pin(15, machine.Pin.OUT)
led.value(1)
led.value(0)

このコードに基づいて、このプログラムは最初にLEDを点灯させ、次に消灯させます。 しかし、実際に使用すると、このようにはなりません。 LEDから光が出ていないのは、2行の間の実行速度が非常に速いためであり、人間の目が反応するよりもはるかに速いからです。 LEDが点灯すると、私たちは即座に光を感じません。これはプログラムを遅くすることで修正できます。

プログラムの第二行には、以下の文が含まれるべきです:

import utime

machine と同様に、ここでは utime ライブラリがインポートされており、時間に関連するすべてのことを処理します。 必要な遅延はこれに含まれています。 led.value(1)led.value(0) の間に遅延文を追加し、それらを2秒間隔で分けます。

utime.sleep(2)

これでコードは次のようになります。 実行すると、LEDが最初に点灯し、次に消灯するのがわかります:

import machine
import utime
led = machine.Pin(15, machine.Pin.OUT)
led.value(1)
utime.sleep(2)
led.value(0)

最後に、LEDを点滅させるようにしましょう。 ループを作成し、プログラムを書き直すと、この章の始めに見たものになります。

import machine
import utime

led = machine.Pin(15, machine.Pin.OUT)
while True:
    led.value(1)
    utime.sleep(2)
    led.value(0)
    utime.sleep(2)

さらに詳しく

通常、ライブラリにはAPI(Application Programming Interface)ファイルが関連付けられています。 このファイルには、このライブラリを使用するために必要なすべての情報が含まれています。これには、関数、クラス、戻り値のタイプ、パラメータのタイプなどの詳細な説明もあります。

この記事では、MicroPythonの machineutime ライブラリを使用しましたが、それらを使用するさまざまな方法は以下で見つけることができます。

LEDを点滅させるこの例を理解するためには、APIファイルを読むことをお勧めします!

注釈

  • kepler-kit-main/micropython のパスの下にある 2.1_hello_led_2.py ファイルを開くか、このコードをThonnyにコピーしてから、「Run Current Script」をクリックするか、単にF5を押して実行してください。

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

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

import machine
import utime

led = machine.Pin(15, machine.Pin.OUT)
while True:
    led.toggle()
    utime.sleep(1)