Raspberry Pi 2のGPIOをC#(mono)でパルス取得する。

前回では、ラズパイにGoogleのgoをインストールしました。
今回は、Pythonと比較するためにmono(c#)でGPIOから矩形波を取得してみます。


Pythonで取得した時と同じように、Arduinoから矩形波を出力しラズパイのGPIOで受けます。

Pin.No 名称1 用途 利用 IN/OUT Arduino Pin 周波数
16 GPIO23 GPIO23 パルス1 IN 13 5Hz
18 GPIO24 GPIO24 パルス2 IN 12 50Hz
20 GND GND GND GND
22 GPIO25 GPIO25 パルス3 IN 11 500Hz

IDEは、前にインストールした VisulaStudio 2015 community を利用します。
GPIOの取得用ライブラリーは、NuGetから[Raspberry.IO.GeneralPurpose]をインストールして利用します。
125
プロジェクト作成後、「プロジェクト」-「NuGetパッケージの管理」で、検索に[Raspberry]と入力します。
インストール後の参照設定は以下のようになります。
126
Pythonで作成した時と同じような感じでプログラムを作成してみます。Wait用の[Thread.sleep]入れずに、CPUをぶん回します。

正確な時間計測がほしいのですが、[DateTime]を利用してみます。
ビルドは、VS上でそのままコンパイルします。monoは、PC上でコンパイルが可能です。
コンパイルしたプログラムをフォルダーごと、そのままラズパイにコピーします。

127

不要なファイルはありますが、ま~良しとして、 exeファイルを起動します。

128

矩形波の、HIGH/LOWの両方を取得していますので、カウント値は2倍になっています。
パルス取得ループ回数、5Hz取得、50Hz取得、500Hz取得です。

当然、シングルCPUが100%の負荷でぶん回っています。

monoは、PC上でビルドできるのが楽ですね。


 

利用したライブラリーの[Raspberry# System]のマニュアルを見て、割り込み処理が可能か調べてみます。

ホームページのRaspberry.IO.GeneralPurpose.GpioConnectionSettingsを見てみると、[DefaultPollInterval]の項目があって、標準で50msと書かれています。Raspberry.IO.GeneralPurpose.GpioConnectionのマニュアルでは、[PinStatusChanged]の項目があるのですが、githubでダウンロードできるサンプルプログラムを見てみると、まずポーリングのタイミング設定してからイベントで、ステータスチェンジをつかんでいるようで、最小の間隔が、1msでは少し足りないかなと思う次第です。ま、高精度タイマーを利用して自分で作れば良いのですが、ラズパイのmonoでは、なかなか思うように動いてくれません。

次回は、速度の比較をしてみます。


第 1回 Raspberry Pi 2 の初期設定をしてみる-1
第 2回 Raspberry Pi 2 の初期設定をしてみる-2
第 3回 Raspberry Pi 2 の初期設定をしてみる-3
第 4回 Raspberry Pi 2 にWifiの設定をする
第 5回 Raspberry Pi 2 不要サービス停止
第 6回 Raspberry Pi 2 RAMディスクの設定
第 7回 Raspberry Pi 2 コンソールの設定
第 8回 Raspberry Pi 2 にウォッチドッグタイマーを導入する
第 9回 Raspberry Pi 2 でPythonの設定をする。
第10回 Raspberry Pi 2 でSambaの設定をする。
第11回 Windows10でPythonの開発環境を構築する。
第12回 Raspberry Pi 2のPython3でGPIOのパルスを取得する。
第13回 Raspberry Pi 2のPythonでGPIOを調べてみる。
第14回 Raspberry Pi 2のPythonでGPIOの割り込み処理をする。
第15回 Raspberry Pi 2のPython3でI2Cを設定する。
第16回 Raspberry Pi 2のPython3で加速度センサーを動かす。
第17回 Raspberry Pi 2にmonoをインストールしてC#を利用する。
第18回 Raspberry Pi 2にgoをインストールしてみる。
第19回 Raspberry Pi 2のGPIOをC#(mono)でパルス取得する。
第20回 Raspberry Pi 2のGPIO読み込みを、mono(C#)とPythonで比較する。

コメントを残す

メールアドレスが公開されることはありません。