ラズベリーパイで電子工作をしてみる – 5.音を鳴らす早さや長さを変えてみよう!

スポンサーリンク

前回までの内容

・ラズベリーパイと圧電スピーカをつなぐ
・それを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をほわっと光らせてみます!

次の記事は
ラズベリーパイで電子工作してみる – 6.LEDをほわっと光らせてみよう!の準備をする
です