シェルスクリプトで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  お問合せ ヘルプ


Raspberry Pi Console Board




Lチカをもっと楽しむ(2) ruby (A)