LED を点滅させる

汎用 I/O (GPIO) ピンは、個別に制御できます。 これは、LED、リレー、その他のステートフル デバイスを制御する場合に便利です。 このトピックでは、.NET とお使いの Raspberry Pi の GPIO ピンを使用して、LED に電力を供給し、繰り返し点滅させます。

前提条件

  • ARM ベース (ARMv7 以降) シングルボード コンピューター (SBC)
  • 5 mm LED
  • 330 Ω の抵抗
  • ブレッドボード
  • ジャンパー ワイヤ
  • Raspberry Pi GPIO ブレークアウト基板 (省略可能、推奨)
  • .NET SDK 7 以降

注意

このチュートリアルは、ターゲット デバイスを Raspberry Pi と想定して記述されています。 ただし、このチュートリアルは、Orange Pi や ODROID など、.NET をサポートしているあらゆる Linux ベースの SBC に利用できます。

デバイスで SSH が有効になっていることを確認します。 Raspberry Pi については、Raspberry Pi のドキュメントの「SSH サーバーの設定」を参照してください

ハードウェアを準備する

ハードウェア コンポーネントを使用して、次の図に示すような回路を構築します。

LED と抵抗がある回路を示す Fritzing 図

上の図では、次の接続が示されています。

  • GPIO 18 から LED の陽極 (長い正のリード) へ
  • LED の陰極 (短い負のリード) から 330 Ω の抵抗 (どちらかの端) へ
  • 330 Ω の抵抗 (他の端) からグラウンドへ

必要に応じて、次のピン配列図を参照してください。

Raspberry Pi GPIO ヘッダーのピン配列を示す図。画像提供: Raspberry Pi Foundation。
画像提供: Raspberry Pi Foundation

ヒント

GPIO ヘッダーへの接続を効率化するには、ブレッドボードと組み合わせた GPIO ブレークアウト ボードを使用することをお勧めします。

アプリを作成する

お好みの開発環境で、次の手順を実行します。

  1. .NET CLI または Visual Studio を使用して、新しい .NET コンソール アプリを作成します。 「BlinkTutorial」という名前を指定します。

    dotnet new console -o BlinkTutorial
    cd BlinkTutorial
    
  2. System.Device.Gpio パッケージをプロジェクトに追加します。 プロジェクト ディレクトリまたは Visual Studio から .NET CLI を使用します。

    dotnet add package System.Device.Gpio --version 2.2.0-*
    
  3. Program.cs の内容を次のコードで置き換えます。

    using System;
    using System.Device.Gpio;
    using System.Threading;
    
    Console.WriteLine("Blinking LED. Press Ctrl+C to end.");
    int pin = 18;
    using var controller = new GpioController();
    controller.OpenPin(pin, PinMode.Output);
    bool ledOn = true;
    while (true)
    {
        controller.Write(pin, ((ledOn) ? PinValue.High : PinValue.Low));
        Thread.Sleep(1000);
        ledOn = !ledOn;
    }
    

    上のコードでは以下の操作が行われます。

    • using 宣言によって、GpioController のインスタンスが作成されます。 この using 宣言により、オブジェクトが破棄され、ハードウェア リソースが適切に解放されます。
    • 出力用に GPIO ピン 18 が開かれています
    • while ループが無期限に実行されます。 それぞれの反復処理で、以下が実行されます。
      1. GPIO ピン 18 に値を書き込みます。 ledOn が true の場合は、PinValue.High (オン) を書き込みます。 それ以外の場合は、PinValue.Low を書き込みます。
      2. 1000 ミリ秒スリープします。
      3. ledOn の値を切り替えます。
  4. アプリをビルドします。 .NET CLI を使用している場合は、dotnet build を実行します。 Visual Studio でビルドするには、Ctrl+Shift+B キーを押します。

  5. アプリを自己完結型アプリとして SBC にデプロイします。 手順については、「Raspberry Pi への .NET アプリのデプロイ」を参照してください。 chmod +x を使用して実行可能ファイルの 実行 アクセス許可を指定してください。

  6. 配置ディレクトリに切り替え、実行可能ファイルを実行することで、Raspberry Pi でアプリを実行します。

    ./BlinkTutorial
    

    LED は毎秒点滅します。

  7. Ctrl+C キーを押してプログラムを終了します。

おめでとうございます。 GPIO を使って LED を点滅させることができました。

ソース コードを入手する

このチュートリアルのソースは、GitHub から入手できます

次の手順