そろそろ Raspberry Pi 2 にランタイムなどを入れるのも落ち着いてきたので、GPIO を使うアプリケーションを書いて試してみることにしました。
GPIO に接続するためのブレッドボードやジャンパピンなどを買い揃えるのが途中でめんどくさくなったので、Amazon で色々と揃ったスターターキットを買いました。
ハック ラズベリーパイ Raspberry Pi 電子工作入門キット。バリュー版
- メディア: エレクトロニクス
- この商品を含むブログを見る
秋葉原で買い揃えるよりも割高ですが、楽する方を取りました。
まずはテンプレ通りに LED を点灯させてみました。GPIO 25 と GND に LED を接続して、サクッと試すためにシェルからコマンドを叩いて実行します。root になっていないと怒られるので注意。
echo 25 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio25/direction echo 1 > /sys/class/gpio/gpio25/value
たったこれだけですが、これで LED が点灯状態になります。
LED を消灯させるには value に 0 を書き込めば OK です。使い終わったら unexport で閉じます。
echo 0 > /sys/class/gpio/gpio25/value echo 25 > /sys/class/gpio/unexport
とりあえず基本的な流れが分かったところで、今度は C# から同じように GPIO を叩いてみます。今回使ったライブラリは Raspberry# IO というものです。
他にも種類があるみたいですが、ライブラリの設計がイケてそうだったので選びました。
とりあえず今度はチカチカ点滅させてみたいので、README に書いてある通りにコードを書きました。GPIO 25 を使っているので対応する ProcessorPin.Pin25 を使います。
static void Main(string[] args) { var led1 = ProcessorPin.Pin25.Output(); var connection = new GpioConnection(led1); for (int i = 0; i < 20; i++) { connection.Toggle(led1); Thread.Sleep(500); } connection.Close(); }
これを Raspberry Pi 2 に SCP でコピーしてから Mono を使って実行してみると、何故か全く動きません。
少し原因を探ってみると、NuGet で公開されているバージョンは古いらしく、リポジトリから最新版をダウンロードして自前でコンパイルしたものを使うと動作しました。
これでやっとスタートラインに立てたという感じですね。もうちょっと遊べる時間が欲しい。