JavaでRaspberry PiのGPIOを制御する
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

JavaでRaspberry PiのGPIOを制御する

2013-08-27 22:38
  • 1
以前からチェックしていたページでちょっとした動きがあったのに気がついて(何のことかは別記事で)、それを見てProcessingでRaspberry Piの拡張I/Oが制御できればいろいろできるんじゃないかと考えついちゃったのでやってみたことをメモ。

Pi4Jをインストール


 まず、いろいろと検索してみたところ、wiring Piのページでも紹介されていたPi4Jというライブラリを使うとうまくいきそうだということが分かった。

 まずは案内に従ってJDKとPi4Jをインストール、そしてExampleをコンパイル。残念ながら、案内に書いてあるJDKとバージョンが違うせいか、

java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory
(確かこうだったと思う)

と、エラーが発生してうまいことコンパイルが通らない。試行錯誤した結果、こちらに書いてある方法でJDK1.8のインストールを行った結果コンパイルが通るようになった。

JavaでLチカ


 Exampleに含まれているプログラムControlGpioExampleの詳細説明こちら図のとおりに回路を組んでプログラムを実行するとOutputに書かれているようなLED出力が得られた。(あたりまえっちゃああたりまえだけど)

Processingの設定


 Raspberry PiにProcessingをインストールする方法はこちらで紹介されているが、Pi4JはJDKVer1.7以上を必要とされているのでJavaのリンク変更先は先ほど挙げたこちらの方法を用いる。また、Pi4Jも今のままではProcessingからは使用できないので頻出のこのページのとおりにライブラリ登録する。

ProcessingでLチカ


 このページの例に基づいて…では芸がないのでここはちょっとプログラムを書いてみる。先ほどのControlGpioExampleと同じ動作をProcessingで実現したものが下のソース。なお、LED・抵抗の接続は先ほどのまま。

/* test.pde */
import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.PinState;
import com.pi4j.io.gpio.RaspiPin;

GpioController gpio;
GpioPinDigitalOutput pin;

void setup() {

gpio = GpioFactory.getInstance();
pin = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_01, "MyLed", PinState.HIGH);

println("<--Pi4J--> GPIO Control Example ... started.");
println("<--Pi4J--> GPIO State should be: ON");

delay(5000);

pin.low();
println("<--Pi4J--> GPIO State should be: OFF");

delay(5000);

pin.toggle();
println("<--Pi4J--> GPIO State should be: ON");

delay(5000);

pin.toggle();
println("<--Pi4J--> GPIO State should be: OFF");

delay(5000);

println("<--Pi4J--> GPIO State should be: ON for only 1 second");
pin.pulse(1000, true);

gpio.shutdown();
}

void draw() {
exit();
}


Runボタンを使うとJavaのバージョンが新しすぎると怒られるので、Export Applicationでコンパイルを行う。元ファイルをtest.pdeとすると、(home)/sketchbook/test以下に各種バイナリができるので

cd ~/sketchbook/test/application.linux64
sudo ./test

として実行。先ほどのPi4JのExampleと同等の動作を確認した。

以上で前置きは終了。
つづく




広告
コメントを書く
コメントをするには、
ログインして下さい。