シェルスクリプトでLEDに動きを付けてみよう
今まで1行1行手で入力していたコマンドをまとめて実行。
そんな便利なのがシェルスクリプト。
往年のDOSプロンプトを使ってた方にはBATファイル実行と言うと分かり易いですね。
ファイルにコマンドを書込み実行すると、上から順にコマンド実行されます。
拡張子は「.sh」を使用します。
テキストエディターでRasPi上で作ってもよし、
パソコン上でファイルを作って転送してもよし、お好みの方法で!
コマンドは手で入力した時と同じ動作をします。
Lチカの場合はスーパーユーザーでのコマンド実行になりますので、、
予めスーパーユーザー切り替えるか、都度ファイル名の前に sudo を付加する事になります。
■スーパーユーザー切り替え:
$ sudo su
以降プロンプトが # に変わります。
実行コマンド
# bash gpio22onoff.sh
■都度入力:
実行コマンド
$ sudo bash gpio22onoff.sh
点滅させてみよう
先ずは、LEDを1個だけ点滅させてみましょう。
適当なフォルダを作って、そこで作業します。
きばん本舗のスタッフは「lchika」フォルダで作業しました。
root@raspberrypi:/home/pi/lchika#
さて、ファイルを3つ作って動かしましょう。
■設定 gpio22open.sh
<=========================#!/bin/sh
echo 22 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio22/direction
=========================>
■GPIO22 点滅 gpio22onoff.sh
<=========================#!/bin/sh
sleep 0.5
echo “1” > /sys/class/gpio/gpio22/value
sleep 0.5
echo “0” > /sys/class/gpio/gpio22/value
sleep 0.5
echo “1” > /sys/class/gpio/gpio22/value
sleep 0.5
echo “0” > /sys/class/gpio/gpio22/value
sleep 0.5
echo “1” > /sys/class/gpio/gpio22/value
sleep 0.5
echo “0” > /sys/class/gpio/gpio22/value
sleep 0.5
echo “1” > /sys/class/gpio/gpio22/value
sleep 0.5
echo “0” > /sys/class/gpio/gpio22/value
sleep 0.5
echo “1” > /sys/class/gpio/gpio22/value
sleep 0.5
echo “0” > /sys/class/gpio/gpio22/value
=========================>
■開放 gpio22close.sh
<=========================#!/bin/sh
echo 22 > /sys/class/gpio/unexport
=========================>
■ファイルの準備が出来たら実行。
root@raspberrypi:/home/pi/lchika# bash gpio22open.sh
root@raspberrypi:/home/pi/lchika# bash gpio22onoff.sh
「GPIO 22」のLEDが点滅
root@raspberrypi:/home/pi/lchika# bash gpio22close.sh
使ったら片付ける癖をつけましょう。
往復点灯
LEDが右へ左へ動きます。
ファイルの準備。
■設定 gpio_open.sh
<=========================#!/bin/sh
echo 22 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio22/direction
echo 23 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio23/direction
echo 24 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio24/direction
echo 25 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio25/direction
=========================>
■往復点灯 gpio_rl.sh
<=========================#!/bin/sh
sleep 0.1
echo “1” > /sys/class/gpio/gpio22/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio22/value
echo “1” > /sys/class/gpio/gpio23/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio23/value
echo “1” > /sys/class/gpio/gpio24/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio24/value
echo “1” > /sys/class/gpio/gpio25/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio25/value
sleep 0.1
echo “1” > /sys/class/gpio/gpio25/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio25/value
echo “1” > /sys/class/gpio/gpio24/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio24/value
echo “1” > /sys/class/gpio/gpio23/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio23/value
echo “1” > /sys/class/gpio/gpio22/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio22/value
sleep 0.1
echo “1” > /sys/class/gpio/gpio22/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio22/value
echo “1” > /sys/class/gpio/gpio23/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio23/value
echo “1” > /sys/class/gpio/gpio24/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio24/value
echo “1” > /sys/class/gpio/gpio25/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio25/value
sleep 0.1
echo “1” > /sys/class/gpio/gpio25/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio25/value
echo “1” > /sys/class/gpio/gpio24/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio24/value
echo “1” > /sys/class/gpio/gpio23/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio23/value
echo “1” > /sys/class/gpio/gpio22/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio22/value
sleep 0.1
echo “1” > /sys/class/gpio/gpio22/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio22/value
echo “1” > /sys/class/gpio/gpio23/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio23/value
echo “1” > /sys/class/gpio/gpio24/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio24/value
echo “1” > /sys/class/gpio/gpio25/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio25/value
sleep 0.1
echo “1” > /sys/class/gpio/gpio25/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio25/value
echo “1” > /sys/class/gpio/gpio24/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio24/value
echo “1” > /sys/class/gpio/gpio23/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio23/value
echo “1” > /sys/class/gpio/gpio22/value
sleep 0.1
echo “0” > /sys/class/gpio/gpio22/value
=========================>
■開放 gpio_close.sh
<=========================#!/bin/sh
echo 22 > /sys/class/gpio/unexport
echo 23 > /sys/class/gpio/unexport
echo 24 > /sys/class/gpio/unexport
echo 25 > /sys/class/gpio/unexport
=========================>
■ファイルの準備が出来たら実行。
root@raspberrypi:/home/pi/lchika# bash gpio_open.sh
root@raspberrypi:/home/pi/lchika# bash gpio_rl.sh
LEDが右へ左へ動き出します。
root@raspberrypi:/home/pi/lchika# bash gpio_close.sh
使ったら片付ける癖をつけましょう。
片付け忘れると次のOPENでエラーが出ます。
root@raspberrypi:/home/pi/lchika# bash gpio_open.sh
root@raspberrypi:/home/pi/lchika# bash gpio_rl.sh
root@raspberrypi:/home/pi/lchika# bash gpio_open.sh
!! エラー !!
gpio22open.sh: line 3: echo: write error: Device or resource busy
Raspberry Pi お問合せ ヘルプ
Lチカをもっと楽しむ(2) ruby (A)