LEDのオンオフ制御を改良

おととい作った回路は、ボタンを押しつづけている間しかLEDが光らないので、すごく不便です。
もう少し実用的にするために、プログラムに改良を加えてみたいと思います。
といっても、本の通りにやるだけなんですけど。


"Arduinoをはじめよう"によると、ボタンが完全に接触しなかった場合は、バウンシングというニセの信号が発生してしまい、うまくオンオフできない場合があるみたいです。確かに、何度もボタンを押してみたのですが、点灯したりしなかったり、動作が若干不安定でした。
バウンシングを解消するには、ボタンの状態を検出した直後に10〜50ミリ秒程度の遅延を加えるといいそうです。


if ((val == HIGH) && (old_val == LOW)) {
state = 1 - state;
delay(10);


そして出来上がったのがこれ。

すごく単純な回路ではありますが、自分で作ったかと思うと、喜びもひとしおです。
これを応用すれば、懐中電灯くらいはあっさり作れそうですね。