その4-2.シャットダウンボタンをpigpioで制御する
前置き
古戦場お疲れさまでした。
というわけで、Raspberry Piいじりを再開していこうと思います。
pigpioを使ってみる
今回は今後のgpio制御のベースとなるpigpioライブラリを使った形へソースを書き換えていきます。
調べた限り、Raspberry PiのGPIO制御を行う上で最も優秀なライブラリがpigpioらしく、またC言語向けのIFも準備されているので、LuaJITのffiを用いればC言語経由での制御もできそうな様子なので、今後はこのpigpioライブラリを用いて開発を行っていきます。
pigpioをインストールする
まずはpigpioのインストールから。
apt update を実行した後に apt install pigpio を実行します。管理者権限がないと失敗する場合があるので sudo もつけておきましょう。
なお標準でもpigpioライブラリは入ってるとか? その辺りちゃんと確認せずインストールしてしまいましたが、気にせず進めます。
pigpioを使ったソースへ改修する
インストールが完了したので、早速先日のソースコードをpigpioを使ったソースへ改修します。
#!/usr/bin/env python import pigpio import time import os pi = pigpio.pi() pi.set_mode(14, pigpio.INPUT) pi.set_pull_up_down(14, pigpio.PUD_DOWN) try: pushtime = 0 while True: if pi.read(14) == 1: pushtime += 1 print(pushtime) if pushtime >= 50: os.system("sudo shutdown -h now") else: pushtime = 0 time.sleep(0.1) except KeyboardInterrupt: pass pi.stop()
こんなカンジ。
動かしてみる
早速pigpio版ソースを動かしてみますが、その前に sudo pigpiod を実行しておきます。pigpioはGPIOの状態を監視するデーモンを常時実行させてうんたらかんたら詳しい事はよくわかりませんが、デーモン実行のコマンドはRaspberry Pi起動毎に実行しておく必要があるとのこと。
早速動作確認…してみましたがあれ? pigpioライブラリなんてそんなのないって怒られます。ナゼ…
OSはLiteを入れたせいか、何か他にも入れなければライブラリがあるようでした。以下を参考に追加インストール。
$sudo apt-get install pigpio python-pigpio python3-pigpio $sudo pigpiod
そして再び実行。
無事に動きました。
さて、少しトラブルがありましたが今回はpigpioを使った操作まで完了しましたので、次回はこれをLuaJITソースへと変更していきます。