先の記事で、Arduino UNO のボード上に載った PIN 番号 13 に接続された LED を 500 ミリ秒の間隔で点滅させてみました。
なんかその、少し点滅速度は速くなるものの、ずっと見てると最初と変わりが無いような気がしてくるので、ちょっと違う方法をやってみます。
今回の目的は、Arduino UNO の I/O ポートから線を引き出して、そこに LED とスイッチを付けて、スケッチにより制御を行う物です。
要するにボタン(スイッチ)を押されている間、外部に接続した LED を点灯するという事を目的にします。
ここでは以下の物を使用します。
これらの部品で気お付けなければいけないのは LED には極性があると言うことです。
LEDの場合は一般的に足の長さで極性が表されています。アノード(+極)側のリード線が長くカソード(-極)側が短くなっています。でも基板に実装するときなど足を切ってしまうとわからなくなってしまいます。そのようなときには、LEDにもよりますがパッケージのカソード側が欠けていたり、内部の電極の形の大きい電極がカソードで、小さい電極がアノードと極性を見分けることができます。(全てではないのでご注意ください)
また、LED は +3V 程度で点灯する物が多いです。Arduino の出力電圧は、5V ですから、これを LED に合わせるために抵抗を使います。
昔、習ったと思いますが・・LED に 20mA の電流を流すことにして計算すると
E=I*R ですよね。だからぁ、R=E/I です。R=5/0.02 R=250Ω となるわけです。
まぁ、この抵抗値は、それほど厳密ではないので(この場合)近い数字の抵抗が用意できれば問題はありません。
さて、ブレッドボード上で、配線をしてみます。
え~と、LED は 12 番のピンに接続、スイッチは 7 番のピンに接続しましょう。
さて回路ができたの、Arduino IDE を起動してコードを入力していきます。
まずは宣言です。
// 7番ピンに接続したスイッチが押されている間、12番ピンに接続した LED を点灯する const int LED = 12; // LED が接続されているピン const int BUTTON = 7; // スイッチが接続されているピン int val = 0; // 入力ピンの状態を val に格納する
次にボードの設定
void setup() { pinMode(LED,OUTPUT); // 12番のピンは出力 pinMode(BUTTON,INPUT); // 7 番のピンは入力 }
そしてコード(プログラム本体)
void loop() { val = digitalRead(BUTTON); // 入力を読み取り val に格納 // 入力は HIGH か? if (val == HIGH) { digitalWrite(LED,HIGH); // LED を点灯 } else { digitalWrite(LED,LOW); // LED を消灯 } }
全部まとめると
// 7番ピンに接続したスイッチが押されている間、12番ピンに接続した LED を点灯する const int LED = 12; // LED が接続されているピン const int BUTTON = 7; // スイッチが接続されているピン int val = 0; // 入力ピンの状態を val に格納する void setup() { pinMode(LED,OUTPUT); // 12番のピンは出力 pinMode(BUTTON,INPUT); // 7 番のピンは入力 } void loop() { val = digitalRead(BUTTON); // 入力を読み取り val に格納 // 入力は HIGH か? if (val == HIGH) { digitalWrite(LED,HIGH); // LED を点灯 } else { digitalWrite(LED,LOW); // LED を消灯 } }
早速コンパイルして、Arduino UNO に転送します。
実行した結果はこちら。
スイッチのボタンを押すと、ちゃんと青い LED が点灯しますね。
次回はこれにもう少し機能を付け加えてみたいと思います。
電子機器が大好きです。
プログラムを書くのをお仕事としていたこともあるので、両方できる PIC や Arduino を使って、いろいろな(役にあんまり立たない)ものを作っています。
実は UNIX 関連のお仕事も長かったので、Raspberry Pi もお手の物なのですけれど、これから触る機会が多くなるのかなぁ。
ボチボチ行きますが、お付き合いください。
若いころの写真なので、現時点では、まだ髪の毛は黒くてありますが、お髭は真っ白になりました。
愛車の国鉄特急カラーのカスタムしたリトルカブで、時々、秋月電子通商の八潮店に出没します。
この回路とスケッチは、基本的な物ですが、Arduino UNO で外部のスイッチの状態を把握し、その状態を判断して、これまた外部の LED を点灯/消灯する物ですが、スイッチを各種のセンサー、LED をアクチェータ(モーターなど)に置き換えて考えると、いろいろな物を状況により制御することができるという最初の一歩でもあります。想像力を使って、様々な機器を考えてみてくださいね。