前回までの設定を無効化

コンパイルは、(スイッチを扱うところで出てきた)wiringPiを使っているのでライブラリ指定が必要だ。Windows PC(Tera Term)からの入力は以下になる。

gcc -o lps_get2 lps_get2.c -lwiringPi

早速テスト実行と行きたいところだが、前回のプログラム(lps_get)がcronから呼び出されて1分ごとに動いている。今回のプログラム「lps_get2」も、ほかのプログラムがLPS331(気圧センサー)を扱わないことを前提としているため、lps_get2が動作している間にLPS331を別のプログラムが扱うと問題が出る(lps_getは、1回計測して終了前にLPS331を止めてしまうので、動作がおかしくなる)。

そこでまず、crontabを編集してlps_getプログラムの実行を止めておく。また、Raspberry Piを屋外に持ち出す場合は、ネットワーク接続もなくなるので、本連載第2回のプログラム(シェルスクリプト)もエラーになる。よって、これまでcrontabで指定してきたプログラムをコメントアウトする。

今回のプログラムを動かすためには、第2回と第3回で扱ったプログラムの自動実行を止めておかないといけない。crontabで指定した自動実行は、コメントアウトする(行頭に#を付ける)

コンパイルがエラーなしに終了したら、Windows PCのTera Termで「sudo ./lps_get2」と入力して、テスト実行してみよう。スイッチを押しながら実行すると、単にプログラムを終了するようになっている。押さずに実行すると記録を開始し、実行中にスイッチを長押しするとプログラムを終了、Raspberry Piをシャットダウンするようになっている。

今回のプログラム「lps_get2」も、「sudo」付けて実行しないといけない。2回目はスイッチを押しながら実行したので、即終了している。3回目は記録を開始しており、スイッチを長押しすると終了、そしてシャットダウンのメッセージが出ていることが分かる

Raspberry Piの電源を入れたときに自動実行させるには、これまた乱暴だが「/etc/rc.local」ファイルを編集して、コマンドを入れた。出先でRaspberry PiをUSB電源につなげば自動計測を開始し、スイッチ長押しでシャットダウンだ。家に戻ったら、スイッチを押しながら電源を入れることで、プログラムは即終了する。さらに「/etc/rc.local」ファイルを再び修正して、コマンドをコメントアウトして実行しないようにしよう。コマンドの後ろに「&」を付けているのはおまじないで、これによってプログラムがバックグラウンド動作になる