戻る

22 スイッチを押したらカッコーが鳴く

回路かいろ

Arduino と抵抗(1kΩ茶黒赤金, 1kΩから10kΩ(茶黒橙金)ぐらいならよい)とスイッチ、圧電スピーカを用意します。図のスイッチはタクトスイッチです。回路図のように Arduinoの2番ピンとスイッチの片方の足、抵抗の片方の足の3つをつなぎます。 スイッチの反対の足はグラウンド(GND)へ、抵抗の反対の足は5Vへつなぎます。 スイッチの向きを90度間違えると動作しないので注意してください。

プログラム

動作どうさ

スイッチを押すとカッコーの鳴き声が1回します。スイッチを2回以上押しても反応しません。

解説かいせつ

ここで使っている回路ではスイッチを押していないと2番ピンの電圧が5Vに、 スイッチを押すと0Vになります。 これをプログラムで判断するにはdigitalReadを使います。 digitalReadはピンを指定すると入力の状態を確認します。

while文は括弧内の式が成り立っている間、{と}の間を繰り返します。
while(digitalRead(2) == HIGH) {
}
ここでは{と}の間には何もないので、ただ待っています。スイッチを押すと digitalRead(2)がLOWになって繰り返しが終わりカッコーの 鳴き声が一回します。

ためしてみよう

loop関数を使いこなす

こんどは2回目にスイッチを押したときにも反応するようにしてみましょう。setup()関数に書いていた内容をloop()関数へ移すと鳴き終わると、スイッチが押されるのを待つようになります。

loop関数は一番最後の行まで実行すると最初の行から繰り返します。そこでwhileループを使う代わりに次にようなプログラムにしても同じ動作をします。スイッチを押していたら(LOWなら)中括弧内を実行します。

関数を中断する return 文を組み合わせることもできます。return文を実行するとプログラムはloop関数の先頭から繰り返します。つぎのようなプログラムを書くと、スイッチを押していないときにはloop関数の先頭から繰り返すのでwhileループで待っているのと同じ動作になります。


戻る
(c) 2014-2015 N. Mitsunaga
サンプルプログラムの著作権は放棄します。fritzingで作成した図は、そちらのライセンスに従って再配布して構いません。