【 第30回 】pigpioでもLED不要のLチカ!

0
1609

【 第27回 】では、”WiringPi2″を使って「LED不要のLチカ!」のプログラムを実行しましたが、今回は”pigpio ( ぴぐぴお ? )”を使って同じことをやってみたいと思います。”pigpio”もいくつかあるGPIO制御ライブラリのひとつですが、ライブラリによって実行手順やプログラムの書式に違いがあるところを注目してください。

"pigpio"のインストール状況を確認する

タスクバー左端のメニューアイコンから「設定」→「Add  /  Remove  Software」をクリックし、起動します。画面左上の検索枠に”pigpio”と入力して「Enter」キーを押すと、しばらくして右ペインに検索結果が表示されます。

検索結果を見ると、C言語で書かれた”pigpio”本体の他にPython 2やPython 3で”pigpio”を実行する為のデーモンまで、既にプリインストールされていることが分かります。

GPIO25の出力で基板上のLED(緑)を制御できるように設定する

あらかじめ、基板上のLED(緑)の入力を”mmc0(ディスクアクセス)”からGPIO25の出力に切替えておきます。

Visual Studio Codeを起動し、【 第28回 】で作ったプログラム”blink10.py”を開きます。

メニューバーから「表示」→「統合ターミナル」をクリックします。

開いたターミナル画面で、一旦、ホームディレクトリに移動します。

cd

rootユーザーに切り替えておきます。

sudo su

「↑」キーを何回か押して、このコマンドを表示し、「led0(緑)」の設定を”mmc0(ディスクアクセス)”から”gpio”に切り替えます。。

echo gpio > /sys/class/leds/led0/trigger

基板上のLED(緑)が、ディスクアクセスがあっても点灯しなくなりました。

「↑」キーを押すと、直前のコマンドが入力されるので、”gpio”を”25″に、”trigger”を”gpio”に上書きして、「Enter」キーを押します。

echo 25 > /sys/class/leds/led0/gpio

これでGPIO25の出力が「led0(緑)」に接続されます。

“exit”でスーパーユーザー権限から外れます。

exit

"pigpio"を使ってLチカのプログラムを作る

メニューバーから「ファイル」→「名前を付けて保存」をクリックします。

【 ワークスペースの設定 】で設定したワークスペース”/home/pi/Python”が開くので、「名前」の入力欄に新しいプログラム名を入力して「保存」ボタンをクリックします。

エディター画面のプログラムの1行目”wiringpi”を削除して”pi”と入力すると、入力候補がリストアップされるので、”pigpio”を選択します。

import pigpio

同様に、プログラムの書式の異なるところだけをGPIO制御ライブラリ”pigpio”に合わせて上書きします。

プログラム自体は、while文によりLED(緑)が1秒ずつ点滅するのを10回繰り返し、初期化して終わるという【 第27回 】と同じものです。

import pigpio
import time

pig = pigpio.pi()
pig.set_mode(25, pigpio.OUTPUT)

counter = 0
while (counter < 10):
    pig.write(25, 1)
    time.sleep(1)
    pig.write(25, 0)
    time.sleep(1)
    counter = counter + 1

pig.set_mode(25, pigpio.INPUT)

プログラムができたら、アクティビティーバーの「デバッグ」アイコンをクリックします。

サイドバーに現れたデバッグ右の「▶」ボタンをクリックします。

1行目でデバッグが中断するので、画面上部デバッグ用ツールバーの「▶」ボタンをクリックして続行します。

デバッグが終わったら、統合ターミナル画面のタブ「問題」をクリックします。

いつものように、ご指摘が5項目ほどあるようですがエラーではないようなので、エディター画面の何もないところで右クリック→「Run Python File in Terminal」をクリックして実行します。

エラーはないのに「ローカルホストに接続できません」とのお達し。その下には「pigpio daemonをスタートさせたんかい?」とありました。

どうやら”pigpio”をインポートするには、事前にデーモン“pigpiod”を起動しておく必要があるみたいです。ご指導通り、”pigpiod”を起動しておきます。

sudo pigpiod

「↑」キーを押すと、直前のコマンドが入力されるので、もう一度、プログラムを実行します。

今度は無事に、LED(緑)が点滅を10回繰り返しました。

メニューバーから「ファイル」→「保存」をクリックして上書き保存しておきます。

led0(緑)の設定を既定の"mmc0(ディスクアクセス)"に戻しておく

ホームディレクトリに戻ります。

cd

GPIOの設定状況を確認します。

gpio readall

GPIO25の設定は、お行儀よく”IN”に戻っていました。

このまま、ACT(緑)がディスクアクセスで点灯しないとRaspberry Piの電源を落とすタイミングが分からなくて困るので、ACT(led0)の設定を元に戻しておきます。

再び、rootユーザーに切り替えます。

sudo su

「」キーを何回か押すと以前入力したコマンドが表示されるので、”gpio”を”mmc0″に上書きして「Enter」キーを押します。

これで「ACT(led0)」の設定が”gpio””からmmc0(ディスクアクセス)”に戻ります。

echo mmc0 > /sys/class/leds/led0/trigger

基板上のLED(緑)が、再びディスクアクセスで点灯するようになりました。

“exit”でスーパーユーザー権限から外れます。

exit