はつねの日記

Kinect, Windows 10 UWP, Windows Azure, IoT, 電子工作

.NET nanoFrameworkでM5StickC PlusのLEDを光らしてみる

前回

hatsune.hatenablog.jp

前回は、.NET nanoFrameworkでのブザーを鳴らしてみました。
今回はM5StickC Plus本体に内蔵されているLEDを光らしてみたいと思います。

更新情報

下記の文中で「M5StickCPlus.Led」を実行するとNullエラーが発生するとの記載をしていますが、2022/08/03で公開された「nanoFramework.M5StickCPlus」ライブラリv1.1.26で解消しています。
github.com

事前準備

Install the nanoFramework firmware

M5StickC PlusにはnanoFrameworkは標準インストールされていないので、nanoFrameworkをインストールします。

接続ポート番号の確認

USBでM5StickC PlusをPCに接続したら、USB Serial Portのポート番号を確認します。今回の環境では「COM6」が該当しました。

Flasherアプリケーションのインストール

OSの[スタート]メニューから「Developer PowerShell for VS2022」を起動します。

dotnet tool install --global nanoff

nanoFrameworkfファームウェアをインストール

M5StickC Plusをターゲットにして「COM6」経由でnanoFrameworkをアップロードします。

nanoff --target M5StickCPlus --update --serialport COM6

Visual Studioの準備

Visual Studioを機能拡張する

Visual Studioには.NET nanoFramework Extensionをインストールして機能拡張しておきます。
この機能拡張によりnanoFrameworkアプリのテンプレートが追加されます。
このテンプレートで作成したプロジェクトには、NuGetから自動的に「nanoFramework.CoreLibrary」ライブラリが追加されています。

「nanoFramework.M5StickCPlus」ライブラリを追加する

M5StickC Plusの画面などハードウェアにアクセスするために、M5StickC Plus用のライブラリを追加します。

ここまでが、M5StickC Plusを使うアプリ開発を行う上での共通の事前準備となります。

LEDを光らせる

M5StickC PlusでLEDを光らせるのは、本来であれば「M5StickCPlus.Led」の各種メソッドを使用すればいいのですが、残念ながら、2022/07/31現在の「nanoFramework.M5StickCPlus」ライブラリの「M5StickCPlus.Led」は正常に動作していないようで、M5StickCPlus.Ledがnullとなります。
GitHubをみると次のように定義されているので、これが正常に動作するようになれば、「M5StickCPlus.Led」も使えるようになるでしょう。
gist.github.com
それまでは、このLedの定義も自分のソースコードに取り込んでやりすごすのがいいでしょう。

ボタンをクリックしたらLEDの発光/消灯を切り替える

LEDの発光状態を逆転させるには、Toggleメソッドを使います
gist.github.com
SetUpの中で、「Led.Write(System.Device.Gpio.PinValue.High)」を実行しているのは、High値のときにLEDは消灯するからです。
www.youtube.com

ボタンをクリックしている間だけLEDを光らせる

では、ボタンをクリックしている間だけブザーを鳴らすようにしたいときはどうしたらよいでしょうか。
M5StickCPlus.ButtonM5.Pressイベントの処理をコメントアウトして、代わりにButtonDownイベントとButtonUpイベントの処理を追加します。
gist.github.com
www.youtube.com

次回

次回は電源周りについて色々調べてみたいと思います。