“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”でスーパーユーザー権限から外れます。