前回までの内容
・ラズベリーパイと圧電スピーカをつなぐ
・それを1回だけ鳴らす
ところまでやりました
なんかいも実行すると、なんかいもなる
圧電スピーカは、電流がながれると「カチッ」と音がなる仕組みです。
だとすると、前回実行したもので
echo "1" > /sys/class/gpio/gpio25/value
で電気を流し
echo "0" > /sys/class/gpio/gpio25/value
で電気をOFFにしてから
echo "1" > /sys/class/gpio/gpio25/value
で、また電気を流すとカチッとなりそうな気がします。
ためしにラズベリーパイでやってみると、1回カチッと鳴った後、もう1回カチッとなります。これだと5秒間かちかち鳴らすときになんかいも
echo "1" > /sys/class/gpio/gpio25/value echo "0" > /sys/class/gpio/gpio25/value
を実行しなければならず、とてもめんどくさいです。こういうめんどくさいことはラズベリーパイというコンピュータに任せたいものですが、なんとかできないでしょうか?
当然、なんとかできます!ラズベリーパイに何回も同じことを実行させるには、かんたんなプログラムを作る必要があります。
とりあえず、以下のプログラムを「05kachikachi.sh」という名前で保存してください
#!/bin/bash ## 圧電スピーカをカチカチ鳴らす 2014年02月20日 12時07分57秒 動作OK #### GPIO=25,pin=22 ## for i in {0..10}; do echo "1" > /sys/class/gpio/gpio25/value echo "0" > /sys/class/gpio/gpio25/value sleep 1 done ## 開放 echo "25" > /sys/class/gpio/unexport
このプログラムを、以下のコマンドを使って実行します
sudo bash ./05kachikachi.sh
すると、以下の動画のように10秒間ぐらいカチカチ音がなります
上のプログラムはbashという、日本ではRubyほど有名ではないプログラム言語です。
for i in {0..9}; do done
という部分がループです。その後の0..9というのが「0から9まで1回ずつ繰り返せ、つまり10回繰り返せ」とラズベリーパイに命令している部分です。
ループの中を見ると
echo "1" > /sys/class/gpio/gpio25/value echo "0" > /sys/class/gpio/gpio25/value sleep 1
とあり、最初の行でGPIOを1にする、つまりGPIOに電流を流し、次の行で電流を流すのを止めます。最後の
sleep 1
というのは「1秒待て」という意味で、ラズベリーパイの動作が1秒停止します。
プログラムはなれないとちょっと難しいですが、要するに「人間がやるとめんどくさいことを代わりにやってくれるもの」というふうに考え、いろいろやってみるといいかと思います。
上のプログラムは「こんな風にすると繰り返していろいろできるんだー」というぐらいで十分です!興味がでてきたらいろいろなプログラム言語を使ってプログラムをしてみるといいかと思います。
発展させると、たとえば「ラズベリーパイで測定した気温が30度を超えたら、カチカチ音をさせる」というようなこともできるようになります。
次は、ラズベリーパイでLEDをほわっと光らせてみます!