【 第27回 】Raspberry PiでもLED不要のLチカ!

0
1481

“LED不要のLチカ!”は、以前の記事「Arduino IDEのインストールからLED点滅まで」でも紹介しましたが、Raspberry Piでもできることが分かったので、今回紹介します。

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

Raspberry Pi 3 Model B(+)では、基板上のPWR(赤)とACT(緑)のLEDの内、ACT(led0)の入力を”mmc0(ディスクアクセス)”からGPIOに切替えられることが分かりました。

LXTerminalを起動し、スーパーユーザーの権限に切り替えておきます。

sudo su

コマンド”echo”で、「ACT(led0)」の設定ファイルに”gpio”を追記します。先ず”echo gpio > “まで入力しますが「Enter」キーはまだ押しません。

echo gpio >

ファイルマネージャを起動し、画面上の「↑」ボタンを2回クリックしてルートフォルダに移動します。

右ペインの「sys」フォルダをダブルクリックします。

右ペインの「class」フォルダをダブルクリックします。

右ペインの「leds」フォルダをダブルクリックします。

右ペインの「led0」フォルダのショートカットをダブルクリックします。

右ペインのファイル”trigger”を右クリックして「パスをコピーする」を選択します。

LXTerminal画面に戻り、行末の半角スペースの後を右クリックして「貼り付け」を選択し、「Enter」キーを押します。

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

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

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

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

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

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

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

exit

Pythonで基板上のLEDを制御する

Python3を起動します。

sudo python3

GPIO制御ライブラリ”WiringPi2″をインポートします。

import wiringpi2

ここでエラーが出る場合は、【 第26回 】で実行した”WiringPi2-Python”をインストールしてください。

次のコマンドで、GPIOを初期化します。

wiringpi2.wiringPiSetupGpio()

“0”が返ってきたら、初期化の完了です。

GPIO25を出力に設定します。

wiringpi2.pinMode(25, wiringpi2.GPIO.OUTPUT)

GPIO25に”1 (3.3v)”を出力します。

wiringpi2.digitalWrite(25, 1)

基板上のLED(緑)が点灯しました。

GPIO25に”0 (0v)”を出力します。

wiringpi2.digitalWrite(25, 0)

基板上のLED(緑)が消えました。

GPIOを初期化して元に戻しておきます。

wiringpi2.wiringPiSetupGpio()

“exit()”でPython3を終了し、ホームディレクトリに戻ります。

exit()

Visual Studio Codeで基板上のLED(緑)をLチカする

【 インストール編 】でインストールしたVisual Studio Codeを起動し、画面左端のアクティビティーバーの「エクスプローラー」アイコンをクリックします。

サイドバーの”PYTHON”右のアイコン「新しいファイル」をクリックします。

フォルダ”.VSCODE”の下に同一階層で入力欄が現れるので、プログラム名”blink.py”を入力して「Enter」キーを押します。

エディター画面が現れるので、プログラムを書き込みます。

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

エディター画面に入力していると、画面上に「エラー」としてフォーマッター”autopep8″のインストールを促されますが、「閉じる」ボタンをクリックして閉じます。

import wiringpi2
import time

wiringpi2.wiringPiSetupGpio()
wiringpi2.pinMode(25, wiringpi2.GPIO.OUTPUT)

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

wiringpi2.wiringPiSetupGpio()

早速、アクティビティーバーの「デバッグ」アイコンをクリックします。

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

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

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

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

メニューバーから「表示」→「問題」を選択します。

なにやら、ご指摘が5項目ほどあるようですがエラーではないようです。

エディター画面の何もないところで右クリック→「Run Python File in Terminal」をクリックします。

ターミナル画面が開いて実行されますが、返ってきたのはVSCoad先生からの「”sudo”を忘れたんかいっ!」というお怒りのお言葉でした。

お怒りもごもっともなので、「↑」キーを押して同じコマンドをコピーし、カーソルを先頭に移動して”sudo(半角スペース)”を入力して「Enter」キーを押します。

今度は無事に、LED(緑)が点滅を10回繰り返したのでメニューバーから「ファイル」→「保存」をクリックします。

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

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

LXTerminal画面に戻り、再びスーパーユーザー権限に切り替えます。

sudo su

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

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

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

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

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