その4-2.シャットダウンボタンをpigpioで制御する

前置き

古戦場お疲れさまでした。

f:id:nekhbet:20200127230051p:plain

というわけで、Raspberry Piいじりを再開していこうと思います。

pigpioを使ってみる

今回は今後のgpio制御のベースとなるpigpioライブラリを使った形へソースを書き換えていきます。
調べた限り、Raspberry PiのGPIO制御を行う上で最も優秀なライブラリがpigpioらしく、またC言語向けのIFも準備されているので、LuaJITのffiを用いればC言語経由での制御もできそうな様子なので、今後はこのpigpioライブラリを用いて開発を行っていきます。

pigpioをインストールする

まずはpigpioのインストールから。
apt update を実行した後に apt install pigpio を実行します。管理者権限がないと失敗する場合があるので sudo もつけておきましょう。

f:id:nekhbet:20200128001856p:plain

なお標準でも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を入れたせいか、何か他にも入れなければライブラリがあるようでした。以下を参考に追加インストール。

はじめてのラズパイ - Qiita

$sudo apt-get install pigpio python-pigpio python3-pigpio
$sudo pigpiod

そして再び実行。

f:id:nekhbet:20200128012008p:plain

無事に動きました。

さて、少しトラブルがありましたが今回はpigpioを使った操作まで完了しましたので、次回はこれをLuaJITソースへと変更していきます。